1

バックプレッシャー機能を備えたアクターベースのシステムを実装しようとしています。要件として、マスター プロセスはストリーミング データを JSON 形式で受信します。ただし、各 JSON イベントには、{ip: '123.43.12.1', country: 'US', ... etc} などのいくつかのフィールドがあります。JSON の構造は事前にわかっています。

さて、どうにかして JSON 構造を (キー、値) ペアにフラット化する必要があります。たとえば、上記のデータは (ip, freq), (country, freq) のように平坦化できます。ここで、freq は、IP (「123.43.12.1」など) がデータ ストリームに現れる回数です。

非常に自然な方法は、さらに評価するために、各 (キー、値) ペアを対応する子/リモート アクターに転送することです。たとえば、('123.43.12.1', 1) は IP-Actor に送信されます。('US', 1) は Country-Actor などに送信されます。

システム全体が背圧であることを確認したい。この場合、イベント {ip: '123.43.12.1', country: 'US'} は、IP-Actor と Country-Actor の両方が平坦化されたペア ('123.43. 12.1', 1), ('米国', 1). 各アクターの処理速度は異なる場合があります (たとえば、IP-Actor は Country-Actor よりもはるかに高速です)。その場合、ストリームを受信したマスター プロセスが要求信号があるまで待機/ブロックする必要があります (両方のアクターがメールボックス内の既存のデータの処理を終了したときに発生します)。そうしないと、一部のアクターがメールボックス内のメッセージでいっぱいになる可能性があります (Country-Actor - 遅いもの) が、他のアクターのメールボックスが空であるため、メッセージがまだ入ってきます (IP-Actor - 速いもの)。

反応ストリーム仕様がそのような機能を提供するかどうか、誰でも提案できますか。そうでない場合は、最も効率的な方法で機能を実現する方法があります。

ありがとう。

4

1 に答える 1