自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Tomcat負(fù)載均衡的session和容錯(cuò)

網(wǎng)絡(luò) 網(wǎng)絡(luò)優(yōu)化 網(wǎng)絡(luò)運(yùn)維
本文介紹了Tomact中的負(fù)載均衡的一些相關(guān)性能,這里面我們主要介紹了它的容錯(cuò)能力和session的部分,主要針對(duì)這兩方面進(jìn)行了分析。

對(duì)于tomact的負(fù)載均衡,里面的問(wèn)題很多都值得我們研究,這里我們不在討論它的設(shè)置內(nèi)容,而是討論它的一些性能問(wèn)題。這里面,我們主要重點(diǎn)說(shuō)容錯(cuò)和session的相關(guān)知識(shí)。這也是為我們了解程序系統(tǒng)必須知道的內(nèi)容。

◆Tomcat的負(fù)載均衡

先前版本的tomcat并沒(méi)有提供負(fù)載均衡的能力。集成apache web server和tomcat servlet container就是一個(gè)不錯(cuò)的處理web請(qǐng)求的負(fù)載均衡集群。在Apache Tomcat中,被稱(chēng)為T(mén)omcat Worker的Tomcat實(shí)例被配置來(lái)實(shí)現(xiàn)負(fù)載均衡。

Tomcat5提供三種方法來(lái)實(shí)現(xiàn)負(fù)載均衡:

分別是用JK本地連接器,用Apache2的mod_proxy和mod_rewrite,或者用balancer web app。

我們重點(diǎn)使用第三種,使用balancer web application來(lái)重定向web請(qǐng)求到集群內(nèi)的各個(gè)節(jié)點(diǎn)。這個(gè)負(fù)載均衡的應(yīng)用是基于規(guī)則的。使用servlet filter機(jī)制重定向進(jìn)入的web請(qǐng)求到下一個(gè)有效的集群成員上。servlet filter在servlet2.3規(guī)范中有詳細(xì)的介紹。過(guò)濾器(servletfilter)可以在web應(yīng)用中負(fù)責(zé)多種不同的任務(wù)。例如JAAS認(rèn)證,加密,記錄日志和審核,數(shù)據(jù)壓縮,XSLT過(guò)濾器轉(zhuǎn)換XML內(nèi)容等等。就如Tomcat均衡器網(wǎng)站講述的那樣,這個(gè)均衡器應(yīng)用并非設(shè)計(jì)用來(lái)替代其他的強(qiáng)大的負(fù)載均衡機(jī)制。它用簡(jiǎn)單并且易于擴(kuò)展的方法來(lái)重定向交易(traffic)到其他的服務(wù)器上。檢查均衡器應(yīng)用所提供的樣例Java類(lèi),了解均衡器如何用不同的規(guī)則標(biāo)準(zhǔn)來(lái)完成各種不同的任務(wù)。

負(fù)載均衡配置文件(rules.xml)包含不同的規(guī)則和重定向的URLs。balancer filter檢查Rule Chain來(lái)決定將請(qǐng)求重定向到那里,按照rules.xml中指定的順序來(lái)檢查規(guī)則。當(dāng)一條規(guī)則匹配時(shí),過(guò)濾器停止評(píng)估,并且重定向請(qǐng)求到規(guī)則指定的URL上。

◆容錯(cuò)

容錯(cuò)是系統(tǒng)的一種能力,能夠做到系統(tǒng)中的一個(gè)服務(wù)器失效時(shí),另一個(gè)有效的服務(wù)器能夠接管,這對(duì)最終用戶(hù)來(lái)講是透明的。理想的情況是集群服務(wù)監(jiān)測(cè)到集群內(nèi)其中的一個(gè)服務(wù)器失效而不能處理請(qǐng)求時(shí),停止發(fā)送請(qǐng)求到該服務(wù)器。然后周期性的檢查集群中的該成員是否再次生效,如果生效,將再次將其添加到活動(dòng)服務(wù)器節(jié)點(diǎn)池中。

◆Tomcat的容錯(cuò)

Tomcat5并沒(méi)有提供一個(gè)內(nèi)建的失敗重啟機(jī)制來(lái)檢查集群成員的崩潰。希望,未來(lái)的版本能提供這個(gè)功能,用來(lái)發(fā)現(xiàn)集群內(nèi)有效的機(jī)器,確定那些成員能處理進(jìn)來(lái)的請(qǐng)求。

集群解決方案一般提供兩種層次的失敗重啟能力:

請(qǐng)求層次的失敗重啟

如果集群中的一臺(tái)服務(wù)器掛起,所有接下來(lái)的請(qǐng)求將會(huì)被重定向到集群中的其他服務(wù)器。這包含一種heart beat機(jī)制來(lái)保持跟蹤服務(wù)狀態(tài)和避免發(fā)送請(qǐng)求到?jīng)]有回應(yīng)的服務(wù)器上。在我們的集群設(shè)置中,一個(gè)Tomcat實(shí)例扮演著負(fù)載均衡器的角色,處理請(qǐng)求層次上的失敗重啟,并轉(zhuǎn)發(fā)web請(qǐng)求到集群中的其他節(jié)點(diǎn)。

session層次的失敗重啟

一個(gè)web客戶(hù)可以擁有一個(gè)由HTTP服務(wù)器維持的session。如果集群中的其中一臺(tái)服務(wù)器掛起,集群中的另一臺(tái)服務(wù)器能接手前一臺(tái)服務(wù)器的session,保持連續(xù)性。這需要在集群內(nèi)復(fù)制session數(shù)據(jù)。擁有session復(fù)制能力的Tomcat集群能處理session層次的失敗重啟。

