|
1 主要概念
SOA :英文全稱是 Service-oriented architecture ,現(xiàn)在概念比較的不統(tǒng)一,主要由以下幾種定義
- W3C :可以調(diào)用的一系列組件,其接口描述可以發(fā)布和發(fā)現(xiàn)。
- CBDI :一組策略,實(shí)踐和框架,支持將應(yīng)用程序功能作為一組服務(wù)在與能夠調(diào)用,發(fā)布和發(fā)現(xiàn)的服務(wù)使用者相關(guān)的粒度發(fā)布; 這組服務(wù)是使用接口的單一標(biāo)準(zhǔn)形式從實(shí)現(xiàn)抽象出來的。
- Gartner: 面向服務(wù)的體系結(jié)構(gòu)是一種客房機(jī)/ 服務(wù)器軟件設(shè)計(jì)方法,其中的應(yīng)用程序由軟件服務(wù)和軟件服務(wù)的使用者(也稱為客戶機(jī)或服務(wù)請求方)組成。SOA 與更為通用的客戶機(jī)/ 服務(wù)器模型不同,其定義強(qiáng)調(diào)軟件組件間的松散偶合及對獨(dú)立接口的使用。
- IBM :面向服務(wù)的體系架構(gòu)(Service Oriented Architecture,SOA )是一個(gè)建設(shè)企業(yè)IT 架構(gòu)的架構(gòu)風(fēng)格。采用面向服務(wù)的原則,達(dá)到業(yè)務(wù)與支持業(yè)務(wù)的信息系統(tǒng)的緊密結(jié)合。
- BEA :面向服務(wù)的體系架構(gòu)是一個(gè)IT 戰(zhàn)略,將企業(yè)應(yīng)用中分散的功能組織成為支持互操作、基于標(biāo)準(zhǔn)的服務(wù)。這些服務(wù)可以被組合及快速重用以滿足業(yè)務(wù)需求。
ESB : 全稱為 Enterprise Service Bus ,即企業(yè)服務(wù)總線
BPM : Business Process Management 業(yè)務(wù)流程管理
2 概述
ESB 的存在主要是為了整合企業(yè)內(nèi)部的應(yīng)用,使一個(gè)企業(yè)能的應(yīng)用能合為一體,而不是成為一個(gè)個(gè)獨(dú)立的應(yīng)用。可以說 ESB 企業(yè)內(nèi)所有的服務(wù)的中心點(diǎn),其他的系統(tǒng)間的交互都要通來 ESB 來完成。為此他的質(zhì)量屬性的重要性依次是這樣的,可用性、性能、可修改性、可測試性、易用性。它門描述可以參看下面的 2.1 章節(jié)
為了完成這些屬性,我們可以從企業(yè)域, 部門 域, ESB 內(nèi)部視角三個(gè)層次來進(jìn)行說明。因?yàn)?ESB 除了高可用性和性能之外,高可伸縮性也很重要,在實(shí)際的應(yīng)用過程中,你可以進(jìn)行對整個(gè)結(jié)構(gòu)進(jìn)行裁減,在開始時(shí),你可能只要一個(gè)部門域,一個(gè)部門域內(nèi)支持水平擴(kuò)展,當(dāng)?shù)搅似款i后,你可能會(huì)部署多個(gè)部門域,這樣做到這時(shí)你可以把他看成一個(gè)垂直擴(kuò)展。
2.1 ESB 的質(zhì)量屬性
第一位:可用性
ESB 是企業(yè)內(nèi)應(yīng)用之間及對外第三方系統(tǒng)之間交互的集中點(diǎn),他集中的管理了交互的所有服務(wù)。他還有服務(wù)查找,管理,審計(jì),監(jiān)控,分析,等功能。當(dāng)一個(gè) ESB 服務(wù)出現(xiàn)了故障,它就將會(huì)影響企業(yè)內(nèi)的所有應(yīng)用的正常運(yùn)行。所以,可用被性放在了第一位。
第二位:性能
隨著企業(yè)內(nèi)部整合的推進(jìn),ESB 內(nèi)部的服務(wù)交易量應(yīng)該不會(huì)是個(gè)小數(shù),高性能對于一個(gè)ESB 的應(yīng)用也是非常重要的。
第三位:可修改性
因?yàn)?SOA 的企業(yè)治理是一個(gè)循序漸進(jìn)的過程,在ESB 部署的開始之初,很難對交易的量上有一個(gè)準(zhǔn)確的估計(jì),對性能的擴(kuò)展性有比較高的要求。
在實(shí)際的生產(chǎn)運(yùn)維過程中,我們還是會(huì)常常發(fā)現(xiàn),服務(wù)可能會(huì)出現(xiàn)這樣或那樣的問題。為了讓使用這個(gè)服務(wù)的應(yīng)用能正常的使用,快速的修改和部署,是一個(gè)很重要的問題。
ESB 的項(xiàng)目是隨著SOA 的企業(yè)治理而進(jìn)行一次次的迭代過程,這也就意味這可修改性在ESB 中的重要性。
第四位:可測試性
ESB 的上線既然是一個(gè)迭代的過程,服務(wù)會(huì)根據(jù)SOA 理念的深入而增加。在迭代的過程中,要保證以前的服務(wù)能順利的通過,可測試性是一個(gè)很重要的保障。
企業(yè)內(nèi)應(yīng)用的交易,應(yīng)該只面向ESB ,它們要交互并不需要知道這個(gè)服務(wù)在哪里或是給誰使用。這時(shí),ESB 的測試就是一個(gè)很大的問題,因?yàn)檫@支交易在開始的時(shí)候,你可能并不知道他會(huì)在哪里被使用,但我們至少要保證這支交易基本上是正確的,這樣才能便于使用。
第五位:易用性
易用性,這當(dāng)然是要提高一個(gè)服務(wù)的開發(fā)效率,能快速的開發(fā)和部署一個(gè)服務(wù)。因?yàn)樗麑ιa(chǎn)上的活動(dòng)沒有影響,在這里它只能放在第五位
3 企業(yè)域視圖
在大多數(shù)據(jù)情況下,如果你的交易量不大,你大可以只使用一個(gè)部門域來支撐整個(gè)企業(yè)內(nèi)的服務(wù)。但如果只是一個(gè) ESB 的部門域的話,是沒有辦法支撐后來交易量的年年增長的。雖然我們的每一個(gè)部門域,都可以自行進(jìn)行水平的擴(kuò)展,但這還是有一個(gè)度,如果超過這個(gè)度后,你就只能使用垂直擴(kuò)展,這種擴(kuò)展方式當(dāng)然沒有水平擴(kuò)展來得廉價(jià),但他能支撐更大的交易量。
在企業(yè)域中,最大的特點(diǎn)就是有多個(gè)部門子域,每個(gè)部門子域都是高度自治的。他們可以獨(dú)立的處理域內(nèi)各個(gè)系統(tǒng)的整合,只有當(dāng)需要?jiǎng)e的域的服務(wù)時(shí),他才會(huì)請求其他的域。為了防止部門域之間變成一個(gè)蜘蛛網(wǎng),這里我們引入了企業(yè)域管理器,來統(tǒng)一管理域內(nèi)的服務(wù)與及對這些部門域進(jìn)行必要的監(jiān)控。
在企業(yè)域管理器中主要有以下的幾個(gè)組件:
l 企業(yè)服務(wù)查找注冊組件:這個(gè)組件一般情況下是獨(dú)立部署的,而且應(yīng)該有很高的可用性,在理想狀態(tài)下,應(yīng)該可以查找到所有部門域中的所有交易。跨域的交易都需要通過這個(gè)組件來查找到對應(yīng)域的服務(wù)。
l 監(jiān)控組件:這個(gè)組件可以查看各個(gè)部門域內(nèi)的運(yùn)行情況。
圖表 3 ? 1
3.1 元素
3.1.1 企業(yè)域管理器
3.1.1.1 企業(yè)服務(wù)查找注冊組件
這個(gè)是企業(yè)域管理器的核心組件,使用他來管理整個(gè)企業(yè)內(nèi)的所有服務(wù),這個(gè)組件應(yīng)該有以下幾個(gè)功能。
l 服務(wù)注冊:注冊服務(wù)的地址,服務(wù)的說明。
l 服務(wù)版本管理:可以管理個(gè)服務(wù)的版本。
l 服務(wù)客戶端代碼的生成,根根服務(wù)的地址和說明生成服務(wù)的客戶端,一般是 Java 版本。
l 服務(wù)路由表的查找:主要是為了查找對應(yīng)的服務(wù)的地址,而且可以對服務(wù)路由進(jìn)行推送。
l 服務(wù)的使用方注冊:你要請求其他的域的服務(wù),你就需要告訴服務(wù)查找注冊組件,這樣就可以通過此組件找到此服務(wù)的使用路徑,從而當(dāng)服務(wù)進(jìn)行更改后,可以有效的通告相對應(yīng)的交系域。
3.1.1.2 監(jiān)控組件
這個(gè)組件可以查看各個(gè)部門域內(nèi)的運(yùn)行情況,并在部門域的運(yùn)行超過伐值時(shí)進(jìn)行相應(yīng)的預(yù)警,必要時(shí),操作域內(nèi)流控來操作交易。具體的功能如下:
l 查看各個(gè)部門域內(nèi)的運(yùn)行情況。如硬件資源,交易信息,流控信息,配置信息。
l 對資源使用情況進(jìn)行預(yù)警
l 根據(jù)情況操作部門域內(nèi)的配置參數(shù),比如流控的配置參數(shù)。
l 定時(shí)收集各個(gè)域內(nèi)的信息,保存后,為報(bào)表、決策分析等提供信息支持。
3.1.2 部門域
部門域是整個(gè)企業(yè)域內(nèi)的一個(gè)個(gè)的 ESB 結(jié)點(diǎn),每個(gè)部門的域內(nèi)會(huì)根據(jù)項(xiàng)目群,或者根據(jù)部門來進(jìn)行劃分,在各個(gè)部門域內(nèi)都有一個(gè) ESB 的應(yīng)用,通過這個(gè) ESB 來整合整個(gè)部門內(nèi)的服務(wù)和應(yīng)用。這個(gè)元素我們將會(huì)在部門域的視角中祥細(xì)進(jìn)行闡述。
3.2 場景
3.2.1 子域間交互
所有的服務(wù)都會(huì)被注冊到企業(yè)管理器的服務(wù)查找組件中,這個(gè)組件擁這些服務(wù)的描述和服務(wù)的地址信息。一個(gè)具體的流程可以查看序列圖(圖表 3 ? 2 ),部門域 A 如果要發(fā)起一個(gè)跨域的服務(wù)請求,那就必須要使用企業(yè)域管理器的服務(wù)查找組件,通過這個(gè)組件的路由表來獲取此服務(wù)的服務(wù)方的部門域 B 的服務(wù)的地址后,才能請求對應(yīng)的部門域 B 。
為了提高性能,在這個(gè)場景里,我們也可以在啟動(dòng)的時(shí)候就去取對應(yīng)的路由表信息,然后緩存起來,通過緩存來找到部門域 B 的地址,但這樣有一個(gè)注意點(diǎn),那就是當(dāng)部門域的改變了服務(wù)的地址后的通知部門域 A 的策略問題,我們可以有下以幾種策略
l 服務(wù)查找組件進(jìn)行推送
l 如果服務(wù)請求地址出錯(cuò),重新請求服務(wù)查找組件
l 定時(shí)清空路由緩存
圖表 3 ?2
it知識(shí)庫:ESB產(chǎn)品架構(gòu)之愚見,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。