2017-04-24 2 views
0

カフカのトピックが設定され、1日を通して取引された各株式の累積レポートが発行されます。 たとえば、株式A - Buy-50、Sell-60、Stock B - Buy-44、Sell-34など。公開中のキーはRICコードです。カフカのトピックで送信された各キーに対応する最後の値

翌日、すべての消費者が各在庫の最後の公開ポジションを個別に取得します。この動作を実現するためにKafkaプロデューサ/コンシューマを設定する方法を理解したいと思います。

各ストックのパーティションを作成することが1つのことです。これは、各ストックの個別のオフセットになり、すべての消費者はHIGHESTオフセットをポイントして最新のポジションを得ることができます。

これは正しいアプローチですか、それとも明白なものがありませんか?

+0

私は別のオプションは、コンシューマが接続するたびにランダムなコンシューマIDを指定することだと考えています。これにより、カフカはすべてのキーのすべての最新値を返します。 – Bhushan

答えて

0

あなたのアプローチはうまくいきますが、時間の境界をあまり気にしない場合(たとえば、毎日カウントを個別に取得する必要はありません。厳密には、 [01/25/2017 00:00 - 01/26/2017 00:00]とカウントする必要があります。

厳密に1日のカウントを取得する必要がある場合は、Kafkaストリームを使用してRICのキーを使用し、ウィンドウをイベントタイムスタンプに基づいて24時間に設定できます。

これはこれを行うためのもう1つの方法です。利用可能なアプローチがさらにあると確信しています。

+0

カフカストリームに関するヒントを共有してくれてありがとう@マリナ、私たちは時間ベースの要件を持っていません。 各RICの最後の既知の状態を消費するだけで済みます。 パーティションを1つだけ使用することは可能ですか? – Bhushan

+0

あなたが時間枠に興味がなく、最新の状態だけを気にしているならば、私はyoruの消費者にローカルキャッシュを使用し、この情報を保存するRedisまたはPostgresの支援を受けて、カフカからイベントを受け取ると更新していきます。カフカはスケーラブルで非常に速いイベント "移動"に最適です - それは本当にクエリを実行するための店として使用されるようには設計されていません.... – Marina

+0

これは私の関心事です。維持する 2.追加のハードウェア 3. IOはボトルネックになる可能性があります 理想的には、私はkafkaが各キーの最終値を提供したいと考えています。 – Bhushan

関連する問題