◆session狀態(tài)的持久化

失敗重啟和負(fù)載均衡都需要集群內(nèi)不同的服務(wù)器之間能進(jìn)行session狀態(tài)的復(fù)制。當(dāng)原來(lái)的服務(wù)器失敗時(shí),session狀態(tài)復(fù)制允許客戶(hù)無(wú)縫的從集群中的另外一臺(tái)服務(wù)器上取得session信息。這個(gè)狀態(tài)可以包括系統(tǒng)狀態(tài)和/或應(yīng)用狀態(tài)(應(yīng)用狀態(tài)包含存儲(chǔ)在HTTPsession中的對(duì)象和數(shù)據(jù))。session復(fù)制的主要目的是當(dāng)集群成員崩潰、為應(yīng)用升級(jí)或者系統(tǒng)維護(hù)停止工作時(shí)能夠不丟失任何session的內(nèi)容。

談到session的持續(xù)化,有一個(gè)簡(jiǎn)單的集群方案,集群成員不知道其他成員的session狀態(tài)。在這個(gè)方案中,用戶(hù)session完全在一臺(tái)服務(wù)器上,由負(fù)載均衡器來(lái)選擇。這叫做粘性session(或者叫sessionaffinity)。因此seesion數(shù)據(jù)保存在接收web請(qǐng)求的集群成員上。#p#

從另外一方面來(lái)將,集群可以以這樣的一種方式實(shí)現(xiàn),每一個(gè)集群成員完全明白其他成員的session狀態(tài),通過(guò)session狀態(tài)的周期性傳播到其他備用集群成員。這種session被稱(chēng)為復(fù)制session。

有三種方法實(shí)現(xiàn)session的持久化:

內(nèi)存對(duì)內(nèi)存的復(fù)制;

文件系統(tǒng)session持久化,session信息從一個(gè)中央文件系統(tǒng)讀寫(xiě);

數(shù)據(jù)庫(kù)session持久化,session數(shù)據(jù)存儲(chǔ)在一個(gè)JDBC數(shù)據(jù)存儲(chǔ)器。

在內(nèi)存session持久化中,當(dāng)HTTPsession中的獨(dú)立的對(duì)象改變,這個(gè)對(duì)象將會(huì)被序列化到其他的備用機(jī)器上,而在數(shù)據(jù)庫(kù)session持續(xù)化中,當(dāng)session中的任何對(duì)象改變時(shí),session中的所有對(duì)象將被一起序列化。

數(shù)據(jù)庫(kù)/文件系統(tǒng)session持續(xù)化的缺點(diǎn)是限制了當(dāng)在HttpSession存儲(chǔ)大型或大量對(duì)象時(shí)的可伸縮性。每一次用戶(hù)增加一個(gè)對(duì)象到HttpSession中,session中所有的對(duì)象都會(huì)被序列化并被寫(xiě)到數(shù)據(jù)庫(kù)或者共享文件系統(tǒng)中。

◆tomcat中的session復(fù)制

當(dāng)前Tomcat版本的session復(fù)制是一種all-to-all的復(fù)制,即在任何時(shí),session中的屬性被傳播到集群的所有成員。當(dāng)集群小的情況下,這個(gè)算法是高效的,為應(yīng)付大型集群的情況,Tomcat的下一個(gè)版本將提供主-從復(fù)制,session將僅僅被保存在一個(gè)或者兩個(gè)備份服務(wù)器上。

在tomcat中,有三種類(lèi)型的session復(fù)制機(jī)制:

內(nèi)存中復(fù)制,使用Tomcat5自帶的SimpleTcpCluster(在org.apache.catalina.cluster.tcp包中,文件為server/lib/catalina-cluster.jar);

session持久化,保存session在一個(gè)共享數(shù)據(jù)庫(kù)上(org.apache.catalina.session.JDBCStore);

在共享的文件系統(tǒng)上保存session的狀態(tài)(org.apache.catalina.session.FileStore,partofcatalina-optional.jar)。

責(zé)任編輯:佟健 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-05-06 15:04:51

Tomcat負(fù)載均衡

2010-04-23 10:03:42

tomcat負(fù)載均衡技術(shù)

2010-04-20 22:36:52

負(fù)載均衡配置

2010-05-04 13:23:55

Tomcat負(fù)載均衡

2010-04-20 22:19:29

tomcat負(fù)載均衡配

2014-07-28 11:37:49

NginxTomcat

2012-11-06 16:51:29

nginx負(fù)載均衡

2010-04-20 21:27:28

tomcat負(fù)載均衡配

2010-04-22 23:47:55

tomcat負(fù)載均衡設(shè)

2011-12-02 22:51:46

Nginx負(fù)載均衡

2019-06-19 08:22:56

負(fù)載均衡網(wǎng)絡(luò)協(xié)議服務(wù)器

2019-10-31 15:41:45

NginxTomcat負(fù)載均衡

2019-11-12 13:56:15

NginxTomcat負(fù)載均衡

2011-04-18 10:04:24

apachetomcat

2018-09-13 08:47:09

Tomcat負(fù)載均衡服務(wù)器

2020-03-11 19:38:39

Tomcat負(fù)載均衡配置

2010-05-10 14:35:36

TRUNK負(fù)載均衡

2012-10-19 11:31:25

全局負(fù)載均衡本地負(fù)載均衡

2017-07-03 08:08:25

負(fù)載均衡分類(lèi)

2010-04-28 11:35:25

集群負(fù)載均衡
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)