如何實現session共享


http://www.cnblogs.com/xiehuiqi220/p/3592300.html

首先我們應該明白,為什么要實現共享,如果你的網站是存放在一個機器上,那么是不存在這個問題的,因為會話數據就在這台機器,但是如果你使用了負載均衡把 請求分發到不同的機器呢?這個時候會話id在客戶端是沒有問題的,但是如果用戶的兩次請求到了兩台不同的機器,而它的session數據可能存在其中一台 機器,這個時候就會出現取不到session數據的情況,於是session的共享就成了一個問題。

 

http://huqilong.blog.51cto.com/53638/843891

目前大多數大型網站的服務器都采用了分布式的部署方式,但是session是在服務器端保存的,如果用戶跳轉到其他服務器的話,session就會丟失,於是就有了分布式系統的session共享問題。

session共享有很多解決方法,比較常用的如下:

一、以cookie加密的方式保存在客戶端.優點是減輕服務器端的壓力,缺點是受到cookie的大小限制,可能占用一定帶寬,因為每次請求會在頭部附帶一定大小的cookie信息,另外這種方式在用戶禁止使用cookie的情況下無效.

二、服務器間同步。定時同步各個服務器的session信息,此方法可能有一定延時,用戶體驗也不是很好。

三、以某種媒介共享session信息,比如memcached,NFS等

 

http://www.zhihu.com/question/19651970

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

 

memcache:

http://memcached.org/

What is Memcached?

Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.

Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering.

 

http://blog.csdn.net/hjm4702192/article/details/7894080

為什么會有Memcache和memcached兩種名稱
其實Memcache是這個項目的名稱,而memcached是它服務器端的主程序文件名,一個是項目名稱,一個是主程序文件名


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM