我們的 Web 伺服器 (IIS 10) 共用一個公共資料庫 (SQL Server 2016)。他們定期從資料庫中輪詢一些資料。當其中一台 Web 伺服器處理導致資料發生變更的請求時,它將更新資料庫及其自身的資料。但其他 Web 伺服器實例不知道此資料更改,因此在下一次輪詢之前仍保留舊資料。
我們應該如何指示其他 Web 伺服器實例立即更新其資料?
例子:
- 資料庫表格 tblUserRoles 儲存所有使用者的所有角色。
- Web 伺服器每天輪詢該清單一次。
- 當管理員撤銷使用者權限時,處理請求的 Web 伺服器知道立即更新資料庫及其自己的 UserRoleList。
- 但是其他 Web 伺服器如何知道更新其 UserRoleList?
可能的解決方案:
- 內部服務維護所有活動 Web 伺服器執行個體的清單。
- 當網頁伺服器[A]處理更改資料的請求時,它會更新資料庫,更新自己的資料清單並請求活動伺服器清單[BZ]。
- Web 伺服器 A 透過使用內部 URL(例如 /internal/update-user-roles)呼叫每個伺服器來呼叫伺服器 BZ 的資料清單更新
- 伺服器 BZ 現在透過輪詢資料庫中的資料來更新其資料。