1. ホーム
  2. cqrs

[解決済み】Kafkaを(CQRS)イベントストアとして使用する。良いアイデアですか?

2022-04-01 18:50:47

質問

とはいえ カフカ 以前、私はKafkaが、もしかしたら CQRS , イベントストア .

カフカが対応しているポイントの1つ。

  • イベントの捕捉/蓄積、もちろん全てHAです。
  • パブ/サブアーキテクチャ
  • イベントログの再生機能により、事後的に新しい購読者をシステムに登録することが可能です。

確かに私はCQRSやイベントソーシングに100%精通しているわけではありませんが、これはイベントストアのあるべき姿にかなり近いように思います。面白いことに、Kafkaがイベントストアとして使用されているという情報はあまり見当たりません。

では、良いイベントストアにするために、Kafkaに足りないものはありますか?うまくいくでしょうか?本番で使う?洞察力、リンク、その他に興味があります。

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

解決するには?

Kafkaはメッセージングシステムであり、イベントストアと多くの類似点がありますが、その紹介を引用します。

<ブロッククオート

Kafkaクラスタは、発行されたすべてのメッセージを保持します。 消費された 設定可能な期間 . 例えば 保持期間を2日に設定した場合、その2日間は メッセージが公開されると、そのメッセージは消費可能です。 は、空き容量を確保するために廃棄されます。Kafkaのパフォーマンスは、実質的に データサイズに対して一定なので、多くのデータを保持することは問題ありません。 問題です。

つまり、メッセージは永久に保持できる可能性がありますが、削除されることが予想されます。だからといって、これをイベント・ストアとして使えないというわけではありませんが、他のものを使ったほうがいいかもしれません。以下を見てください。 イベントストア を参照してください。

アップデイト

Kafkaのドキュメント :

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

アップデイト2

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