現在、私たちはプロジェクトに取り組んでおり、プロジェクトの主なポイントは次のとおりです。
- リアルタイムデータを生成しているスイッチがあります
- Java/Java EE で作成する 2 つのコンポーネントがあり、それを CompA と CompB と呼びます。
- CompA は、スイッチからの入力レコードに基づいて、どのデータベースにもアクセスせずに何らかのプロセスを適用します。CompA には DB アクセスがありません。
- CompB は CompA のプロセス記録を取得し、処理も適用します。これにはビジネス データベースが含まれます。
- CompA と CompB は、スケーラビリティとフォールト トレランスのためにシステム内に複数のインスタンスを持ちます。
- レコードは、複数のフィールドを持つテキスト レコードです
- レコードはトランザクションです。レコードが CompA と CompB の両方から処理されている場合は、処理済みと見なされます。それ以外の場合は、ロールバックされて再送信されます
ここでの問題は、CompA と Comp B の間の通信に最適な方法は何かということです
一つの方法は
1. CompA--------> CompB 2. CompA-------->Messaging Server(JMS)------> CompB
要件:複数の CompA が存在し、CompB はシステムであり、コンポーネントに障害が発生した場合、その負荷は他のピアによって共有されます。たとえば、CompA に障害が発生した場合、その負荷はシステム内の他の CompA インスタンスによって共有されます。そのために、CompA が CompB と密接に結び付けられないように、JMS の 2 番目のオプションを使用します。しかし、新しいコンポーネント (Messaging Server) が導入されると、レコード処理がトランザクションに対応し、システムがリアルタイムであるため、パフォーマンスが低下する可能性があります。
あなたの提案と専門家のアドバイスは非常に高く評価されます