freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

揭開(kāi)j2ee集群的神秘面紗-資料下載頁(yè)

2025-06-26 04:43本頁(yè)面
  

【正文】 法不是等冪的,在相同方法上的兩次調(diào)用可能會(huì)兩次修改系統(tǒng)的狀態(tài),而使得系統(tǒng)出現(xiàn)不一致的情形。你可能想所有在事務(wù)中的方法都是等冪的,畢竟,如果錯(cuò)誤發(fā)生,事務(wù)將被回滾,事務(wù)狀態(tài)的改變都將被復(fù)位。但事實(shí)上事務(wù)的邊界可能不包括所有的遠(yuǎn)程方法調(diào)用過(guò)程。如果事務(wù)已經(jīng)在服務(wù)器上提交了而返回給客戶端時(shí)網(wǎng)絡(luò)崩潰怎么辦呢?客戶端不知道服務(wù)器的事務(wù)是否是成功了。在一些應(yīng)用程序中,將所有的方法都做成等冪的是不可能的。這樣,你只能通過(guò)失效轉(zhuǎn)移減少錯(cuò)誤,而不是避免它們。拿在線商店為例,假設(shè)每臺(tái)服務(wù)器可以同時(shí)處理100個(gè)在線用戶的請(qǐng)求,當(dāng)一臺(tái)服務(wù)器失效了,沒(méi)有失效轉(zhuǎn)移的解決方案將丟失100個(gè)用戶的會(huì)話數(shù)據(jù)并激怒這些用戶。而有失效轉(zhuǎn)移的解決方案中,當(dāng)失效發(fā)生的時(shí)候有20個(gè)用戶正在處理請(qǐng)求,這樣20個(gè)用戶將被失效激怒。而其他80個(gè)用戶正處于思考時(shí)間或在兩個(gè)方法調(diào)用之間,這些用戶可以透明地獲得失效轉(zhuǎn)移。這樣,你就需做以下的考慮:l激怒20個(gè)用戶和激怒100個(gè)用戶造成影響的區(qū)別。l采用失效轉(zhuǎn)移和不采用失效轉(zhuǎn)移產(chǎn)品成本的區(qū)別獨(dú)立應(yīng)用可以透明的遷移到集群結(jié)構(gòu)中——否定盡管一些供應(yīng)商宣稱他們的J2EE產(chǎn)品有這樣的靈活性。不要相信他們!事實(shí)你要在開(kāi)始系統(tǒng)設(shè)計(jì)時(shí)就要準(zhǔn)備集群,而這將影響開(kāi)發(fā)和測(cè)試的所有階段。HttpSession在集群環(huán)境中,如我前面提到的,使用HTTPSession有很多限制,這取決于你的應(yīng)用程序服務(wù)器采用了那種會(huì)話失效轉(zhuǎn)移的機(jī)制。第一個(gè)重要的限制就是所有保存的HTTPSession中的對(duì)象必須是可序列化的,這將限制設(shè)計(jì)和應(yīng)用程序結(jié)構(gòu)。一些設(shè)計(jì)模式和MVC框架會(huì)用HTTPSession保存一些不序列化的對(duì)象(如ServletContext,EJB本地接口和WEB服 務(wù)引用),這樣的設(shè)計(jì)不能在集群中工作。第二,對(duì)象的序列的反序列化對(duì)性能的影響很大,特別是數(shù)據(jù)庫(kù)保存的方式。在這樣的環(huán)境中,應(yīng)該避免在會(huì)話中保存大 的或是眾多的對(duì)象。如果你采用了內(nèi)存復(fù)制的方式,如前所述你必須小心在會(huì)話中屬性的交叉引用。其他在集群環(huán)境中的主要區(qū)別是在會(huì)話不管任何屬性修改,你必 須調(diào)用“setAttribute()”方法。這個(gè)方法調(diào)用在獨(dú)立的系統(tǒng)中是可選的。這個(gè)方法的目的是區(qū)別已修改的屬性和那些沒(méi)用到屬性,這樣系統(tǒng)可以只為失效轉(zhuǎn)移備份必要的數(shù)據(jù),從而提高性能。緩存我經(jīng)歷過(guò)的大多數(shù)J2EE項(xiàng)目都用了緩存來(lái)提高性能,同時(shí)流行的應(yīng)用程序服務(wù)器也都提供了不同程度的緩存用來(lái)加快應(yīng)用程序的速度。但這些緩存都是為那些典型的獨(dú)立環(huán)境設(shè)計(jì)的,只能在單JVM實(shí)例中工作。我們需要緩存是因?yàn)橐恍?duì)象很“重”,創(chuàng)建它需花費(fèi)大量的時(shí)間和資源。因此我們維護(hù)了對(duì)象池用于重用這些對(duì)象,而不需要在后面創(chuàng)建。我們只有當(dāng)維護(hù)緩存比創(chuàng)建對(duì)象更廉價(jià)時(shí)才能獲得性能的提高。在集群環(huán)境,每個(gè)JVM實(shí)例都要維護(hù)一份緩存的拷貝,這些拷貝必須同步以維持所有服務(wù)器實(shí)例狀態(tài)的一致性。有時(shí)這種類型的同步會(huì)比沒(méi)有緩存帶來(lái)更糟的性能。Static變量當(dāng)我們?cè)O(shè)計(jì)J2EE應(yīng)用程序時(shí),在架構(gòu)上經(jīng)常會(huì)使用一些設(shè)計(jì)模式。這些如“Singleton”的設(shè)計(jì)模式會(huì)用到靜態(tài)變量來(lái)在多對(duì)象之間共享狀態(tài)。這種方式在單服務(wù)中工作得很好,但在集群環(huán)境將失效。集群中的每個(gè)實(shí)例都會(huì)在它的JVM實(shí) 例中維護(hù)一份靜態(tài)變量的拷貝,這樣就破壞了模式的機(jī)制。一個(gè)使用靜態(tài)變量的例子就是用它來(lái)保持在線用戶數(shù)。用靜態(tài)變量來(lái)保存在線用戶數(shù)是一個(gè)很簡(jiǎn)單的辦 法,當(dāng)用戶進(jìn)入或離開(kāi)時(shí)就增加和減少它。這種方式在單服務(wù)器中絕對(duì)是好的,但在集群環(huán)境將失效。在集群中更好的方式是將所有狀態(tài)保存到數(shù)據(jù)庫(kù)。外部資源盡管J2EE規(guī)范不支持,但為各種目的仍然會(huì)用外部I/O的操作。例如,一些應(yīng)用會(huì)使用文件系統(tǒng)來(lái)保存用戶上傳的文件,或是創(chuàng)建一個(gè)動(dòng)態(tài)配置的XML文件。在集群環(huán)境是沒(méi)有辦法來(lái)在其他實(shí)例之間來(lái)復(fù)制這些文件的。為了在集群中工作,辦法是用數(shù)據(jù)庫(kù)作為外部文件的存放點(diǎn),另外也可以使用SAN(存儲(chǔ)區(qū)域網(wǎng),StorageAreaNetwork)作為存放點(diǎn)。特殊服務(wù)一 些特殊的服務(wù)只在獨(dú)立的環(huán)境中才有意義,定時(shí)服務(wù)就一個(gè)很好例子,這種服務(wù)可以在一個(gè)固定的間隔時(shí)間有規(guī)律的觸發(fā)。定時(shí)服務(wù)常用于執(zhí)行一些自動(dòng)化管理任 務(wù)。如日志文件滾動(dòng),系統(tǒng)數(shù)據(jù)備份,數(shù)據(jù)庫(kù)一致性檢查和冗余數(shù)據(jù)清理等。一些基于事件的服務(wù)也很難被遷移到集群環(huán)境中。初始化服務(wù)就是個(gè)好例子,它只在整 個(gè)系統(tǒng)啟動(dòng)時(shí)才發(fā)生。郵件通知服務(wù)也一樣,它在一些警告條件下觸發(fā)。這些服務(wù)是被事件而不是被請(qǐng)求觸發(fā)的,而且只被執(zhí)行一次。這些服務(wù)使得負(fù)載均衡和失效轉(zhuǎn)移在集群中沒(méi)多少意義。一些產(chǎn)品準(zhǔn)備了這些服務(wù),如Jboss使用了“集群?jiǎn)卫O(shè)施”來(lái)協(xié)調(diào)所有實(shí)例,保證執(zhí)行這些服務(wù)一次且僅有一次?;谀闼x擇的平臺(tái),一些特殊的服務(wù)可能會(huì)是把你的應(yīng)用遷移到集群結(jié)構(gòu)中的障礙。分布式結(jié)構(gòu)比并置結(jié)構(gòu)更靈活——不一定J2EE技術(shù),尤其是EJB,天生就是用來(lái)做分布式計(jì)算。解耦業(yè)務(wù)功能,重用遠(yuǎn)程組件,這些使得多層應(yīng)用非常流行。但是我們不能將所有的東西都分布。一些J2EE架構(gòu)師認(rèn)為Web層與EJB層并置得越近越好。這些計(jì)論后面會(huì)繼續(xù)。先讓我解釋一下。圖20分布式結(jié)構(gòu)如圖20所示,這是一個(gè)分布式結(jié)構(gòu)。當(dāng)請(qǐng)求來(lái)了,負(fù)載均衡器將請(qǐng)求分發(fā)到不同服務(wù)器中的不同WEB容器,如果請(qǐng)求包含了EJB調(diào)用,WEB容器將重發(fā)EJB調(diào)用到不同的EJB容器。這樣,請(qǐng)求將被負(fù)載均衡和失效轉(zhuǎn)移兩次。一些人看分布式結(jié)構(gòu),他們會(huì)指出:l第二次負(fù)載均衡沒(méi)有必要,因?yàn)樗粫?huì)使任務(wù)分配更平坦。每個(gè)服務(wù)器實(shí)例都有它們自己的WEB容器和EJB容器。把EJB容器用來(lái)處理來(lái)自其他實(shí)例WEB容器的請(qǐng)求比只在服務(wù)器內(nèi)部調(diào)用并沒(méi)有什么優(yōu)勢(shì)。l第二次失效轉(zhuǎn)移沒(méi)有必要,因?yàn)樗荒苁歉呖捎眯?。多?shù)供應(yīng)商實(shí)現(xiàn)J2EE服務(wù)器都會(huì)在同一服務(wù)器中運(yùn)行的WEB容器和EJB容器放在一個(gè)JVM實(shí)例中。如果EJB容器失效了,多數(shù)情況下在同一個(gè)JVM中的WEB容器也將同時(shí)失效。l性能將下降。想像一下對(duì)你的應(yīng)用的一次調(diào)用包含一組對(duì)EJB的調(diào)用,如果你負(fù)載均衡了這些EJB,這將跨越每個(gè)服務(wù)器實(shí)例,導(dǎo)致許多不必要的服務(wù)器到服務(wù)器的交互。還有,如果這個(gè)方法在事務(wù)范圍內(nèi),那么事務(wù)邊界將包含許多服務(wù)器實(shí)例,這將嚴(yán)重影響性能。實(shí)際上在運(yùn)行期,多數(shù)的供應(yīng)商(包括SunJES,WebLogic和Jboss)都會(huì)優(yōu)化EJB調(diào)用機(jī)制,使請(qǐng)求首先選擇同一個(gè)服務(wù)器中的EJB容器。這樣,如圖21所示,我們只在第一層(WEB層)做負(fù)載均衡,然后調(diào)用相同服務(wù)器上的服務(wù)。這種結(jié)構(gòu)我們稱之為并置結(jié)構(gòu)。技術(shù)上說(shuō),并置結(jié)構(gòu)是分布式結(jié)構(gòu)的一種特例。圖21并置結(jié)構(gòu)一個(gè)有趣的問(wèn)題是,既然多數(shù)的部署在運(yùn)行期都演進(jìn)成了并置結(jié)構(gòu),為什么不用本地接口代替遠(yuǎn)程接口,這將大提高性能。你當(dāng)然可以,但是記住,當(dāng)你使用本地接口后,WEB組件和EJB耦合得很緊,而方法調(diào)用也是直接的而不通過(guò)RMI/IIOP。負(fù)載均衡和失效轉(zhuǎn)移分發(fā)器沒(méi)有機(jī)會(huì)介入本地接口調(diào)用?!癢EB+EJB”整體處理負(fù)載均衡和失效轉(zhuǎn)移。但不幸的是,在集群中使用本地接口在多數(shù)J2EE服務(wù)器中有局限性。使用本地接口的EJB是本地對(duì)象,是不可序列化的,這一個(gè)限制就使本地引用不能保存在HTTPSession中。一些產(chǎn)品,如SunJES,會(huì)將本地接口區(qū)別看待,使它們可以序列化。這樣就可以用在HTTPSession中。另一個(gè)有趣的問(wèn)題是,既然并置結(jié)構(gòu)這么流行并且有好的性能,為什么還要分布式結(jié)構(gòu)呢?這在多數(shù)情況下是有道理的,但有時(shí)分布式結(jié)構(gòu)是不可替代的。lEJB不僅被WEB容器使用,富客戶端也會(huì)使用它。lEJB組件和WEB組件需在不同的安全級(jí)別上,并需要物理分離。這樣防火墻將被設(shè)置用于保護(hù)運(yùn)行EJB的重要機(jī)器。lWEB層和EJB層極端不對(duì)稱使得分布式結(jié)構(gòu)是更好的選擇。比如,一些EJB組件非常復(fù)雜并且很消耗資源,它們只能運(yùn)行在昂貴的大型服務(wù)器上,另一方面,WEB組件(HTML,JSP和Servlet)簡(jiǎn)單得只需廉價(jià)的PC服務(wù)器就能滿足要求。在這種情況下,專門(mén)的WEB服務(wù)器可以用來(lái)接受客戶端連接請(qǐng)求,很快處理靜態(tài)數(shù)據(jù)(HTML和圖像)和簡(jiǎn)單的WEB組件(JSP和Servlet)。大型服務(wù)器只被用來(lái)做復(fù)雜計(jì)算。這將更好的利用投資。結(jié)論集群與獨(dú)立環(huán)境不同,J2EE供應(yīng)商采用不同的方法來(lái)實(shí)現(xiàn)集群。如果你的項(xiàng)目為做到高伸縮性而使用集群,你應(yīng)該在你的項(xiàng)目開(kāi)始的時(shí)候就做準(zhǔn)備。選擇符合你的需求的正確的J2EE產(chǎn)品。選擇正確的第三方軟件和框架并確保它們能支持集群。最后設(shè)計(jì)正確的架構(gòu)使得能從集群中受益而不是受害。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1