2017-05-23 1 views
1

J'ai donc un flux AWS Kinesis où je publie des événements pour plusieurs consommateurs. Il est important pour la plupart d'entre eux de recevoir des données à chaud, ce qui signifie que beaucoup d'entre eux pourront éventuellement interroger et lire les dernières données en même temps. Selon la documentation AWS, augmenter le nombre de fragments augmentera le niveau de parallélisme, tandis que le nombre de lectures/s peut être de 5 par seconde au maximum. Ma question est de savoir si (et comment?) Est-ce que l'ajout de fragments supplémentaires aidera la situation où tous mes consommateurs sont à jour et tentera de lire de nouvelles données provenant du même fragment? Il semble que cette limite de lecture par seconde introduit automatiquement une limitation sur le nombre de consommateurs que vous pouvez avoir (du moins quand ils doivent être mis à jour en permanence), ou est-ce que je rate quelque chose?Kinesis max shard reads/sec et plusieurs consommateurs

Répondre

2

Oui, vous avez raison.

Dans les consommateurs, je suppose que vous utiliserez Amazon Kinesis Client (ou KCL: amazon-kinesis-client) comme aide API; et s'il vous plaît jeter un oeil qu'il y a un paramètre "idleTimeBetweenReadsInMillis" dans la logique du consommateur. Cela définit combien votre application interrogera le flux (plus cette valeur est faible, plus vos applications seront fréquentes).

Que votre flux contienne 1 fragment ou 100 fragments, vous ne pouvez pas effectuer plus de 5 requêtes "GetRecords" par seconde pour chaque fragment. C'est;

  • Si vous avez 1 application, vous pouvez au mieux espacer les 200 ms (théoriquement).
  • Si vous avez 2 applications, cela peut être 400 ms minimum.
  • Si vous avez 3 applications, cela peut être 600 ms minimum.
  • Ou avec vos 3 applications, deux d'entre eux peuvent interroger à 1000 ms et le dernier peut interroger au taux de 333ms.

Vous pouvez également créer un cluster Kafka et évaluer leurs performances. Kafka peut donner un débit plus élevé.

Voir cette réponse pour la comparaison d'échantillons entre les concepts Kafka et Kinesis: Kafka like offset on Kinesis Stream?

0

une autre architecture alternative est pour vous d'avoir une application consommateur Kinesis qui pousse les messages du flux de Kinesis à un sujet SNS. Bien sûr, si vos consommateurs ont besoin de "regarder en arrière" sur les anciens messages pour le traitement, cela peut ne pas fonctionner, mais je voulais juste jeter cela comme une option.