280

以前にKafkaに出くわしたことはありますが、最近、Kafka がおそらくCQRSeventstoreとして (の基礎として) 使用される可能性があることに気付きました。

Kafka がサポートする主なポイントの 1 つ:

  • イベントのキャプチャ/保存、もちろんすべて HA。
  • Pub/Sub アーキテクチャ
  • 新しいサブスクライバーが事後にシステムに登録できるようにするイベントログを再生する機能。

確かに、私は CQRS/イベント ソーシングに 100% 精通しているわけではありませんが、これはイベントストアのあるべき姿にかなり近いようです。面白いのは、Kafka がイベントストアとして使用されていることについてあまり見つけられないので、おそらく何かが足りないということです。

では、優れたイベントストアであるために Kafka に欠けているものはありますか? それはうまくいくでしょうか?それを使用して生産?洞察、リンクなどに興味があります。

基本的に、システムの状態は、通常行われているシステムの現在の状態/スナップショットを保存するだけでなく、システムがこれまでに受信したトランザクション/イベントに基づいて保存されます。(会計における総勘定元帳と考えてください。すべてのトランザクションが最終的に最終的な状態になります) これにより、あらゆる種類の優れたことが可能になりますが、提供されたリンクを読んでください。

4

7 に答える 7

320

私は Kafka のオリジナルの作者の 1 人です。Kafka は、イベント ソーシングのログとして非常にうまく機能します。耐障害性があり、巨大なデータ サイズに拡張でき、パーティション モデルが組み込まれています。

LinkedIn では、このフォームのいくつかの使用例で使用しています。たとえば、オープンソースのストリーム処理システムである Apache Samza には、イベント ソーシングのサポートが組み込まれています。

イベント ソーシングに Kafka を使用することについてあまり耳にしないと思いますが、それは主に、イベント ソーシングの用語が、Kafka が最も普及しているコンシューマ Web スペースではあまり普及していないように思われるためです。

このスタイルの Kafka の使用方法については、こちらに少し書いています。

于 2014-03-23T21:55:38.493 に答える
149

Kafka は、イベント ストアと多くの類似点を持つメッセージング システムであることを意図していますが、イントロを引用します。

Kafka クラスターは、消費されたかどうかに関係なく、発行されたすべてのメッセージを<strong>構成可能な期間保持します。たとえば、保持期間が 2 日間に設定されている場合、メッセージが発行されてから 2 日間は消費可能であり、その後はスペースを解放するために破棄されます。Kafka のパフォーマンスはデータ サイズに関して事実上一定であるため、大量のデータを保持しても問題はありません。

したがって、メッセージは無期限に保持される可能性がありますが、削除されることが予想されます。これは、イベント ストアとして使用できないという意味ではありませんが、別のものを使用した方がよい場合があります。別の方法については、 EventStoreを参照してください。

アップデート

カフカのドキュメント:

イベント ソーシングは、状態の変化が時系列の一連のレコードとして記録されるアプリケーション設計のスタイルです。Kafka は、保存された非常に大きなログ データをサポートしているため、このスタイルで構築されたアプリケーションの優れたバックエンドになります。

更新 2

イベント ソーシングに Kafka を使用する際の懸念事項の 1 つは、必要なトピックの数です。通常、イベント ソーシングでは、エンティティ (ユーザー、製品など) ごとにイベントのストリーム (トピック) があります。このようにして、ストリーム内のすべてのイベントを再適用することで、エンティティの現在の状態を再構成できます。各 Kafka トピックは 1 つ以上のパーティションで構成され、各パーティションはファイル システム上のディレクトリとして格納されます。znode の数が増えると、ZooKeeper からのプレッシャーもあるでしょう。

于 2013-07-23T15:03:26.610 に答える
9

はい、Kafka をイベント ストアとして使用できます。これは、特にKafka Streamsの導入により、非常にうまく機能します。これは、イベントをクエリ可能な蓄積状態に処理する Kafka ネイティブの方法を提供します。

それにかんする:

新しいサブスクライバーが事後にシステムに登録できるようにするイベントログを再生する機能。

これは注意が必要です。ここで詳しく説明しました:https://stackoverflow.com/a/48482974/741970

于 2018-01-28T17:39:57.897 に答える