前段時間一直在學習tomcat的集群,tomcat5已經配置成功了,無奈到了tomcat6上,總是不成功,出現的問題是乙個tomcat無法發現另外乙個tomcat,今天又在網上看了下,發現了乙個新的方法來實現集群。
集群無非就是實現兩個關鍵點,乙個是負載的均衡,乙個是session的複製。
負載的均衡通過apache很容易分配,前面也有介紹,就不細說了。
tomcat6的session複製,按照官網上說的tomcat5配置成功了,到了6就總是不成功。
下面說下新方法
1.編輯context.xml檔案,新增
2.建立乙個資料庫來儲存session
此兩處的引數說明如下:
drivername和connectionurl就不說了
sessiontable是指定資料庫的表名
sessionidcol指定儲存sessionid的欄位名稱
sessiondatacol指定儲存session資料的欄位名稱
sessionvalidcol指定儲存session是否失效的欄位名稱
sessionmaxinactivecol指定儲存session失效時間的欄位名稱
sessionlastaccessedcol指定儲存session最後訪問時間的欄位名稱
然後,將另外乙個tomcat的配置檔案配置成和以上相同,即可實現tomcat的session共享
最後一點,不要忘記將mysql的資料庫連線jar包拷貝到兩個tomcat的lib目錄下
集群完成,經過測試,關掉乙個tomcat,另外乙個tomcat仍然可以獲取到以前的session,但是,有一點是我擔心的,session的建立和銷毀會不會對資料庫產生太大的壓力?
另外在關閉和重啟tomcat時, tomcat 會試圖 serialize存在的session資源. 如果 sessions中相關的物件沒有實現 serializable 介面, 就會出現cannot serialize session attribute *** for 異常.
如果你不想看到該異常, 也不想儲存session. 那麼你可以在專案部署描述檔案中(如. test.xml,)(instead of just exploding the war) 的 tags中間 加上 :
這樣 tomcat 在關閉的時候就不會儲存session資源了.
如果你確實擔心資料庫的壓力,那麼可以使用將資料庫的引擎改為記憶體表,但是記憶體表不支援blob,所以你得盡量少寫一些session資料,然後使用varbinary
60000為位元組長度,大約為50kb。
如果你的應用向session中寫入的資料過多,你得考慮下。
通過以上,你的tomcat已經集群了,但是在應用層面上,依然有一些問題,需要來解決。
主要有以下幾個方面
1.集群的伺服器檔案如何同步?
你可以考慮用nfs來實現
2.集群的應用如果使用了快取,那麼快取如何同步?
這個目前我沒有好的辦法,或者你可以將不對一些資料使用快取
3.如果你的應用使用了quartz,那麼定時任務會被執行多次
這個新版本的quartz實現集群了,不過配置有些複雜,或者你可以單獨用乙個應用來跑quartz
目前我們自己寫了乙個基於時間戳的定時方案,但尚未經過集群環境的測試,不好放出來給大家使用。
通過資料庫引擎來加速MySQL資料庫
如果你是個賽車手,並且按一下按鈕就能夠立即更換引擎而不需要把車開到車庫裡去換,那會是什麼感覺呢?mysql資料庫為開發人員所做的就好像是按按鈕換引擎 它讓你選擇資料庫引擎,並給你一條簡單的途徑來切換它。mysql的自帶引擎肯定是夠用了,但是在有些情況下,其他的引擎可能要比手頭所用更適合完成任務。如果...
HeePHP通過資料庫讀取資料
從資料庫讀取資料 讀取多條記錄 讀取所有記錄 list table users all 根據條件讀取多條記錄 list table product where color red select 根據條件讀取多條記錄後分頁 list table product where size l page 讀取...
select下拉列表實現通過資料庫查詢來設定預設值
查詢網上各種資料要不比較難理解,要麼有問題,現有一種簡單通俗的理解方法 思路 讀取資料庫資料1,資料2需用到select選擇選單,但是又想每次檢視是都顯示讀資料庫的預設資訊 demo tr id tr td td td td td td td select id select option valu...