問題タブ [disruptor-pattern]
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.
java - ディスラプターのイベント ハンドラーが正しく設定されていません
ディスラプター 2.10.4 の使用を検討しています。ディスラプタ/リングバッファは、ユーザー定義クラス内の属性です。何らかの理由で、ハンドラーが呼び出されているように見えません
更新: パイロット エラー - メッセージがリング バッファーに発行されているとは思えません。
disruptor-pattern - どのjarにcom.google.common.event.disuptor.EventDisruptorがありますか?
com.google.common.event.disuptor.EventDisruptor を含むプロジェクト ソースを取得しましたが、これについて何かが見つかりません。これは disuptor によるものですか?
java - Disruptor: 起動時のシーケンスの設定
イベント処理アプリケーションで、ジャーナリングの目的で、処理されたすべてのイベントのシーケンス番号を記録したいと考えています。これらのシーケンス番号は一意である必要があるため、再起動時に、アプリケーションは既に使用されている最大の番号 (ウォーターマーク) を取得し、新しいイベントにより大きな番号を割り当てる必要があります。
アプリケーションは、すでにシーケンスの概念を持つLMAX ディスラプターを使用します。リング バッファーへのすべてのパブリッシュとリング バッファーからの読み取りは、シーケンス番号に関連付けられています。ただし、その番号はシステムの再起動時に 0 にリセットされます。ディスラプターを開始する前に、初期シーケンス番号を特定の値に設定する方法はありますか?
別の解決策は、ディスラプターによって提供されたシーケンス以降の再起動番号を使用し、起動時に読み取られたウォーターマークを追加することですが、その操作はグローバルシーケンス番号が必要なすべての場所で実行する必要があるため、ディスラプターが中央に保持している番号に頼ることができました。
java - C/C++ で Java のコレクション Disruptor に最も近い機能は何ですか?
C/C++ の既存のデータ コレクションのうち、Java のコレクション (ライブラリ)ディスラプターに近い機能に最も適しているのはどれですか?
http://lmax-exchange.github.io/disruptor/
小さな説明:
これは、マルチスレッド プログラムでメッセージング キューを使用する非常に高速な代替手段です。それが実行されているハードウェアに対して「機械的な共感」を持ち、ロックフリーであるフレームワーク。そして、ロック、CAS、さらにはメモリバリアを回避するための多くの努力。
詳細については、ディスカッションを参照してください: LMAX のディスラプター パターンはどのように機能しますか?
message-queue - LMAX Disruptor SPSC - 1 秒あたり 600 万オペレーション
Disruptor リング バッファーを使用すると、1 秒あたり 600 万の操作しか達成できません。私はどこが間違っているのだろうかと思っています。私のイベント ハンドラーはカウンターをインクリメントするだけです。これは、Single Producer と Single Consumer の場合です。セマンティクス自体が間違っているかどうか誰かに教えてもらえますか。プログラムは、バッファーに追加するプロデューサー スレッドを作成します。そして、発行イベントを処理するイベント ハンドラーを作成します。イベントが発行されるたびに、イベント ハンドラーは揮発性カウンターをインクリメントします。
これがプログラムの出力です
共有変数: 33554432; ランタイム = 5094139 マイクロ秒。1 秒あたりの操作数 = 6000000
どんな助けでも大歓迎です。
multithreading - LMAX ディスラプター タイムアウト EventHandler
Disruptor フレームワークを使用するシステムがあり、EvenetHandler を実装する 5 つのステージが登録されています。
ステージはシーケンスで機能するため、リクエストは最初のステージが完了したときにのみ 2 番目のステージに移動できます。この移動は Disruptor によって内部的に維持されます。
第 3 段階に問題があります。これは、異なる HTTP 呼び出しを行い、応答を要求オブジェクトに格納するため、多くの時間がかかるボトルネックです。
したがって、第 3 段階でしばらく時間が経過した後、要求を (応答が何であれ) 第 4 段階と第 5 段階に進めたいと考えています。
特定のステージ (この場合は第 3 ステージ) をタイムアウトして、リクエストを次のステージに強制的に移動するにはどうすればよいですか?
または、
定義されたタイムアウトの後にトリガーされるイベントを登録する方法はありますか?これはシステムレベルのタイムアウトのようなものでしょうか?