傳統 SSO 將驗證 Token 存於資料庫,查詢延遲高、擴展性差。改用分散式快取(如 Memcached、Redis、AppFabric)配合 HttpRuntime.Cache 本地快取雙層架構,大幅提升驗證效能。
架構演進
傳統方案
- 資料庫表儲存 User-Token 對應
- 每次驗證查詢 DB,高併發下成為瓶頸
分散式快取 + 叢集方案
傳統:資料庫儲存 Token
分散式快取:Token 存於快取叢集
雙層:本地 HttpRuntime.Cache + 分散式快取叢集
核心優勢
- 極低延遲:本地快取命中零網路開銷
- 高可用性:快取叢集自動容錯、資料分片
- 一致性:Token 異動透過快取失效通知同步各節點本地快取
- 擴展性:新增快取節點線性擴展吞吐量
實作要點
- 登入成功 → 產生 Token → 寫入分散式快取(設定過期時間)
- 驗證請求 → 先查本地
HttpRuntime.Cache → 未命中查分散式快取 → 回填本地快取
- 登出/過期 → 移除分散式快取 → 發布失效事件 → 各節點清除本地快取
- 定期清理過期 Token