欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java分布式session存儲解決方案圖解

 更新時間:2020年07月14日 09:22:00   作者:MrAit  
這篇文章主要介紹了Java分布式session存儲解決方案圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

前言

本文主要探討集群后不同Web服務器獲取Session數(shù)據(jù)的問題解決方案。

Session Stick

Session Stick 方案即將客戶端的每次請求都轉發(fā)至同一臺服務器,這就需要負載均衡器能夠根據(jù)每次請求的會話標識(SessionId)來進行請求轉發(fā),如下圖所示。

這種方案實現(xiàn)比較簡單,對于Web服務器來說和單機的情況一樣。但是可能會帶來如下問題:

如果有一臺服務器宕機或者重啟,那么這臺機器上的會話數(shù)據(jù)會全部丟失。

會話標識是應用層信息,那么負載均衡要將同一個會話的請求都保存到同一個Web服務器上的話,就需要進行應用層(第7層)的解析,這個開銷比第4層大。

負載均衡器將變成一個有狀態(tài)的節(jié)點,要將會話保存到具體Web服務器的映射。和無狀態(tài)節(jié)點相比,內(nèi)存消耗更大,容災方面也會更麻煩。

Session Replication

Session Replication 的方案則不對負載均衡器做更改,而是在Web服務器之間增加了會話數(shù)據(jù)同步的功能,各個服務器之間通過同步保證不同Web服務器之間的Session數(shù)據(jù)的一致性,如下圖所示。

Session Replication 方案對負載均衡器不再有要求,但是同樣會帶來以下問題:

同步Session數(shù)據(jù)會造成額外的網(wǎng)絡帶寬的開銷,只要Session數(shù)據(jù)有變化,就需要將新產(chǎn)生的Session數(shù)據(jù)同步到其他服務器上,服務器數(shù)量越多,同步帶來的網(wǎng)絡帶寬開銷也就越大。

每臺Web服務器都需要保存全部的Session數(shù)據(jù),如果整個集群的Session數(shù)量太多的話,則對于每臺機器用于保存Session數(shù)據(jù)的占用會很嚴重。

Session 數(shù)據(jù)集中存儲

Session 數(shù)據(jù)集中存儲方案則是將集群中的所有Session集中存儲起來,Web服務器本身則并不存儲Session數(shù)據(jù),不同的Web服務器從同樣的地方來獲取Session,如下圖所示。

相對于Session Replication方案,此方案的Session數(shù)據(jù)將不保存在本機,并且Web服務器之間也沒有了Session數(shù)據(jù)的復制,但是該方案存在的問題在于:

讀寫Session數(shù)據(jù)引入了網(wǎng)絡操作,這相對于本機的數(shù)據(jù)讀取來說,問題就在于存在時延和不穩(wěn)定性,但是通信發(fā)生在內(nèi)網(wǎng),則問題不大。

如果集中存儲Session的機器或集群出現(xiàn)問題,則會影響應用。

Cookie Based

Cookie Based 方案是將Session數(shù)據(jù)放在Cookie里,訪問Web服務器的時候,再由Web服務器生成對應的Session數(shù)據(jù),如下圖所示。

但是Cookie Based 方案依然存在不足:

Cookie長度的限制。這會導致Session長度的限制。

安全性。Seesion數(shù)據(jù)本來是服務端數(shù)據(jù),卻被保存在了客戶端,即使可以加密,但是依然存在不安全性。

帶寬消耗。這里不是指內(nèi)部Web服務器之間的寬帶消耗,而是數(shù)據(jù)中心的整體外部帶寬的消耗。

性能影響。每次HTTP請求和響應都帶有Seesion數(shù)據(jù),對Web服務器來說,在同樣的處理情況下,響應的結果輸出越少,支持的并發(fā)就會越高。

總結

前面四個方案都是可行的,但是對于大型網(wǎng)站來說,Session Sticky和Session數(shù)據(jù)集中存儲是比較好的方案。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • java使用elasticsearch分組進行聚合查詢過程解析

    java使用elasticsearch分組進行聚合查詢過程解析

    這篇文章主要介紹了java使用elasticsearch分組進行聚合查詢過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • java中調(diào)用super的實例講解

    java中調(diào)用super的實例講解

    在本篇文章里小編給大家分享了一篇關于java中調(diào)用super的實例講解內(nèi)容,有興趣的朋友們可以學習下。
    2020-12-12
  • java 多態(tài)與抽象類詳解總結

    java 多態(tài)與抽象類詳解總結

    在面向對象的概念中,所有的對象都是通過類來描繪的,但是反過來,并不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類,而多態(tài)是同一個行為具有多個不同表現(xiàn)形式或形態(tài)的能力
    2021-11-11
  • JAVA中的函數(shù)式接口Function和BiFunction詳解

    JAVA中的函數(shù)式接口Function和BiFunction詳解

    這篇文章主要介紹了JAVA中的函數(shù)式接口Function和BiFunction詳解,JDK的函數(shù)式接口都加上了@FunctionalInterface注解進行標識,但是無論是否加上該注解只要接口中只有一個抽象方法,都是函數(shù)式接口,需要的朋友可以參考下
    2024-01-01
  • Java中用POI實現(xiàn)將數(shù)據(jù)導出到Excel

    Java中用POI實現(xiàn)將數(shù)據(jù)導出到Excel

    這篇文章主要介紹了Java中用POI實現(xiàn)將數(shù)據(jù)導出到Excel,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • java fastJson轉JSON兩種常見的轉義操作

    java fastJson轉JSON兩種常見的轉義操作

    在實際開發(fā)中,我們有時需要將特殊字符進行轉義,本文主要介紹了java fastJson轉JSON兩種常見的轉義操作,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 了解Java虛擬機JVM的基本結構及JVM的內(nèi)存溢出方式

    了解Java虛擬機JVM的基本結構及JVM的內(nèi)存溢出方式

    這篇文章主要介紹了Java虛擬機JVM的基本結構及JVM的內(nèi)存溢出方式,涉及到Java內(nèi)存分配相關方面的知識,需要的朋友可以參考下
    2016-01-01
  • Mybatis實體類和表映射問題(推薦)

    Mybatis實體類和表映射問題(推薦)

    在項目開發(fā)中我們經(jīng)常會遇到表中的字段名和表對應實體類的屬性名稱不一定都是完全相同的。下面小編給大家介紹下這種情況下如何解決字段名與實體類屬性名不相同的沖突問題。下面小編給大家?guī)砹薓ybatis實體類和表映射的解決方法,小伙伴們一起學習吧
    2016-09-09
  • Java實現(xiàn)數(shù)獨小游戲

    Java實現(xiàn)數(shù)獨小游戲

    這篇文章主要為大家詳細介紹了Java實現(xiàn)數(shù)獨小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 設置JavaScript自動提示-Eclipse/MyEclipse

    設置JavaScript自動提示-Eclipse/MyEclipse

    自動提示需要2個組件,分別是:ext-4.0.2a.jsb2||spket-1.6.16.jar,需要的朋友可以參考下
    2016-05-05

最新評論