1、Tomcat叢集
Tomcat叢集的問題之一是如何處理Session,Session是有狀態的,請求到了Tomcat,後續流傳是要根據上下文(Context)來進行的。我們可以改造應用改為無狀態的,但是這個對應用的要求比較高,或者有些就不可能這樣實現。
2、Session處理
1)比較常規的做法是把Session存到Redis裡面,叢集裡面的每臺主機都能訪問。
2)把每臺主機的Session複製給其他的主機。
3、Tomcat原生處理方式
Tomcat原生自帶的處理方式就是把每臺機器的Session複製給其他主機,或者優化處理了一下,指定一臺備用機器,每臺主機把Session都複製到備用機器,這樣也能把Session同步到每一臺機器
4、具體實現方式
這裡面用到了網路中的組播技術,要理解組播,我們先看一下什麼是單播、廣播。組播是為了解決單播和廣播的問題而出現的。
1)單播在傳送者和每一接收者之間實現點對點網路連線。如果一臺傳送者同時給多個的接收者傳輸相同的資料,也必須相應的複製多份的相同資料包。如果有大量主機希望獲得資料包的同一份拷貝時,將導致傳送者負擔沉重、延遲長、網路擁塞;為保證一定的服務質量需增加硬體和頻寬。
2)廣播指在IP子網內廣播資料包,所有在子網內部的主機都將收到這些資料包。廣播意味著網路向子網每一個主機都投遞一份資料包,不論這些主機是否樂於接收該資料包。所以廣播的使用範圍非常小,只在本地子網內有效,通過路由器和網路裝置控制廣播傳輸。
3)組播在傳送者和每一接收者之間實現點對多點網路連線。如果一臺傳送者同時給多個接收者傳輸相同的資料,也只需複製一份相同的資料包。它提高了資料傳送效率,減少了骨幹網路出現擁塞的可能性。組播解決了單播和廣播方式效率低的問題。當網路中的某些使用者需求特定資訊時,組播源(即組播資訊傳送者)僅傳送一次資訊,組播路由器藉助組播路由協議為組播資料包建立樹型路由,被傳遞的資訊在儘可能遠的分叉路口才開始複製和分發。
5、總結
感覺Tomcat選擇組播來實現叢集是一種比較實用的考慮,價效比挺高的,不需要額外的元件來支援,低配置兩臺機器就可以實現,基於已有的基礎實施,網路中已經實現了組播功能,適合比較小型的,不是高併發的系統。