1. 程式人生 > >session一致性的解決方案

session一致性的解決方案

更多內容,歡迎關注微信公眾號:全菜工程師小輝。公眾號回覆關鍵詞,領取免費學習資料。

什麼是session?

伺服器為每個使用者建立一個會話,儲存使用者的相關資訊,以便多次請求能夠定位到同一個上下文,這個相關資訊就是session。這樣,當用戶在應用程式的Web頁之間跳轉時,儲存在session物件中的變數將不會丟失,而是在整個使用者會話中一直存在下去。

session是對http無狀態協議的補充,達到狀態保持的目的

什麼是session一致性問題?

假設使用者包含登入資訊的session都記錄在第一臺server上,反向代理如果將請求路由到另一臺server上,可能就找不到相關資訊,而導致使用者需要重新登入。

解決方法

1. 客戶端儲存cookie

  • 優點:
  1. 服務端不需要儲存
  • 缺點:
  1. 每次http請求都攜帶session,佔網絡頻寬
  2. 資料儲存在客戶端上,並在網路傳輸,存在洩漏、篡改等安全隱患
  3. session儲存的資料大小受cookie限制

由於技術不斷演進,客戶端儲存cookie出現了資訊全量cookie,cookie儲存sessionId和JWT三種方式,他們優缺點各異,可以點選筆者的另一篇部落格檢視相關介紹

快速瞭解會話管理三劍客cookie、session和JWT

2. session複製方法

  • 思路:
    多個server之間相互同步session,這樣每個server之間都包含全部的session

  • 優點:
  1. 只需要設定配置,應用程式不需要修改程式碼
  • 不足:
  1. session的同步需要資料傳輸,佔內網頻寬,有延時
  2. 所有server都包含所有session資料,資料量受最小記憶體的sever限制,水平拓展能力差

3. session中心儲存

  • 思路:
    將session儲存在server後端的集中式快取

  • 優點:
  1. 沒有安全隱患
  2. 可以水平擴充套件,支援快取叢集或橫向拓展
  • 不足:
  1. 增加了一次網路呼叫
  2. 需要修改應用程式碼

4. session會話粘連

session會話粘連:英文原詞為"Sticky Sessions"

  • 思路:
    反向代理層讓同一個使用者的請求保證落在一臺server上呢?

  • 方法一:四層代理hash。反向代理層使用使用者ip來做hash,以保證同一個ip的請求落在同一個server上(更推薦,保證傳輸層不引入業務層的邏輯)

  • 方法二:七層代理hash。反向代理使用http協議中的某些業務屬性來做hash,例如sid,city_id,user_id等,能夠更加靈活的實施hash策略,以保證同一個瀏覽器使用者的請求落在同一個server上

  • 優點:

  1. 只需要改nginx配置,不需要修改應用程式碼
  2. 可以支援server水平擴充套件
  • 不足:
  1. server水平擴充套件,rehash後session重新分佈,會有一部分使用者路由不到正確的session
  2. 即使hash雜湊均勻,也不能保證server的負載均勻

更多內容,歡迎關注微信公眾號:全菜工程師小輝。公眾號回覆關鍵詞,領取免費學習資料。

相關推薦

分布式Session一致性解決方案有哪些?

tomcat 反向 gin 推薦 cookie cat 哪些 存儲 session 1.使用cookie代替session(不安全,不推薦使用) 2.使用數據庫存儲session(效率低,不推薦使用) 3.使用nginx反向代理ip綁定方法,同一個ip只能在同一臺服務器

sql執行內部操作期間檢測到不一致性解決方案

服務 repair false 重啟 html -- 不一致 備註 操作 解決方法:重啟下SQL服務,把下面腳本運行即可。運行後,壞掉的數據庫可能會丟失。 --mydb 為壞了的數據庫名--mytable 為壞了的據庫表--master 這裏不需要更改 use mydb

分布式系統事務一致性解決方案

基本 插入 關系型 悲劇 win 比較 -1 返回結果 轉賬 開篇 在OLTP系統領域,我們在很多業務場景下都會面臨事務一致性方面的需求,例如最經典的Bob給Smith轉賬的案例。傳統的企業開發,系統往往是以單體應用形式存在的,也沒有橫跨多個數據庫。我們通常只需借助開發平臺

分布式系統事務一致性解決方案(轉)

跨庫 sources body 情況下 jpg 分庫 ability 開源 數據 本文首發於InfoQ,版權所有,請勿轉載!!!http://www.infoq.com/cn/articles/solution-of-distributed-system-transacti

redis系列之數據庫與緩存數據一致性解決方案

查詢緩存 src dev 信息 一次 ram ren red getc redis系列之數據庫與緩存數據一致性解決方案 數據庫與緩存讀寫模式策略 寫完數據庫後是否需要馬上更新緩存還是直接刪除緩存? (1)、如果寫數據庫的值與更新到緩存值是一樣的,不需要經過任何的計算,可以馬

訊息中介軟體(一)分散式系統事務一致性解決方案大對比,誰最好使?(轉)

