無狀態會話的實現

這裏說的無狀態會話跟ejb裏面的不同的,只是引用了這個概念,但實現方式可以用任何方式來實現的。

所謂無狀態會話就是服務器端不會保存客戶端的任何特性,保證每一個請求都是乾淨的,無差異性的,主要是爲了解決集羣環境中的客戶端識別。

說簡單點,實際就是把客戶端的一些差異內容存進數據庫,因爲數據庫是唯一的,並非集羣環境,而客戶端通過cookie存入一個sessionid的東西,每次訪問服務器重新根據sessionid獲得用戶的特性信息,從而達到無狀態會話,但是又能體現各個訪問者的差異性來。

說到這種解決集羣環境的問題來,想起上次解決短信服務器的一個bug來。

短信有三大運營商,每個運營商一個線程在跑,一個線程在跑的時候都正常的,數據的各個層面的日誌輸出一切正常,但是隻要多個線程一起,就經常出現一些莫名其妙的問題,部分線程會不在發揮作用。後來查了很久,才發現是每個線程取數據並沒有例外對待,但導致CMCC線程出現了UNICOM的數據這樣的問題來。這個實際也是類似無狀態會話的一種體現。

無狀態會話的一種常見實現就是把差異性的內容保存在一個唯一的存儲機構中,比如數據庫,比如memcached。然後客戶端通過一個id來讀取或者保存。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章