解決 Tomcat 集群 Session 共享問題,使用 Memcached 作為分佈式 Session 存儲。需引入 memcached-session-manager (MSM) 依賴,在 context.xml 配置 Manager 類。支持 Sticky (本地備份) 與 Non-Sticky (全量同步) 兩種模式。
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:host1:11211,n2:host2:11211"
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
sessionBackupAsync="true"
sessionBackupTimeout="100"
copyCollectionsForSerialization="false" />
關鍵參數:memcachedNodes 指定節點列表,sessionBackupAsync 異步備份提升性能,requestUriIgnorePattern 排除靜態資源請求。需確保 Session 屬性實現 Serializable。MSM 透過過濾器攔截請求自動同步,無需修改業務代碼。生產環境建議啟用壓縮 (transcoderFactoryClass) 減少網絡傳輸。