3

24 時間 365 日稼働する非常に大きな DataSnap サーバーがあり、現在稼働している MIDAS (COM) サーバーの代わりになります。現在、接続されているすべてのクライアントを強制的に切断することなく、そのサーバーを更新する方法の問題に直面しています。

現在の midas サーバー (ちなみに、サービスを提供するための膨大なトラフィックはありません) では、接続がなくなるまで待ってから、サーバー アプリケーションをシャットダウンし、exe ファイルを置き換えます。サーバーが「ダウン」しているときに新しい接続が発生した場合、それは COM オブジェクトであるため、OS によって「プルアップ」され、クライアントに問題は発生しません。

新しい DataSnap アーキテクチャはもはや COM に基づいていません (すばらしい!) が、この方法では、新しい接続を失敗させることなくサーバーを停止する機会を失います。

一種の TCP「プロキシ」または「トンネル」が問題を解決できると考えていたので、新しいサーバー exe をどこかに置くだけで、その「プロキシ」にクライアント接続を新しい DS サーバーにリダイレクトさせることができます。TIdMappedPortTCP を試してみましたが、サーバーとクライアントのダイアログのランダムなポイントで継続的にハングします。

何か案は?

編集:効率上の理由から、純粋な TCP/IP トランスポートで DataSnap を使用しているため、http プロキシは私の特定のケースには適していません。

4

1 に答える 1

1

ネームサービスに相当するものを検討する必要があるでしょうか? メソッド呼び出しを行い、「メイン」サーバーの IP アドレスを返す Datasnap サーバーと同じくらい単純な場合があります。次に、メンテナンスのためにサーバーを削除する場合は、ネームサーバーが配布する IP アドレスを変更して、代わりに新しいクライアントがルーティングされるようにします。メインサーバーがバックアップされたら、IP を元に戻すことができます。

まだブートストラップの問題 (つまり、ネーミング サーバーの IP を見つける方法) がありますが、クライアントの構成ファイルにいくつかの IP アドレスを指定し、最初の IP アドレスが失敗した場合は、 2番目。

于 2012-08-16T01:08:55.050 に答える