分散式session處理方案
在分散式叢集環境下,session的獲取就不能採用request.setSession了。那麼如何解決分散式session的問題呢,有以下幾個方案:
1.tomcat容器自動同步session。
詳見http://www.360doc.com/content/10/0309/14/495229_18116558.shtml
2.其它方案:alibaba b2b採用的cookie的方案,這裡面要關心的是資訊的安全,如何防止資訊的偽造並提交,這個以後可以研究。至於tair的方案,就是淘寶系現在採用的方案,是有通用代表性的方案
web叢集時session同步的3種方法[轉]
在做了web集群后,你肯定會首先考慮session同步問題,因為通過負載均衡後,同一個IP訪問同一個頁面會被分配到不同的伺服器上,如果session不同步的話,一個登入使用者,一會是登入狀態,一會又不是登入狀態。所以本文就根據這種情況給出三種不同的方法來解決這個問題:
一,利用資料庫同步session
1,用一個低端電腦建個數據庫專門存放web伺服器的session,或者,把這個專門的資料庫建在檔案伺服器上,使用者訪問web伺服器時,會去這個專門的資料庫check一下session的情況,以達到session同步的目的。
2,這種方法是把存放session的表和其他資料庫表放在一起,如果MySQL也做了叢集了話,每個mysql節點都要有這張表,並且這張session表的資料表要實時同步。
說明:用資料庫來同步session,會加大資料庫的負擔,資料庫本來就是容易產生瓶頸的地方,如果把session還放到資料庫裡面,無疑是雪上加霜。上面的二種方法,第一點方法較好,把放session的表獨立開來,減輕了真正資料庫的負擔
二,利用cookie同步session
session是存放在伺服器端的,cookie是存放在客戶端的,怎麼實現同步呢?方法很簡單,就是把使用者訪問頁面產生的session放到cookie裡面,就是以cookie為中轉站。你訪問web伺服器A,產生了session把它放到cookie裡面了,你訪問被分配到web伺服器B,這個時候,web伺服器B先判斷伺服器有沒有這個session,如果沒有,在去看看客戶端的cookie裡面有沒有這個session,如果也沒有,說明session真的不存,如果cookie裡面有,就把cookie裡面的sessoin同步到web伺服器B,這樣就可以實現session的同步了。
說明:這種方法實現起來簡單,方便,也不會加大資料庫的負擔,但是如果客戶端把cookie禁掉了的話,那麼session就無從同步了,這樣會給網站帶來損失;cookie的安全性不高,雖然它已經加了密,但是還是可以偽造的。
三,利用memcache同步session
memcache可以做分散式,如果沒有這功能,他也不能用來做session同步。他可以把web伺服器中的記憶體組合起來,成為一個”記憶體池”,不管是哪個伺服器產生的sessoin都可以放到這個”記憶體池”中,其他的都可以使用。
優點:以這種方式來同步session,不會加大資料庫的負擔,並且安全性比用cookie大大的提高,把session放到記憶體裡面,比從檔案中讀取要快很多。
缺點:memcache把記憶體分成很多種規格的儲存塊,有塊就有大小,這種方式也就決定了,memcache不能完全利用記憶體,會產生記憶體碎片,如果儲存塊不足,還會產生記憶體溢位。
四,總結
上面三種方法都是可行的
第一種方法,最影響系統速度的那種,不推薦使用;
第二種方法,效果不錯,不過安全隱患一樣的存在;
第三種方法,個人覺得第三種方法是最好的,推薦大家使用
相關推薦
分散式session處理方案
在分散式叢集環境下,session的獲取就不能採用request.setSession了。那麼如何解決分散式session的問題呢,有以下幾個方案: 1.tomcat容器自動同步session。 詳見http://www.360doc.com/content
SpringSession:分散式 session 實現方案及 SpringSession 功能分析
上一篇文章 SpringSession:整合SpringBoot 中介紹瞭如何在SpringBoot中來整合 SpringSession,整個過程非常簡單,同時也簡單分析了下SpringSession的作用原理。繼上一篇實踐之後,本文主要來分析 SpringSession 的原理。 1、從 session
搞懂分散式技術11:分散式session解決方案與一致性hash
session一致性架構設計實踐 原創: 58沈劍 架構師之路 2017-05-18 一、緣起 什麼是session? 伺服器為每個使用者建立一個會話,儲存使用者的相關資訊,以便多次請求能夠定位到同一個上下文。 Web開發中,web-server可以自動為同
springcloud分散式事務處理方案
1.場景還原 筆者在公司最近的一個專案採用springcloud框架搭建微服務架構,這勢必會引發分散式事務處理的思考,目前處理分散式主流方案tcc及訊息的最終一致性;今天筆者整合github上較為流行的tx-lcn分散式處理框架,它是基於redis的一種補償型處理
分散式Session儲存方案
前言 本文主要探討集群后不同Web伺服器獲取Session資料的問題解決方案。 1. Session Stick Session Stick 方案即將客戶端的每次請求都轉發至同一臺伺服器,
分散式session之redis解決方案實現
一、首先Session Session 是客戶端與伺服器通訊會話技術, 比如瀏覽器登陸、記錄整個瀏覽會話資訊。session存放在伺服器,關閉瀏覽器不會失效。 Session實現原理 客戶對向伺服器端傳送請求後,Session 建立在伺服器端,返回Sessionid給客戶
分散式補償事務處理方案 / 分散式計算是如何控制事務的?
事務原子性,一致性,永續性,隔離性是基本的屬性,這裡不解釋,本篇文章只對分佈性事務方案做說明方案 問題來源 隨著分散式微服務應用盛行,帶來的優勢是顯而易見的,但是在面臨事務的時候,卻變的異常麻煩,因為是在不同的應用內,所以無法在單個應用內做回滾處理,這個時候,就需要有一個單獨的
Java秒殺系統方案優化 2 --第2章 實現使用者登入以及分散式session功能
第2章 實現使用者登入以及分散式session功能 1. 明文密碼兩次md5入庫 分別使用簽名如1a2b3c4d,分別用簽名和密碼使用MD5加密兩次後(一次是最原始密碼加密,一次是加密後再使用MD5和簽名加密)才存入資料庫,每個使用者對應都有一個欄位,例如本案例中的sa
Java叢集/分散式環境下5種session處理策略
前言 在搭建完叢集環境後,不得不考慮的一個問題就是使用者訪問產生的session如何處理。如果不做任何處理的話,使用者將出現頻繁登入的現象,比如叢集中存在A、B兩臺伺服器,使用者在第一次訪問網站時,Nginx通過其負載均衡機制將使用者請求轉發到A伺服器,這時A伺服器就會給使
分散式Session共享解決方案
分散式Session解決方案 Author:SimpleWu 分散式Session一致性? 說白了就是伺服器叢集Session共享的問題 Session的作用? Session 是客戶端與伺服器通訊會話跟蹤技術,伺服器與客戶端保持整個通訊的會話基本資訊。 客戶端在第一次訪問服務端的時候,服務端會響
【轉】【Linux運維-叢集技術進階】叢集/分散式環境下5種session處理策略
前言 在搭建完叢集環境後,不得不考慮的一個問題就是使用者訪問產生的session如何處理。如果不做任何處理的話,使用者將出現頻繁登入的現象,比如叢集中存在A、B兩臺伺服器,使用者在第一次訪問網站時,Nginx通過其負載均衡機制將使用者請求轉發到A伺服器,這時A伺服器
分散式Session共享解決方案.直的一看
Author:SimpleWu分散式Session一致性? 說白了就是伺服器叢集Session共享的問題 Session的作用? Session 是客戶端與伺服器通訊會話跟蹤技術,伺服器與客戶端保持整個通訊的會話基本資訊。 客戶端在第一次訪問服務端的時候,服務端會響應一個sessionId並且將它存入
Apache shiro叢集實現 (六)分散式集群系統下的高可用session解決方案---Session共享
Apache Shiro的基本配置和構成這裡就不詳細說明了,其官網有說明文件,這裡僅僅說明叢集的解決方案,詳細配置:shiro web config Apache Shiro叢集要解決2個問題,一個是session的共享問題,一個是授權
詳解基於Spring Boot/Spring Session/Redis的分散式Session共享解決方案
分散式Web網站一般都會碰到叢集session共享問題,之前也做過一些Spring3的專案,當時解決這個問題做過兩種方案,一是利用nginx,session交給nginx控制,但是這個需要額外工作較多;還有一種是利用一些tomcat上的外掛,修改tomcat配置檔案,讓tom
基於Spring Boot-Spring Session-Redis的分散式Session共享解決方案
分散式Web網站一般都會碰到叢集session共享問題,之前也做過一些Spring3的專案,當時解決這個問題做過兩種方案,一是利用nginx,session交給nginx控制,但是這個需要額外工作較多;還有一種是利用一些tomcat上的外掛,修改tomcat配置檔案,讓tom
叢集/分散式環境下5種共享session處理策略
前言在搭建完叢集環境後,不得不考慮的一個問題就是使用者訪問產生的session如何處理。如果不做任何處理的話,使用者將出現頻繁登入的現象,比如叢集中存在A、B兩臺伺服器,使用者在第一次訪問網站時,Nginx通過其負載均衡機制將使用者請求轉發到A伺服器,這時A伺服器就會給使用者
分散式環境Session處理方法
最近做的一個專案中,操作的時候需要對手機號進行簡訊驗證。 對簡訊驗證的步驟: 一、獲取驗證碼,把獲取得到的驗證碼儲存到該使用者的session中 二、然後
微服務架構的分散式事務解決方案(Dubbo分散式事務處理)視訊非加密
本人在網上找了好多資料,很多分享的網盤資源中視屏有些加密了無法觀看,經過努力終於找到了一個可以觀看的全部教程。 網盤中包含所有視屏講解,有需要的朋友可儲存在自己網盤,視屏無密碼可線上觀看。 分散式事務是一個繞不過去的挑戰!微服務架構本質上就是分散式服務化架構,微服務架
叢集/分散式環境下5種session處理策略
前言 在搭建完叢集環境後,不得不考慮的一個問題就是使用者訪問產生的session如何處理。如果不做任何處理的話,使用者將出現頻繁登入的現象,比如叢集中存在A、B兩臺伺服器,使用者在第一次訪問網站時,Nginx通過其負載均衡機制將使用者請求轉發到A伺服器,這
【轉】集群/分布式環境下5種session處理策略
學習 原理 memcache 可選 ret 當前 memcach uil 服務器 轉載至:http://blog.csdn.net/u010028869/article/details/50773174 在搭建完集群環境後,不得不考慮的一個問題就是用戶訪問產生的sessi