分布式相關

如何實現(xiàn)多個應用的Session共享

使用Redis緩存用戶session


image.png

Spring 為 Spring Session 和 Redis 的集成提供了組件:spring-session-data-redis

@RequestMapping(value = "/index")
public String index (HttpServletRequest request){
    String msg="首頁內容";
    Object user= request.getSession().getAttribute("user");
    if (user==null){
        msg="請先登錄!";
    }
    return msg;

分布式的CAP

Consistency (一致性):

更新操作成功并返回客戶端后,所有節(jié)點在同一時間的數(shù)據(jù)完全一致,這就是分布式的一致性。

Availability (可用性):

服務一直可用,而且是正常響應時間。好的可用性主要是指系統(tǒng)能夠很好的為用戶服務,不出現(xiàn)用戶操作失敗或者訪問超時等用戶體驗不好的情況。

Partition Tolerance (分區(qū)容錯性):

即分布式系統(tǒng)在遇到某節(jié)點或網(wǎng)絡分區(qū)故障的時候,仍然能夠對外提供滿足一致性或可用性的服務。

這三者不可能同時滿足:
假設服務器N1和N2之間的網(wǎng)絡斷開了,但我們仍要支持這種網(wǎng)絡異常,也就是滿足分區(qū)容錯性(一般分布式系統(tǒng)都是需要滿足P)。
當有用戶向N1發(fā)送數(shù)據(jù)更新請求,那N1中的數(shù)據(jù)DB0將被更新為DB1,由于網(wǎng)絡是斷開的,N2中的數(shù)據(jù)庫仍舊是DB0;
如果這個時候,有用戶向N2發(fā)送數(shù)據(jù)讀取請求,由于數(shù)據(jù)還沒有進行同步,應用程序沒辦法立即給用戶返回最新的數(shù)據(jù)DB1,怎么辦呢?
有二種選擇,第一,犧牲數(shù)據(jù)一致性,響應舊的數(shù)據(jù)DB0給用戶;第二,犧牲可用性,阻塞等待,直到網(wǎng)絡連接恢復,數(shù)據(jù)更新操作完成之后,再給用戶響應最新的數(shù)據(jù)DB1。

可用性高于一致性的場景:發(fā)布一張網(wǎng)頁到 CDN,多個服務器有這張網(wǎng)頁的副本。后來發(fā)現(xiàn)一個錯誤,需要更新網(wǎng)頁,這時只能每個服務器都更新一遍。

一般來說,網(wǎng)頁的更新不是特別強調一致性。

一致性高于可用性的場景:最典型的就是分布式數(shù)據(jù)庫,如Redis、HBase

RPC和微服務概念

https://blog.csdn.net/weixin_34341117/article/details/92389162

ngnix負載均衡

負載均衡的作用

1、轉發(fā)功能
按照一定的算法【權重、輪詢】,將客戶端請求轉發(fā)到不同應用服務器上,減輕單個服務器壓力,提高系統(tǒng)并發(fā)量。

2、故障移除
通過心跳檢測的方式,判斷應用服務器當前是否可以正常工作,如果服務器期宕掉,自動將請求發(fā)送到其他應用服務器。(keepalive_timeout)

3、恢復添加
如檢測到發(fā)生故障的應用服務器恢復工作,自動將其添加到處理用戶請求隊伍中。

Nginx 的 upstream目前支持的分配算法:
1)、輪詢 ——1:1 輪流處理請求(默認)
每個請求按時間順序逐一分配到不同的應用服務器,如果應用服務器down掉,自動剔除,剩下的繼續(xù)輪詢。
2)、權重 ——you can you up
通過配置權重,指定輪詢幾率,權重和訪問比率成正比,用于應用服務器性能不均的情況。
3)、ip_哈希算法
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個應用服務器,可以解決session共享的問題。

upstream tomcatserver1 {  
    server 192.168.72.49:8080 weight=3;  
    server 192.168.72.49:8081;  
    }   
  
 server {  
        listen       80;  
        server_name  8080.max.com;  
        #charset koi8-r;  
        #access_log  logs/host.access.log  main;  
        location / {  
            proxy_pass   http://tomcatserver1;  
            index  index.html index.htm;  
        }  
     }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 分布式:一個業(yè)務分拆多個子業(yè)務,部署在不同的服務器上 集群:同一個業(yè)務,部署在多個服務器上 集群 集群模式在程序猿...
    落魄PHP女程序員閱讀 999評論 0 4
  • 概念 分布式系統(tǒng)是一個硬件或軟件組件分布在不同的網(wǎng)絡計算機上,彼此之間僅僅通過消息傳遞進行通信和協(xié)調系統(tǒng)?!斗?..
    秋風落葉黃閱讀 466評論 0 0
  • 網(wǎng)絡互聯(lián) 是指將兩個以上的通信網(wǎng)絡通過一定的方法,用一種或多種網(wǎng)絡通信設備相互連接起來,以構成更大的網(wǎng)絡系統(tǒng)。網(wǎng)絡...
    孤海alone閱讀 492評論 0 1
  • 1、請解釋下cap理論? cap指的是分布式系統(tǒng)中的一致性(Consistency)、可用性(Availabili...
    becooner閱讀 142評論 0 0
  • 草原上的狗尾巴草,是一種非常奇特的草。因為它莖的頂端長有細細的毛,像狗的尾巴,所以叫它“狗尾巴草”。 狗尾巴草長在...
    Terry的文字世界閱讀 915評論 1 3

友情鏈接更多精彩內容