0

私はアプリケーションへの入力がXMLファイルのバッチで来るユースケースを持っています。例えば、夜間の銀行取引のバッチ。イベントのログを作成するためにイベントソースを使用できるかどうかを確認しようとしています。私がこれまでに読んだ内容に基づいて、ユーザーの入力(クリックストリーム、ユーザーインターフェイスなどからの更新)に基づいているようです。バッチ/ファイルベースの入力に対する有効なアプローチとして、分散ログメカニズム(Kafkaなど)を使用するイベントソースがありますか?Event Sourcingはバッチインプットに適用できますか?

以下

私が利用したいと思いアプローチです:ファイル/ XMLで

  1. バッチとして入力を許可するが
  2. は、メモリ内にいくつかの基本的な検証を実行します。
  3. バッチ入力を一連のイベントに変換します。
  4. イベントログをKafkaトピックに書き込みます。
  5. 他の着信バッチの処理を繰り返し
  6. 、集計 などを行うには、更新キャッシュ、検索エンジンにイベントに を送って、データベースにデータを格納するために実行スパークジョブをイベントログを使用してください。

この方法が効率的でない場合、そのような入力の分散処理には他にどのようなオプションがありますか?

答えて

0

は、イベントストレージのようなものから来るあなたの入力はありますか?私。不変の真実の源として作用する、追加のイベントのデータベース。

この場合、イベントソースを使用する基盤があり、さらにCQRSがあります。 (彼らは同じものではありません)

あなたが認識しなければならないことは、いわゆる書き込み側/コマンド側がすでにあなたのために行われていることです。

取引にXMLファイルの入ってくるバッチ...各トランザクションはすでにイベントです。これらをイベントに変換してカフカに入れる必要があるようには聞こえません。これらをKafkaに入れることができるものにマップするだけで、トピックのすべての購読者がそれに応じて処理を行うことができます。

効果的に、あなたはEvent Sourcing + CQRSの読み取り側を実装しています。実用的な観点からで

、あなたは...(xmlファイルは、ユーザの入力が受信される/生成されている場合)、ライト側のを物事をしようとしている場合を除き、私は微妙な点についてはあまり心配しないだろうはDDDとCQRSに関連するイベントソーシングです。私は単にあなたが複数のサービスにデータを配布するための方法としてやっていることを考えるでしょう。

これらのXMLファイルを取得するたびに、キャッシュ、検索エンジンなどがどのように更新されるかを確認してください。

0

これらのxmlファイルの個々のイベントにタイムスタンプがある場合、カフカへの出力は遅れて到着するイベントの蒸気と考えることができます。 Kafkaでは、これらのメッセージのイベント時刻を、カフカに摂取された時刻ではなく、イベントのタイムスタンプに設定することができます。このように、Kafka Streamsのような下流の処理アプリは、イベントを適切な時間的コンテキストに入れて、適切な時間ウィンドウまたはセッションウィンドウに集約したり、他のリアルタイム入力と結合することもできます。

関連する問題