当社の Web サーバー (IIS 10) は、共通のデータベース (SQL Server 2016) を共有しています。これらのサーバーは、定期的にデータベースからデータをポーリングします。Web サーバーの 1 つが、そのデータの変更につながる要求を処理すると、データベースと自身のデータを更新します。ただし、他の Web サーバー インスタンスはこのデータの変更を認識しないため、次のポーリングまで古いデータを保持します。
他の Web サーバー インスタンスにデータを即座に更新するように指示するにはどうすればよいでしょうか?
例:
- データベース テーブル tblUserRoles には、すべてのユーザーのすべてのロールが格納されます。
- Web サーバーは 1 日に 1 回このリストをポーリングします。
- 管理者がユーザーの権限を取り消すと、リクエストを処理する Web サーバーは、データベースと自身の UserRoleList を直ちに更新する必要があることを認識します。
- しかし、他の Web サーバーはどのようにして UserRoleList を更新する必要があるかを知るのでしょうか?
考えられる解決策:
- 内部サービスは、すべてのアクティブな Web サーバー インスタンスのリストを保持します。
- Webサーバー[A]は、データを変更するリクエストを処理する際に、データベースを更新し、自身のデータリストを更新し、アクティブサーバーリスト[BZ]を要求します。
- WebサーバーAは、内部URL(例:/internal/update-user-roles)を使用して各サーバーBZを呼び出すことにより、サーバーBZのデータリスト更新を呼び出します。
- サーバー BZ は、データベースからデータをポーリングしてデータを更新するようになりました。