我们的 Web 服务器 (IIS 10) 共享一个公共数据库 (SQL Server 2016)。它们定期从数据库轮询一些数据。当其中一个 Web 服务器处理导致该数据发生变化的请求时,它将更新数据库及其自己的数据。但其他 Web 服务器实例不知道此数据更改,因此在下一次轮询之前会保留旧数据。
我们应该如何指示其他 Web 服务器实例立即更新其数据?
例子:
- 数据库表 tblUserRoles 存储所有用户的所有角色。
- Web 服务器每天轮询此列表一次。
- 当管理员撤销用户的权限时,处理请求的 Web 服务器知道立即更新数据库和其自己的 UserRoleList。
- 但是其他 Web 服务器如何知道要更新其 UserRoleList?
可能的解决方案:
- 内部服务维护所有活动的 Web 服务器实例的列表。
- 当 Web 服务器 [A] 处理更改数据的请求时,它会更新数据库、更新自己的数据列表并请求活动服务器列表 [BZ]。
- Web 服务器 A 通过使用内部 URL(例如 /internal/update-user-roles)调用每个服务器 BZ 来调用数据列表更新
- 服务器 BZ 现在通过轮询数据库中的数据来更新其数据。