集群中session的處理

2021-09-01 07:23:47 字數 1251 閱讀 8895

集群對session有兩種吧

1、基於request的負載均衡

該種方式下,負載均衡器 (load balancer)會根據各個node的狀況,把每個 http request進行分發。使用這樣的均衡策略,就必須在多個node之間複製使用者的session,實時保持整個cluster的使用者狀態同步,這種操作被稱為session複製(session replication)。jboss的實現原理是使用***(interceptor),根據使用者的同步策略攔截request,做同步處理後再交給server產生響應。

該方法的優點是客戶不會被繫結都具體的node,只要還有乙個node存活,使用者狀態都不會丟失,cluster都能夠繼續工作。缺點是node之間通訊頻繁,響應速度有影響,多併發、高頻操作的情況下效能下降比較厲害。

2、 基於使用者的負載均衡

該種方式下,當使用者發出第乙個request後,負載均衡器動態的把該使用者分配到某個節點,並記錄該節點的jvm路由,以後該使用者的所有request都會被繫結這個jvm路由,使用者只會與該server發生互動,這種策略被稱為粘性session(session sticky)。

該方法的優點是響應速度快,多個節點之間無須通訊。缺點也很明顯,某個node死掉以後,它負責的所有使用者都會丟失session。

兩個方案可以結合著來做:

前端apache使用session sticky方法保證同一使用者總是導向同乙個node,後端jboss(注意不是tomcat)配置非同步session複製。

這樣在通常情況下有apache保證請求可以達到hold該使用者狀態的node,而非同步session複製有可以保證不影響效能,最後當該node fail以後,apache路由到其他node的時候,jboss的非同步複製又可以保證其他node已經擁有該使用者狀態。

不過對於大型的電子商務**,apache基於http協議層的load balance效能就撐不住了,這個時候可以考慮使用lvs,基於ip層協議的load balance,現在也支援session sticky(其實不需要基於session進行分發,只要基於ip進行分發就好了,用乙個使用者在一次session會話過程中不可能換ip的)。

針對tomcat的集群文件來說,集群(cluster)和負載均衡(load balance)是兩個問題,但通常是一起結合使用的。

cluster是指幾台伺服器之間關聯,一般主要指session 複製,使之成為乙個整體,訪問任何一台伺服器都可以達到相同的效果;

cluster建成後,需要利用load balancer來執行請求的分發,就是分發到cluster中具體的伺服器上。

集群的session管理

1.session複製。集群之前相互複製session資料。在集群小時沒問題,集群數量機器多時,集群伺服器之間需要大量的通訊進行session複製,占用伺服器和網路的大量資源,系統不堪重負。在大量使用者訪問情況下,伺服器記憶體會不夠用。並且每台伺服器的session資料都是一樣的,實際上也是在浪費記...

集群中session同步解決方式

集群中幾種session同步解決方案的比較 轉 在集群中session安全和同步是個最大的問題,下面是收集到的幾種session同步的方案,希望能通過分析其各自的優劣找出其適應的場景。1.客戶端cookie加密 簡單,高效。比較好的方法是自己採用cookie機制來實現乙個session,在應用中使用...

session 集群方案

背景 假設某個 是由多台伺服器提供服務,nginx採用輪詢機制做負載均衡,那麼同乙個ip訪問該 時,請求就可能會被分配到不同的伺服器上,如果session沒有實現共享,就會出現重複登陸授權的情況。session 集群主要有兩個方案 session 複製和session共享 session 複製 是指...