0

Tibco EMS は、サーバー側のホット バックアップ構成でフォールト トレランスを提供することを認識しています。詳しくは、ユーザー ガイドこの回答、およびこちらを参照してください。

しかし、クライアント側では、Tibco EMS はフォールト トレラントなクライアントにすぐに使用できるソリューションを提供しますか? 例: トピックでは、Sports.F1.PitStop2 つのクライアント (server1、server2) がパブリッシャーとして登録されます。server1 で何か問題が発生した場合 (つまり、server1 のパブリッシャーがダウンした場合)、server2 はトピックでシームレスにパブリッシュを続行するという考えです。問題は、Tibco EMS がそのようなクライアント側のフォールト トレランス機能を提供するかどうかです。

4

3 に答える 3

0

あなたの質問を完全に理解しているかどうかわかりません。EMS はメッセージ ブローカーです。メッセージを仲介します。それだけです。複数のサーバーが同じトピックに公開している場合、EMS では問題ありません。パブリッシャー自体がフェールオーバー構成にあり、アクティブに送信しているのは 1 つだけで、最初のパブリッシャーが失敗したときにもう 1 つのパブリッシャーが引き継ぐ場合、EMS は気にしません。

あるパブリッシャーから別のパブリッシャーへのフェイルオーバー メカニズムの管理は、自分で開発する必要があります。EMS はそれをサポートするものを何も提供していません。server1 がいつダウンしたかを server2 が知るには、何らかのメカニズムが必要です。これを行うにはいくつかの方法があります。

  • アクティブ サーバーが定期的にハートビート メッセージを送信し (場合によっては EMS 経由でも)、パッシブ サーバーがそれらをリッスンするハートビート メカニズムを使用します。
  • server1 と server2 の間でアクティブな開いた接続を使用し (たとえば、単純な tcp ポートを開き、定期的にダミー メッセージを送信して自動的に閉じないようにします)、そのポートで開いた読み取りを行います。server1 がダウンした瞬間に接続エラーが発生し、ハートビートのタイムアウトを待つ必要はありません。
  • openview、tivoli、nagios などのサードパーティの監視ツールを使用して、サーバー 1 がダウンしていることを検出し、サーバー 2 に通知します。
  • EMSで使える機能があります。EMS には、サブスクライブできるシステム管理トピックがあり、基本的に内部で発生するすべてのログが記録されます。接続および切断イベントをサブスクライブして、EMS に接続または切断するコンポーネントを監視できます。server1 に障害が発生した場合、これは切断イベントとして表示されます。
于 2014-05-26T09:05:02.357 に答える
0

いいえ。

EMS (または JMS) は、クライアント側のフォールト トレランス機能をサポートしていません。理由は単純です。通常、パブリッシャーのプロセスはお互いを認識していません。

詳しく説明するには:

トピックは通常、多くのパブリッシャー (3 つ以上) を受け入れます。pub/sub シナリオでは、パブリッシャーはサブスクライバーを知りません。通常、他のパブリッシャーをある程度知りません。

あなたの解決策:

あなたのソリューションに関する私の最初の質問: 両方のサーバーが同時にメッセージを発行できないのはなぜですか?

正当な理由があると思います (server1 と server2 からのメッセージが重複しているなど)。その場合、「アクティブ」サーバーと「パッシブ」サーバーの間で何らかの通信を行う必要があります。

可能性 1 : サーバー 2 は単純なサービス/rmi/その他のハートビート メカニズムに接続されており、サーバー 1 が発行を停止したかどうか、いつ停止したかを知ることができます。

可能性 2 : Server2 自体がトピックにサブスクライブされてお​​り、メッセージがいつ停止したかを知ることができます。

最後の注意:共有された「サブスクリプション」 (1 つの永続的なサブスクリプションが 2 つのサーバー間で共有される) を意味する場合: 新しい JMS 2.0 API はこの機能をサポートしています。EMS 8 は、JMS 2.0 をサポートする EMS の唯一のバージョンです。

于 2014-05-22T03:18:36.340 に答える