原文轉載至:https://blog.csdn.net/lovesomnus/article/details/51785108   在分散式系統中,同時滿足“一致性”、“可用性”和“分割槽容錯性”三者是不可能的。分散式系統的事務一致性是一個技術難題,各種解決方案孰優孰劣? 在OLTP系統領域,

Tomcat叢集session管理解決方案 關於sticky session session replication與使

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

session共享解決方案 - JWT詳解

目錄 一. session流程 二. 分散式應用的session共享  三. JWT的組成  四. header介紹 五. payload介紹 六. signature介紹  七. base64url演算法  八. JWT的使用

分散式Session共享解決方案

分散式Session解決方案 Author:SimpleWu 分散式Session一致性? 說白了就是伺服器叢集Session共享的問題 Session的作用? Session 是客戶端與伺服器通訊會話跟蹤技術,伺服器與客戶端保持整個通訊的會話基本資訊。 客戶端在第一次訪問服務端的時候,服務端會響

分散式Session共享解決方案.直的一看

Author:SimpleWu分散式Session一致性? 說白了就是伺服器叢集Session共享的問題 Session的作用? Session 是客戶端與伺服器通訊會話跟蹤技術,伺服器與客戶端保持整個通訊的會話基本資訊。 客戶端在第一次訪問服務端的時候,服務端會響應一個sessionId並且將它存入

分布式Session共享解決方案.直的一看

rom 啟動 out 姓名 之前 sim max -- local Author:SimpleWu分布式Session一致性? 說白了就是服務器集群Session共享的問題 Session的作用? Session 是客戶端與服務器通訊會話跟蹤技術,服務器與客戶端保持整個通訊

cookie被禁止後怎樣使用session解決方案

                如果cookie被禁用了,而且我們又無法控制讓使用者啟用,那麼我們可以用[java] view plain copy print?HttpServletResponse response = ... // 這個預設在JSP裡面是有的,無需獲得  response.encodeU

高併發一致性解決方案

高併發場景有搶紅包,雙十一搶商品等。 如何去處理這些高併發場景呢? 1.從儲存介質考慮:有記憶體快取和磁碟快取,記憶體快取的速度是比磁碟快取要高出幾十倍的,因此可以考慮儲存介質在記憶體上。想象一下如果搶紅包的時候同時有2萬個請求到達伺服器,我相信使用資料庫來

分散式事務(1)訊息傳送一致性解決方案

訊息傳送一致性 是指產生訊息的業務動作與訊息傳送的一致。(如果業務操作成功,那麼由這個業務操作所產生的訊息一定要成功投遞出去,否則就丟訊息) 訊息傳送一致性如何保障: 場景: 1.業務處理成功,執行傳送訊息的時候 應用故障,導致沒有傳送訊息(後續服務沒有收到訊息處理業務

多伺服器共享Session解決方案

問題 為了滿足足夠大的應用,滿足更多的客戶,於是我們架設了N臺Web伺服器(N>=2),在多臺Web伺服器的情況下,我們會涉及到一個問題:使用者登陸一臺伺服器以後,如果在跨越到另一臺伺服器的時候能夠繼續使用客戶的Session? 1、寫客戶端Coo

詳解基於Spring Boot/Spring Session/Redis的分散式Session共享解決方案

分散式Web網站一般都會碰到叢集session共享問題,之前也做過一些Spring3的專案,當時解決這個問題做過兩種方案,一是利用nginx,session交給nginx控制,但是這個需要額外工作較多;還有一種是利用一些tomcat上的外掛,修改tomcat配置檔案,讓tom

redis系列之資料庫與快取資料一致性解決方案

資料庫與快取讀寫模式策略 寫完資料庫後是否需要馬上更新快取還是直接刪除快取? (1)、如果寫資料庫的值與更新到快取值是一樣的,不需要經過任何的計算,可以馬上更新快取,但是如果對於那種寫資料頻繁而讀資料少的場景並不合適這種解決方案,因為也許還沒有查詢就被刪除

feign呼叫session丟失解決方案

最近在做專案的時候發現,微服務使用feign相互之間呼叫時,存在session丟失的問題。例如,使用Feign呼叫某個遠端API,這個遠端API需要傳遞一個鑑權資訊,我們可以把cookie裡面的session資訊放到Header裡面,這個Header是動態的,跟

訊息中介軟體(一)分散式系統事務一致性解決方案大對比,誰最好使?

在分散式系統中,同時滿足“一致性”、“可用性”和“分割槽容錯性”三者是不可能的。分散式系統的事務一致性是一個技術難題,各種解決方案孰優孰劣? 在OLTP系統領域,我們在很多業務場景下都會面臨事務一致性方面的需求,例如最經典的Bob給Smith轉賬的案例。傳統的企業開發,

訊息中介軟體保證訊息一致性解決方案

1、訊息中介軟體的應用場景 (1)非同步通訊 (2)解耦 (3)併發緩衝 2、訊息傳送和投遞的不可靠性 (1)分散式網路進行就引入了資料傳輸的不確定性 (2)也就是CAP理論中的P(分割槽容錯性) (3)跨網路通訊產生了分散式事務問題 3、訊息傳