欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
EJB集群技術(shù)分析 - biaoming - JavaEye技術(shù)網(wǎng)站
2007-08-16
  struts.properties詳解 ...   |   重構DAO設計計劃  
  

J2EE平臺提供了一個(gè)基于組件的方法,用來(lái)設計、開(kāi)發(fā)、裝配及部署企業(yè)應用程序。而且提供了一個(gè)多層的分布式的應用模型、組件的復用、一致化的安全模型以及靈活的事務(wù)控制模型。近年來(lái)在企業(yè)系統中得到了大量使用。隨著(zhù)J2EE應用服務(wù)器的大量部署和客戶(hù)訪(fǎng)問(wèn)量的猛增。企業(yè)對于J2EE系統的可伸縮性和高可用性要求越來(lái)越高,特別是在電子商務(wù)和金融領(lǐng)域,這個(gè)問(wèn)題越顯的突出。如何設計和構建一個(gè)具有可伸縮的,高可用性的J2EE集群應用服務(wù)器,成為設計J2EE應用服務(wù)器設計必須考慮的問(wèn)題。但J2EE應用服務(wù)器的集群是基于EJB組件的集群,和普通Web Server集群技術(shù)有很大的不同。實(shí)現的方法也根本不相同。

1 集群系統特點(diǎn)

一個(gè)集群系統是一群松散結合的服務(wù)器組,形成一個(gè)虛擬的服務(wù)器,為客戶(hù)端用戶(hù)提供統一的服務(wù)。對于這個(gè)客戶(hù)端來(lái)說(shuō),通常在訪(fǎng)問(wèn)集群系統時(shí)不會(huì )意識到它的服務(wù)是由具體的哪一臺服務(wù)器提供。集群系統一般應具高可用性、可伸縮性、負載均衡、故障恢復和可維護性等特殊性能。

高 可用性是集群系統最基本的要求,它是對整個(gè)系統運行穩定性的一個(gè)評價(jià)??缮炜s性是指整個(gè)系統在隨著(zhù)客戶(hù)端用戶(hù)數量的增加而繼續保持有效響應時(shí)間的能力。在 一個(gè)可伸縮性系統中,隨著(zhù)用戶(hù)數量的增加,有效響應時(shí)間變長(cháng),成線(xiàn)性變化關(guān)系,這也體現一個(gè)系統的峰值負載處理能力,但隨著(zhù)越來(lái)越多的系統處于Internet上, 用戶(hù)訪(fǎng)問(wèn)的峰值負載有效預測已變的不可能。用戶(hù)訪(fǎng)問(wèn)量的猛增,使系統的有效響應時(shí)間成非線(xiàn)性變化,響應時(shí)間急劇變長(cháng),知道系統不堪重負而停機。一般的解決 方法就是通過(guò)提升系統硬件系統,或通過(guò)增加服務(wù)器。但是不合理的增加服務(wù)器只能使整個(gè)集群系統變的越來(lái)越龐大,系統的這種復雜化就意味系統故障率變高,隨 之整個(gè)系統可靠性、可維護性都會(huì )降低。

所以,一個(gè)系統的可用性和可伸縮性是一對矛盾的關(guān)系,而且和整個(gè)集群系統的實(shí)現方法有很大的關(guān)系。

2         EJB技術(shù)

EJBJ2EE應用平臺的核心。SunEJB2.0規范中對EJB定義如下:EJB是用于開(kāi)發(fā)和部署具多層結構的、分布式的、面向對象的Java應用系統跨平臺的構件體系結構。EJB組件有三中類(lèi)型:會(huì )話(huà)bean、實(shí)體bean、消息驅動(dòng)bean。其中會(huì )話(huà)bean分為有狀態(tài)和無(wú)狀態(tài)兩種。

EJB服務(wù)器的核心是提供EJB使用的一個(gè)或者多個(gè)EJB容器(Container)。EJB容器管理它所包含的EJB,為EJB組件的生存和執行提供了運行環(huán)境,同時(shí)也負責EJB的事務(wù)管理,安全管理,資源訪(fǎng)問(wèn)控制和一些異常處理。EJB容器不允許J2EE的客戶(hù)端程序直接訪(fǎng)問(wèn)容器中EJB對象,當一個(gè)客戶(hù)端用戶(hù)想訪(fǎng)問(wèn)一個(gè)EJB, EJB規范中要求客戶(hù)使用Java名字和目錄接口JNDIJava Naming and Directory InterfaceAPI來(lái)定位Beanhome接口。 要訪(fǎng)問(wèn)EJB一般需要經(jīng)過(guò)以下三步(見(jiàn)圖1)(下面只列舉Remote的調用):

1)    JNDI中查找Beanhome接口。首先客戶(hù)需要獲得一個(gè)JNDI的初始化上下文,然后,客戶(hù)就可以使用上下文的lookup方法從一個(gè)名字對應到它的home接口;

