0

あなたの経験から私のデザインについてのあなたの考えを知りたい.

私は非常に重要な部分を持つシステムを設計しています:

互いに「話す」必要があるコンポーネントA、B、C(同じJVM上)があります。

そうする方法は2つあります。

  1. メソッド呼び出し方法(それぞれがお互いのインスタンスを保持します(インジェクション、オブジェクトインスタンスなど)

  2. メッセージング方法 (トピック/キュー)

私は、ミドルウェア・メッシング・システム (オプション 2) を使用することの短所を認識しています。

しかし:

レイテンシの考慮事項について話している。これらのメッセージを低レイテンシーでターゲットに到達させる必要があります (ミリ秒のレイテンシーについて話します)。

オプション 2 (メッセージングの方法) を選択したいと思います。

あなたの経験から、それは私の待ち時間にどの程度影響しますか? この決定においても、レイテンシーは非常に大きな要因です。

(Java でのプログラミング、まだどのアプリ コンテナーがわからない (Spring、Jboss..)

ありがとう、レイ。

4

1 に答える 1

0

メッセージング方法が同じJVM内のメモリ内にあると仮定します。次に、通常、ほとんどの遅延は、競合(同期などの使用)、スケジューリング(スレッドがジョブを実行するためにどのようにウェイクアップされるかなど)、およびGCの組み合わせから発生します。これらの遅延の原因は、他のすべてを小さくする傾向があります。

オーバーヘッドをあまり追加しない、かなり軽量のメッセージングシステムを作成することは可能です。この良い例は、低遅延の金融システムへの道をますます見つけているAkkaです。Scalaレルムでよく知られていますが、JavaAPIがあります。

結論として、メッセージングシステムはミリ秒未満の要求に実装できます。ただし、最初にニーズに合っていることを確認してください。できるからといって、そうすべきだという意味ではありません。小規模なシステムで作業している場合は、依存性の注入/制御の反転だけで、優れた設計が可能になります。ただし、複数のCPUコアをミックスに組み込む方法としてメッセージングを検討している場合、またはそのようなものを検討している場合は、Akkaを確認することをお勧めします。ケーススタディとしてだけでも。

于 2013-02-27T09:19:36.690 に答える