第六天-《企業應用架構模式》-會話狀態

1. 無狀態的價值:

無狀態可以僅用很少的對象就可以處理很多的用戶,空閒狀態的用戶越多,無狀態服務器就越有用

2. 會話狀態:

相關性:會話狀態只與當前會話有關,它存在於業務事務中,與其他會話及他們的業務事務是分開的;

與記錄數據信息的區別:記錄數據時長期保存在數據庫中的持久化數據,它對所有會話可見,會話狀態需要提交成爲數據庫中的記錄;

最大問題:出現在處理隔離性的時候(同時操作,或者相關聯操作)

不能把會話中所有數據都看成是會話狀態

3. 存儲會話狀態的方法:

1)存儲會話狀態的3種方法:

客戶會話狀態:在客戶端保存數據(在web中可用url、cookie、hidden域等)

適用場景:會話數據較少、用戶經常取消會話(如B2C用戶直接關閉站點消失)

問題:安全性、完整性

服務器會話狀態:在服務器內存、文件系統、一張簡單的數據庫表(以會話標識號爲key、以已序列化對象爲值)

優點:容易直接訪問會話狀態

數據庫會話狀態:在服務器端存儲(將數據分解爲多個表和域)

優點:狀態持久化不易丟失

問題:隔離性差(需要將會話數據與記錄數據相隔離)

以上3種模式並不相互排斥,可以混合使用。使用時,還需要注意:客戶機崩潰、服務器死掉、網絡連接斷掉

2)會話擴容:

會話遷移:允許一次會話從一臺服務器轉移到另一臺服務器,從而可以有一臺服務器處理一個請求,其他服務器處理其他請求

優點:可均衡服務器

缺點:難以找到會話狀態,難以支持會話遷移

服務器親和:某次特定會話的所有請求只能由一臺服務器處理

缺點:當客戶端有使用代理是,可能會有大量負載集中在某臺服務器上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章