2)    使用home接口中的Create()方法獲得BeanRemote接口引用;

3)    通過(guò)Remote接口中的方法使用Bean中定義的方法;

一個(gè)簡(jiǎn)單訪(fǎng)問(wèn)例子如下:

// 獲得JNDI初始化上下文

Context mycontext// 查找MyEJB,獲得Home對象的引用

Object homeref =  mycontext.lookup(“MyEJB”);

// Home對象造型為RMI-IIOP對象

MyBeanHome home =

(MyBeanHome)PortableRemoteObject(homeref, MyBeanHome.Class);

EJB對象,返回Remote接口

MyBeanRemote  myref = home.create( );

//通過(guò)Remote接口調用EJB中實(shí)現的方法

System.out.println ( myref.getname( ));

3 EJB服務(wù)器集群

EJB服務(wù)器的集群是基于組件的一種集群方式,和普通Web Server集群技術(shù)有很大的不同。實(shí)現的方法也不相同。又由于EJB規范中沒(méi)有提供任何有關(guān)支持集群的標準,即使有的廠(chǎng)商在EJB服務(wù)器中提供了集群特性,但如何具體實(shí)現集群也是由廠(chǎng)商自己確定。實(shí)現的方法也各不相同。目前,大多數J2EE用服務(wù)器都提供了集群功能,如Bea WebLogic應用服務(wù)器,開(kāi)放源碼的JBoss應用服務(wù)器,Sybase公司提供的J2EE應用服務(wù)器等都提供了集群功能。在EJB服務(wù)器集群設計 中,負載均衡(Load Balance),EJB集群和HttpSession集群技術(shù)是設計中涉及到的主要技術(shù)。其中EJB集群的實(shí)現是整個(gè)系統實(shí)現的核心。

 

3.1負載均衡(Load Balance)

Load Balance 主要的目的在于將訪(fǎng)問(wèn)系統的負荷分散在不同的機器上,使整個(gè)系統吞吐量和并發(fā)性得到提高,它能讓多臺服務(wù)器共同承擔一些繁重的計算或任務(wù),從而消除網(wǎng)絡(luò )瓶頸,提高網(wǎng)絡(luò )的靈活性和可靠性。常見(jiàn)的方法如下:

l         循環(huán)DNS

DNS負載均衡是一種簡(jiǎn)單而有效的方法,該方法使用簡(jiǎn)單的域名查詢(xún)IP地址來(lái)實(shí)現一種簡(jiǎn)單的負載均衡。任意給出一個(gè)地址,DNS服務(wù)器都有一個(gè)IP地址池與之對應。每次請求將域名轉換成IP地址時(shí),循環(huán)返回IP地址池中的下一個(gè)地址。故被稱(chēng)作DNS round-robin。當一個(gè)Client訪(fǎng)問(wèn)時(shí),給請求JNDIInitialContext客戶(hù)端傳遞一個(gè)DNS名,作為命名服務(wù)器的URL,每個(gè)名字被轉換成一個(gè)不同的地址,使用這個(gè)技術(shù),每個(gè)客戶(hù)端InitailContext請求就被直接發(fā)送到不同的服務(wù)器上。 負載均衡的一大缺點(diǎn)是:一旦某個(gè)服務(wù)器出現故障,即使及時(shí)修改了設置,還是要等待足夠的時(shí)間(因為需要一定的刷新時(shí)間)才能發(fā)揮作用,在此期間,有些客戶(hù)端用戶(hù)訪(fǎng)問(wèn)仍舊將發(fā)送故障服務(wù)器上。

l         軟件Proxy

軟件Proxy維護連接到一系列服務(wù)器上的打開(kāi)連接。當一個(gè)Client訪(fǎng)問(wèn)服務(wù)器時(shí),先要經(jīng)過(guò)這個(gè)軟件代理,這個(gè)代理能通過(guò)一些負載均衡的算法(如采用類(lèi)似DNS Round-robin、隨機方法、訪(fǎng)問(wèn)權衡算法 )把一個(gè)用戶(hù)的訪(fǎng)問(wèn)重新定向到一個(gè)服務(wù)器。這個(gè)軟件代理方法能夠及時(shí)發(fā)現服務(wù)器死機或沒(méi)有響應,有效地避免了DNS round-robin方法中出現地故障訪(fǎng)問(wèn)。

l         硬件均衡器

