メッセージがピーク時に毎秒 300,000 のレートでシステムに着信するシナリオがあり、システムは各メッセージを特定のルールと照合することによって、各メッセージの送信先 (クライアント) を決定します。
ここでの課題は、10,000 のクライアントが存在することです (各クライアントには、ユーザーによって定義されたルールが 1 つだけあるとします)。そのため、受信メッセージごとに各ルールと照合され、送信先が決定されます (メッセージは複数の異なるクライアントに送信される可能性があります)。ルールに一致する場合)。
では、より具体的に説明しましょう。
メッセージは、たとえば次のフィールドで構成されます。
メッセージ (タイプ、地域、レベル、...)
ルールは非常に複雑になる可能性がありますが、ここでは単純なものにしましょう
rule1: ((100, 200, 300) を入力 && (A, B ,C) にない領域) || (100) のレベル
現実の世界では、メッセージには約 50 のフィールドがあり、ルールはこれよりもはるかに複雑になる可能性があることに注意してください。
質問は次のとおりです。
メッセージの照合に必要な時間を短縮する方法はありますか? また
「すべてのルールを 1 つにまとめる」ことは可能ですか?
気になるのはFSMですが、まったく詳しくないので、どなたか教えていただければ幸いです。
編集:
Drools を試してみたところ、ある程度実現可能であることがわかりましたが、そのパフォーマンスは決して良いものではありません (まあ、他のほとんどのユース ケースでは良い可能性があります)。
私の場合、1 秒あたり約 5,000 件のメッセージしか処理できませんが、300,000 件のメッセージがピークに達しています。そのため、ルール エンジンは私の要件をほとんど満たすことができないのではないかと考えています。
何か案は ?
よろしくお願いします。
ベン