天天看點

分布式系統遇到的挑戰

分布式系統遇到的問題

1.分布式Session:

1.Session粘滞:

  即粘性Session,當使用者通路叢集中某台機器後,強制指定後續所有請求都落到此台機器上。

  使用場景:機器數适中,對穩定性要求不是非常苛刻。

  優點:實作簡單,配置友善,沒有額外網絡開銷。

  缺點:網絡中有機器Down掉時,使用者Session會丢失,容易造成單點故障。

  方案:Nginx的ip_hash負載均衡方案

2.Session複制

  将一台機器上的Session資料廣播複制到叢集中其餘機器上。

  使用場景:機器較少,網絡流量較小

  優點:實作簡單,配置較少,當網絡中有機器Down掉時不影響使用者通路。

  缺點:廣播複制到其餘機器有一定延遲,帶來一定網絡開銷

  方案:開源方案Tomcat-Redis-Session-manager,暫不支援Tomcat8

3.緩存集中式管理

  将Session存入分布式緩存叢集中的某台機器上,當使用者通路不同節點時,先從緩存中拿Session資訊

  使用場景:叢集中機器數較多,網絡環境複雜

  優點:可靠性好

  缺點:實作複雜,穩定性依賴于緩存的穩定性,Session資訊方入緩存時要有合理的政策寫入

  方案:開源方案Spring-Session,也可以自己實作,主要重寫HttpServletRequestWrapper中的getSession方法。

4.分布式配置中心

  在分布式系統中,一次建構,釋出,上線是非常重要的一個過程,它不像單機時代那樣重新開機一台機器,一個程序就可以了,在分布式系統中,它涉及到将軟體包(例如war包)分發到可能幾百台機器上,然後将幾百台機器上的應用一一重新開機,這麼一個過程需要很長的時間。那麼如何在不停叢集的情況下

繼續閱讀