這種硬件均衡器一般采用地址轉換技術(shù),將一個(gè)外部地址映射為多個(gè)內部地址,對每次連接請求動(dòng)態(tài)使用其中一個(gè)內部地址,達到負載均衡的目的。一般可采用第四層(或4層以上)的交換機來(lái)實(shí)現,這種交換機是按照地址和端口進(jìn)行虛擬連接的交換,直接將數據包發(fā)送到目的計算機的相應端口。通過(guò)交換機就能將來(lái)自外部的初始連接請求,分別與內部的多個(gè)地址相聯(lián)系,從而建立虛擬連接實(shí)現負載均衡。這種第四層交換基于硬件芯片,因此網(wǎng)絡(luò )傳輸速度和交換速度遠遠超過(guò)普通軟件代理方式。如采用Cisco CSS 11150(一種L4 Switch)可以實(shí)現硬件均衡。

 

3.2 EJB 集群技術(shù)

Client端要訪(fǎng)問(wèn)EJB容器中EJB都是先要先訪(fǎng)問(wèn)JNDI命名服務(wù)器[見(jiàn)2EJB技術(shù)]。所以J2EEEJB服務(wù)器的實(shí)現集群( Cluster)核心也就圍繞著(zhù)JNDI。根據集群對于JNDI命名樹(shù)在系統中管理和組織的不同,一般EJB集群可以分為下面三種:

1)  JNDI樹(shù)代理(Proxy

Cluster中每個(gè)J2EE Application Server都維護一個(gè)自己的本地私有JNDI樹(shù),Cluster中的每個(gè)服務(wù)器不知道其它服務(wù)器的狀態(tài)和存在情況,只有Proxy服務(wù)知道Cluster中每個(gè)服務(wù)器的狀態(tài),并且可以訪(fǎng)問(wèn)Cluster中任何一個(gè)服務(wù)器上的JNDI樹(shù),這就要求每個(gè)服務(wù)器在啟動(dòng)和啟動(dòng)后要不斷地和Proxy服務(wù)保持聯(lián)系,以便Proxy知道它們的工作情況和Cluster所有的EJB對象。Client訪(fǎng)問(wèn)EJB對象,首先要訪(fǎng)問(wèn)JNDI Proxy,通過(guò)Proxy,可以重新定向訪(fǎng)問(wèn)到Cluster中所有的EJB對象(見(jiàn)圖2)。這種方法的優(yōu)點(diǎn)是實(shí)現簡(jiǎn)單,只需要設計一個(gè)JNDI Proxy代理。對于每個(gè)應用服務(wù)器不做復雜要求;而且系統的伸縮性好,要升級系統,只是簡(jiǎn)單增加服務(wù)器就可以。但這種方法有一個(gè)致命的缺點(diǎn),就是Proxy服務(wù)要是失敗,整個(gè)Cluster系統將無(wú)法正常工作,可靠性差。

 

2) 集中式JNDI樹(shù)

采用集中式集群時(shí),整個(gè)集群系統中僅有一個(gè)主命名服務(wù)器,它負責管理和維護集群中一個(gè)全局、集中的JNDI樹(shù),集群中所有的EJB服務(wù)器在啟動(dòng)后,都要把要發(fā)布的對象綁定在這臺命名服務(wù)器上,每個(gè)EJB服務(wù)器不需要維護自己的私有JNDI樹(shù),由這臺主命名服務(wù)器來(lái)維護。假如在集群中一個(gè)EJB要在多個(gè)服務(wù)器上部署,那么每個(gè)服務(wù)器可以把同一個(gè)home對象綁定到命名服務(wù)器上,當一個(gè)客戶(hù)從命名服務(wù)器請求訪(fǎng)問(wèn)這個(gè)EJBhome對象,可以將所有的home對象引用都返回給客戶(hù)端,或者可以按一種均衡算法返回一個(gè)服務(wù)器的home對象引用(見(jiàn)圖3)。這種集中式方法要提高整個(gè)系統可靠性,必須考慮命名服務(wù)器的備份問(wèn)題,往往在大系統同時(shí)采用多臺命名服務(wù)器,命名服務(wù)器間可以采用JNDI樹(shù)復制方式,或者采用EJB服務(wù)器在多臺服務(wù)器上綁定方式。例如Sybase公司的EJB應用服務(wù)器就是采用這種方式,它采用采用CORBA Cos Naming Service集中的管理Cluster中所有應用服務(wù)器的JNDI樹(shù)。采用這種集中式的設計模型,系統設計簡(jiǎn)單,但同時(shí)為系統帶來(lái)了集中式所固有的缺陷。首先,當系統設計中要考慮到命名服務(wù)器備份問(wèn)題,而且隨著(zhù)集群系統越來(lái)越大,命名服務(wù)器在整個(gè)系統種瓶頸問(wèn)題越顯突出。

 


3) 分布式JNDI樹(shù)

