2016-11-02 4 views
5

私は、エッジ位置のトラフィックに関するデータを計算するワーキングエリアを主な地域(US-East)に持っています。エッジ領域からカフカ一次領域にデータをプッシュしたい。エッジノードからカフカメッセージをプッシュする最良の方法は何ですか?

例としては、ポーランド、オーストラリア、米国西です。これらの統計情報をすべて米国東部に送りたいと思っています。私はエッジ領域からプライマリへの書き込み中に追加のレイテンシを発生させたくありません。

別のオプションは、リレーとして機能する別のカフカクラスタとワーカーを作成することです。そのためには、各地域の個々のクラスタを維持する必要があり、導入にはさらに複雑さが増します。

私はミラーメーカーを見たことがありますが、私は本当に何もミラーしたくありません。私はリレーシステムをもっと探していますね。これが設計された方法ではない場合、私たちのアプリケーションメトリクスをすべて、プライマリ領域に集約して計算しソートするにはどうすればよいですか?

ありがとうございます。

+0

明確な意味で、中央のカフカクラスターにメッセージを公開するためにエッジノードで実行できるものを探していますか?あるいは、各エッジノードに手を差し伸べて更新を求めてから、それらの更新をKafkaクラスタに公開する、より中心的な方法で行動するものを探していますか? – JDP10101

答えて

1

は、私の知る限りでは、ここにあなたのオプションは次のとおりです。

  1. セットアップ各地域のローカルカフカクラスタと低レイテンシーが書き込みのためにあなたのエッジノード地元カフカのクラスタへ の書き込みを持っています。 から、ローカルカフカからリモートカフカにデータを集めて集約するミラーメーカーを設定します。
  2. 潜在的なブロック要求が多いアプリケーション要求パスを中断することに懸念がある場合は、リモートカフカクラスタに非同期(非ブロック)で書き込むようにプロデューサを構成することができます。あなたのプログラミング言語の選択に応じて、これは単純な、または複雑な行為である可能性があります。
  3. (上記のように)リモートKafkaクラスタにプッシュするログファイルとデーモンと同じくらいシンプルなホストリレー(またはデータバッファ)サービスを実行します。または、ダウンストリームプルするためにデータをバッファする単一インスタンスのKafka/Zookeeperコンテナ(両方を一緒にバンドルするドッカーイメージがあります)を実行します。

オプション1は、この問題の最も標準的な解決策ですが、少し重いですが。私はConfluent/Kafkaの人々が今後オプション3をサポートするためのツールが追加されると思われます。

1

ディスク上のローカルログファイルにメッセージを書き込みます。ログファイルを読み込んでメインのkafkaデーモンにプッシュする小さなデーモンを作成します。

througputを増加させ、遅延の影響を制限するには、毎分ログファイルを回転させることもできます。その後、cronjobでlogfileをrsyncして、カフカのメインの領域に微調整します。インポートデーモンを実行させます。

関連する問題