2

クライアント/サーバー プログラムを設計していますが、設計上の決定について助けが必要です。

プログラムのサーバー側は、多数の Windows サーバー上でサービスとして実行され、サービスはこれらのサーバーを監視し、必要に応じてレポートを電子メールで送信します。

クライアントは、サーバー上で実行されているサービスを制御および管理するために使用されますが、常に実行されているわけではありません。

私の質問は、サービスの構成をどこにどのように保存する必要があるかです。設定 (smtp など) はクライアントで定義されますが、リモート サーバー (多数存在する可能性があります) で実行されているサービスは、設定で更新する必要があり、再度更新されるまでそれらの設定を保持する必要があります。

サービスが設定を読み取る中央の Windows 共有、またはクライアントが [保存] をクリックすると、設定が各サーバー上の場所に保存されるという 2 つのオプションが考えられます。

あなたならどうしますか?知っておくべきことはありますか?

ありがとう

4

3 に答える 3

0

ここで考慮すべきことがいくつかあります。

明らかな選択は、サーバー側のレジストリ、ファイル、データベースのいずれであってもリポジトリです。また、サービスが読み込まれると、これらすべての設定がコレクションに取り込まれます。ただし、他のタスクを監視するためにサーバー側にサービスをもう1つ追加するとどうなりますか。

パラメータが1つのサーバーを介してデータベースで更新された場合、他のサービスに更新を通知する必要があり、再初期化する必要があるため、問題が発生します。

多くのサービス間にキュー、共有メモリ、パイプ、ソケットなどの多くのIPCメカニズムを導入することで、これを克服できます。サービスが分散されていない場合は共有メモリを、分散されていない場合は中央サーバーまたはデータベース上のキューをお勧めします。より良いオプションとして。ただし、サービスは、パラメーターの更新について他のサービスにヒントを与える方法について、いくつかの協力を必要とします。

于 2009-04-22T11:55:02.727 に答える
0

私はそのようなサービスの経験はありませんが、すべてのサービスがアクセスできる中央データベースに設定を保存することをお勧めします。したがって、新しいサーバーを作成するたびに、データベースに新しい設定エントリを作成します。

これを議論に投げ込むだけです。

于 2009-04-22T11:29:04.100 に答える
0

クライアントと複数のサーバーを含むシステムを開発しました。私のシステムの要件には、非常に信頼性が高く、可用性が高いことが含まれます (これは要件ではない場合があります)。その観点から、次のような考えがあります。

  • 設定を中央の場所 (ファイル共有またはデータベース) に保存すると、分散システムに単一障害点が作成されます。回避策は、2 つ以上の中央の場所に設定を保存することです。しかし、2 つ以上の場所が同期していることをどのように確認しますか?)

  • 各サーバーで設定を保存する場合、設定を保存しようとしているときにクライアント/サーバー通信が1つのサーバーで失敗した場合、またはサーバーの1つが稼働していない場合はどうなりますか. サーバーが設定内容について同意しない状況が発生しました。繰り返しになりますが、複数のサーバーが同期していることを確認するにはどうすればよいでしょうか?

  • そのため....サーバーを確実に同期させる方法と、同期していないときにサーバーが検出する方法について考えてください。私のシステムでは、サーバー間にマスター/スレーブ スキームがあり、スレーブが常に同期していてメッセージを見逃していないことを確認できるように、シーケンス番号付きのハートビートがあります。マスターがダウンした場合、システムは機能しなくなりますが、それでも機能するため、マスターは壊滅的な障害の単一点にはなりません。

于 2009-04-22T11:51:10.910 に答える