問題タブ [vertx-eventbus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vert.x - Vertx - イベント処理のための複数の頂点と単一の頂点
シナリオ
Vertx イベントバスの特定の「アドレス」でメッセージを受信しました。メッセージには 4 つのタイプがあります。ハンドラーはメッセージを処理し、結果を別のイベントバス「アドレス」に送信する必要があります。そのハンドラーはそれを外部サービス API にポストします。
問題
このための Verticle の設計方法は? 以下に 2 つのアプローチについて説明しました。これが Kubernetes にデプロイされることを考えると、どちらが効率的で、高速で、適切にスケーリングできます。ワーカーバーティクルはどうですか?私が見逃している他の効果的なアプローチはありますか?
アプローチ
- イベントバス コンシューマーがこのタイプを消費して処理するように、各タイプのバーチクルを記述します。処理されたデータを「external-service-call」アドレスに送信します。
- 1 つのバーティクルのみを書き込みます。イベントバス ハンドラーは、メッセージのタイプに基づいて適切なメソッドを決定して呼び出し、最終的にそれを「外部サービス呼び出し」アドレスに発行します。
私の理解では、そのバーチクルの複数のインスタンスをデプロイすることで、2 番目のアプローチを拡張できます。スケーリングとは、これが同時に多くのボリュームを受け入れて処理できることを意味しますか? 最初のアプローチはどうですか?
私が知っておくべきだと思う他のアプローチはありますか?
vert.x - Vertx アプリケーションのカオス テスト
Openshift にデプロイされた Vertx アプリケーションのカオス テスト用のツールへのポインター。カオスモンキーやその他のツールは機能しますか?
hazelcast - 制限に達したときの Vert.x Event-bus の動作
Event Bus / Hazelcast がどのように機能するかについての理解が 1 つ欠けています。
クラスター化された EB を介して通信するコンシューマーとプロデューサーのバーチクルのケースを想像してみてください。消費部分は、CPU / メモリ / IO 集中型の計算を行っています。
ある時点で、負荷が原因でコンシューマーがメッセージをすぐに処理できない場合、何が起こるでしょうか?
メッセージはリング バッファ内でキューに入れられ、最終的に後で処理されますか( vert.x のイベント バスのサイズによるSingleThreadEventLoop
Netty の20 億の制限を考慮して)? 制限に達した場合、それらはドロップされますか?
一般に、クラスター内のコンポーネントがクラッシュしなくなるとすぐに、EB 内のメッセージは永続的で配信が保証されていると見なすことができますか?