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