2017-03-16 6 views
1

J'ai travaillé un peu avec Kafka dans le passé et dernièrement, il est nécessaire de porter une partie du pipeline de données sur AWS Kinesis Stream. Maintenant, j'ai lu que Kinesis est effectivement une fourche de Kafka et partage de nombreuses similitudes.Kafka comme offset sur Kinesis Stream?

Cependant, j'ai échoué à voir comment nous pouvons avoir plusieurs consommateurs lisant à partir du même flux, chacun avec leur décalage correspondant. Il y a un numéro de séquence donné à chaque enregistrement de données, mais je n'ai pas pu trouver quelque chose de spécifique au consommateur (Id groupe Kafka?).

Est-il vraiment possible d'avoir différents consommateurs avec un taux d'ingestion différent par rapport au même AWS Kinesis Stream?

Répondre

3

Oui.

Vous pouvez avoir plusieurs applications grand public Kinesis. Disons que vous avez 2.

  1. Première application des consommateurs (je pense qu'il est "groupe de consommateurs" dans Kafka?) Peut être "première application" et le stocker est positions dans la DynamoDB "first-app-table". Il peut avoir autant de nœuds (instances ec2) que vous le souhaitez.
  2. La deuxième application client peut également fonctionner sur le même flux et stocker ses positions sur une autre table DynamoDB, disons "second-app-table".

Chaque table contiendra des informations sur «quelle est la dernière position traitée sur la partition X pour l'application Y». Ainsi, les 2 applications stockent les points de contrôle pour les mêmes fragments dans un endroit différent, ce qui les rend indépendants. A propos du taux d'ingestion, il existe une valeur "idleTimeBetweenReadsInMillis" dans les applications grand public utilisant KCL, c'est-à-dire l'intervalle d'interrogation pour les opérations Amazon Kinesis API for Get. Par exemple, la première application peut avoir un intervalle d'interrogation de "2000", elle va donc interroger les fragments du flux toutes les 2 secondes pour voir si un nouvel enregistrement est arrivé. Je ne connais pas bien Kafka mais pour autant que je m'en souvienne; Kafka "partition" est "partition" dans Kinesis, de même Kafka "offset" est "sequence number" dans Kinesis. Kinesis Consumer Library utilise le terme "checkpoint" pour les séquences stockées. Comme vous l'avez dit, les concepts sont similaires.

+0

C'est génial. Exactement ce que je cherche. –

+0

googling 'Checkpoint Kinesis' m'a donné des réponses à mes questions de suivi. –