2016-11-02 6 views
5

J'ai un travailleur dans la région primaire (US-Est) qui calcule les données sur le trafic à nos emplacements périphériques. Je veux pousser les données d'une région périphérique vers notre région principale de kafka.Quelle est la meilleure façon de pousser les messages kafka depuis mes nœuds périphériques?

Un exemple est la Pologne, l'Australie, les États-Unis-Ouest. Je veux pousser toutes ces statistiques vers US-East. Je ne veux pas encaisser de latence supplémentaire pendant les écritures des régions de bord au primaire.

Une autre option consiste à créer un autre cluster kafka et un agent qui agit comme un relais. Cela nous obligerait à maintenir des grappes individuelles dans chaque région et ajouterait beaucoup plus de complexité à nos déploiements.

J'ai vu Mirror Maker, mais je ne veux vraiment pas faire de miroirs, je suppose que je cherche plus un système de relais. Si ce n'est pas la méthode prévue pour cela, comment puis-je agréger toutes les métriques de nos applications dans la région primaire pour les calculer et les trier?

Nous vous remercions de votre temps.

+0

Un peu d'éclaircissement, recherchez-vous quelque chose que vous pouvez exécuter sur vos nœuds périphériques afin de publier les messages dans un cluster Kafka central? ou cherchez-vous quelque chose d'une manière plus centrale qui pourrait atteindre chaque nœud périphérique, demander une mise à jour, puis publier ces mises à jour sur le cluster Kafka? – JDP10101

Répondre

1

Pour autant que je sache, voici vos options:

  1. Installation d'un pôle Kafka local dans chaque région et ont vos noeuds de bord écrire à leur groupe Kafka local écrit une faible latence. De là, vous devez configurer un fabricant de miroirs qui tire les données de votre Kafka locale à votre Kafka distant pour l'agrégation.
  2. Si vous souhaitez interrompre le chemin de votre demande d'applications avec des demandes de blocage latent élevé, vous pouvez configurer vos producteurs pour qu'ils écrivent de manière asynchrone (non bloquante) sur votre cluster Kafka distant. Selon votre choix de langage de programmation, cela peut être un exercice simple ou complexe.
  3. Exécutez un service par relais d'hôte (ou tampon de données) qui pourrait être aussi simple qu'un fichier journal et un démon qui pousse vers votre cluster Kafka distant (comme mentionné ci-dessus). Vous pouvez également exécuter un conteneur Kafka/Zookeeper d'instance unique (il existe des images de docker qui regroupent les deux) qui tamponnent les données pour l'extraction en aval.

L'option 1. est certainement la solution la plus standard à ce problème, même si elle est un peu lourde. Je soupçonne qu'il y aura plus d'outillage sortant des gens de Confluent/Kafka pour soutenir l'option 3. à l'avenir.

1

Ecrivez les messages dans un fichier journal local sur le disque. Écrivez un petit démon qui lit le fichier journal et envoie les événements au démon kafka principal.

Pour augmenter le débit et limiter l'effet de latence, vous pouvez également faire pivoter le fichier journal toutes les minutes. Puis rsync le fichier journal avec un cronjob à votre région kafka principale minutieusement. Laissez le démon d'importation s'exécuter là.