在這種模型中,Cluster中每臺應用服務(wù)器都有自己的命名服務(wù)器,命名服務(wù)器不僅維護私有的本地JNDI樹(shù),同時(shí)維護一個(gè)全局共享JNDI樹(shù)。本地JNDI樹(shù)只綁定本地應用服務(wù)器中部署的對象,而全局JNDI樹(shù)保存了Cluster中其他應用服務(wù)器上的本地JNDI樹(shù)副本。這樣Client訪(fǎng)問(wèn)任何一臺命名服務(wù)器,通過(guò)它的本地私有和全局共享JNDI樹(shù)就能定位整個(gè)系統中部署EJB對象。一般都是采用多播形式,Cluster中一個(gè)應用服務(wù)器啟動(dòng)后,加入這個(gè)Cluster的多播組,然后再采用IP 多播技術(shù)復制它的本地JNDI樹(shù)到Cluster中其他服務(wù)器上全局共享JNDI樹(shù),這樣Cluster中其他服務(wù)器就擁有它的JNDI樹(shù)副本。同時(shí),這臺應用服務(wù)器和Cluster中其它服務(wù)器之間一直要保持HeartBeats(心跳)檢測,以隨時(shí)檢測其它服務(wù)器的活動(dòng)狀態(tài),假如有一臺服務(wù)器死機異常后,這臺應用服務(wù)器就要從它的全局共享JNDI樹(shù)中刪除這臺異常服務(wù)器JNDI副本,其它活動(dòng)的服務(wù)器都要做類(lèi)似的操作。這種分布式模型系統最大的優(yōu)點(diǎn)是具有很強的伸縮性,系統中再添加一臺服務(wù)器,其它的服務(wù)器可以不作任何的變動(dòng)。而且整個(gè)系統采用分布式體系可用性增強,系統中任何一臺服務(wù)器死機,都不會(huì )影響到整個(gè)系統的正常工作。這種方法也是目前采用最多的一種設計方法。BEA公司WebLogic應用服務(wù)器和JBoss應用服務(wù)器就采用這種設計方法。

 

3.3 HttpSession Cluster

J2EEWeb程序Jsp/Servlet中經(jīng)常用到Session對象,它的主要功能是記錄訪(fǎng)問(wèn)端客戶(hù)會(huì )話(huà)中有關(guān)信息。在一般的Web系統中,在Client訪(fǎng)問(wèn)階段,假設系統中Server端死機后,這次Client訪(fǎng)問(wèn)中Session中保留的相關(guān)信息將全部丟失。用戶(hù)下次訪(fǎng)問(wèn)就又需要重新開(kāi)始建立新的Session。HttpSession Cluster的目的就是即使服務(wù)器端系統死機重新啟動(dòng),上次未完成訪(fǎng)問(wèn)中的Session在系統中仍舊保存,Client可以接著(zhù)完成上次未完成的訪(fǎng)問(wèn)。

在一些大型的系統中,同時(shí)又成千上萬(wàn)的用戶(hù)同時(shí)訪(fǎng)問(wèn),要時(shí)實(shí)的保存所有Client端的Session信息,而且以保證一旦系統失效,系統會(huì )重新載入自己的Session狀態(tài),用戶(hù)能夠繼續操作。一般的實(shí)現HttpSession Cluster有下面兩種方法:

1)  采用內存復制:

在這個(gè)方法中,當某臺J2EE Server 中的某個(gè)HttpSession某個(gè)Object被修改后,或是新增一個(gè)Object后,這臺Server可以采用某種通訊方式(如IP Broadcast )將這個(gè)Object傳送到其它備份的J2EE Server上,讓其它 J2EE Server上相同的HttpSession同步變化。

2)  集中式:

所謂的集中式處理,與上面的內存復制方法非常相似,不同的是在集中式中,Session中的Object不是送到其它的Server上,而是送到一臺特定的機器上,在這臺機器上Object中的信息可以采用對象序列化后文件保存,或者抽象成數據后,保存到關(guān)系數據庫中。這臺機器集中管理所有Cluster中的所有Session狀態(tài)和信息。

4 結語(yǔ)

本文在對于集群系統的方法分析側重于JNDI樹(shù)的實(shí)現問(wèn)題,在實(shí)際的設計中還應該具體的考慮到兩種會(huì )話(huà)Bean,實(shí)體Bean和消息驅動(dòng)Bean對于集群方法實(shí)現的差異性以及它們的故障恢復技術(shù)。

最后更新: 2007-08-16 12:57
12:57  |   永久鏈接  |   瀏覽 (294)  |   評論  (0)  | java   |  
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
JBoss的集群策略分析
揭開(kāi)J2EE集群的神秘面紗(六)
JBoss、Geronimo及Tomcat比較分析-華軍資訊
JBoss,Geronimo還是Tomcat?——三種開(kāi)源Java應用服務(wù)器的比較
J2EE Clustering經(jīng)典范文學(xué)習 : 技術(shù)文檔-新技術(shù)天空-新技術(shù)CMS-j2e...
OSCache文檔-3.3在集群系統中使用OSCache
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久