1 回答

TA貢獻2003條經驗 獲得超2個贊
通過組播的方式進行集群間的共享
比如tomcat目前就具備這樣的功能,優(yōu)點是web容器自身支持,配置簡單,適合小型網站。缺點是當一臺機器的上的 session變更后會將變更的數據以組播的形式分發(fā)給集群間的所有節(jié)點,對網絡和所有的web容器都是存在開銷。集群越大浪費越嚴重。不能做到線性的擴 展。
利用NFS等一些共享存儲來共享Session數據
大致就是有一臺公共的NFS服務器做共享服務器,當然也可以采用數 據庫,所有的Web服務器都把session數據寫到共享存儲介質上,也都要來這臺服務器獲取session數據,通過這樣的方式來實現Session數 據的共享。
相比前面組播的方式來說,網絡開銷較小。缺點是受制于存儲設備的依賴,如果存儲設備down掉,就無法工作了,要做好主備同步等一些容災措施。 另外,當訪問量過大時,磁盤的IO也是一個非常大的問題。
利用Memcache來存儲共享Session數據
這可能也是目前 互聯(lián)網中比較流行的一種用法。所有Web服務器都把Session寫入到memcache,也都從memcache來獲取。
memcache本身就是一個 分布式緩存,便于擴展。網絡開銷較小,幾乎沒有IO。性能也更好。缺點,受制于Memcache的容量(除非你有足夠內存存儲),如果用戶量突然增多 cache由于容量的限制會將一些數據擠出緩存,另外memcache故障或重啟session會完全丟失掉。
完全用cookie
將 用戶的session數據全部存放在cookie中,很多大型站點都在這么干。優(yōu)點是服務器架構也變得簡單,每臺web服務器都可以很獨立。
沒有網絡開銷 和對磁盤IO,服務器重啟也不會導致數據的丟失。缺點,cookie過于龐大會耗費單位頁面的下載時間,所以要盡量保持cookie的精簡。
添加回答
舉報