知乎專欄 | 多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者” |
為什麼我要在這裡提Session和Cookie,這也大型站點必須要處理問題。
在集群環境中與單伺服器是不一樣的,集群組成可分為調度伺服器和節點,節點數量不定,單個節點安裝有web伺服器,用戶每次訪問網站調度伺服器隨機分配一個節點給該用戶, 舉一個例子:用戶在網站上看新聞,點擊第一個連接被分配到node 1上去,當他看完這條新聞並單擊下一條時,可能被分配到其它節點上,這裡剛纔建立的session在node 1上, 它就會因失去session而必須重新登錄。
所以我們要同步所有節點上的Session, 另外如果能用Cookie代替Session的地方儘量使用Cookie。
解決方案:
不用Session,使用Cookie取而代之
共享Session,放到資料庫中,放到Memcache中
PHP Session很有解決方案:
查看PHP手冊 Session Extensions 章節,重寫Session邏輯。
共享Session用Memcache,在php.ini中配置即可
session.save_handler = memcache session.save_path = tcp://127.0.0.1:10001
Cookie 我這裡提到cookie是可以實現“單點登錄”功能。
一個網站可能不指一組集群系統,如news.example.org, bbs.example.org, blog.example.org 要實現在一處登錄即可在其它站點上同時也處于登錄狀態,就要用到Cookie來實現。