對於不徹底瞭解Apache Tomcat集羣的人來講彷佛有些不知所措,可是實際上,經過在優銳課的學習後就知道,它並不那麼複雜。能夠將羣集定義爲結合使用負載平衡,某種形式的會話複製以及多個服務器「工做人員」來處理平衡的負載。java
Tomcat集羣用於解決的一些問題包括如下內容。首先,當服務器接收到過多的傳入請求時,它就沒法有效地處理它們。其次,當有狀態應用程序須要時(若是服務器發生故障),須要一種保留會話數據的方法。第三,開發人員想要一種不中斷服務便可更改配置或更新其應用程序的方法。這些是咱們須要使用Tomcat Cluster的主要緣由。可是,有沒有使用特別好的Tomcat羣集的正確方法?redis
Redis是一個內存中開源數據項目。實際上,它是當前最流行的內存數據庫。特別是,Redisson能夠用做Redis Java客戶端。Redisson使用Redis來受權Java應用程序供公司使用。它旨在使你的工做更輕鬆,並更有效地開發分佈式Java應用程序。Redisson提供由Redis支持的分佈式Java對象和服務。數據庫
Redisson的Tomcat Session Manager容許你在Redis中存儲Apache Tomcat的會話。它使你可以在Tomcat服務器羣集之間分配請求。這些都是在Redis支持的非粘性會話管理中完成的。替代選項可能會序列化整個會話。可是,使用此特定的Redis Tomcat Manager,每一個會話屬性在每次調用時都會寫入Redis。得益於此優點,Redisson Session Manager在存儲效率和優化寫入方面擊敗了其餘基於Redis的管理器。以此方式,Tomcat會話管理以最理想的方式使用。編程
將RedissonSessionManager
添加到tomcat/conf/context.xml
中緩存
<Manager className="org.redisson.tomcat.RedissonSessionManager"
configPath="${catalina.base}/redisson.conf" readMode="MEMORY" updateMode="DEFAULT"/>
readMode
——讀取屬性模式。有兩種模式可用:tomcat
MEMORY
——將屬性存儲在本地Tomcat Session和Redis中。進一步的會話更新使用基於Redis的事件傳播到本地Tomcat會話。默認模式。服務器
REDIS
——僅將屬性存儲到Redis中。架構
updateMode
——屬性更新模式。有兩種模式可用:maven
DEFAULT
——會話屬性僅經過setAttribute方法存儲到Redis中。默認模式。分佈式
AFTER_REQUEST
——每次請求後,全部會話屬性都存儲在Redis中。
將兩個jars複製到TOMCAT_BASE/lib
目錄中
o for Tomcat 6.x: redisson-tomcat-6-3.10.6.jar
o for Tomcat 7.x: redisson-tomcat-7-3.10.6.jar
o for Tomcat 8.x: redisson-tomcat-8-3.10.6.jar
o for Tomcat 9.x: redisson-tomcat-9-3.10.6.jar
使用Redis Tomcat Manager進行Tomcat羣集的緣由是,若是你指望大量的Web流量,即你的站點是否正在擴展,或者你只是想得到更多幫助以增長負載,從而提升可用性 。
基於Redis的Tomcat會話管理不是Redisson可以提供的惟一功能。完成集羣項目後,請檢查它的其餘好處。Redisson能夠提供分佈式Java應用程序。它提供了不一樣的緩存實現,例如JCache API,Hibernate 2nd Level Cache和Spring Cache。它支持數據庫的讀/寫緩存,ExecutorService和ScheduledExecutorService的分佈式實現,以及基於Java的MapReduce編程,以支持Redis中存儲的「大量數據」。
整體而言,Redisson能夠作不少事情。Tomcat會話管理看似不堪重負,但能夠經過Redisson輕鬆解決。另外,你可能還會發現許多其餘功能,這些功能能夠知足你的需求。
感謝閱讀!
最後奉上近期整理出來的一套完整的java架構思惟導圖,分享給你們對照知識點參考學習。