1 主要概念
SOA :英文全稱是 Service-oriented architecture ,如今概念比較的不統一,主要由如下幾種定義java
1.W3C :能夠調用的一系列組件,其接口描述能夠發佈和發現。
2.CBDI :一組策略,實踐和框架,支持將應用程序功能做爲一組服務在與可以調用,發佈和發現的服務使用者相關的粒度發佈; 這組服務是使用接口的單一標準形式從實現抽象出來的。
3.Gartner: 面向服務的體系結構是一種客房機/ 服務器軟件設計方法,其中的應用程序由軟件服務和軟件服務的使用者(也稱爲客戶機或服務請求方)組成。SOA 與更爲通用的客戶機/ 服務器模型不一樣,其定義強調軟件組件間的鬆散偶合及對獨立接口的使用。
4.IBM :面向服務的體系架構(Service Oriented Architecture,SOA )是一個建設企業IT 架構的架構風格。採用面向服務的原則,達到業務與支持業務的信息系統的緊密結合。
5.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 企業服務查找註冊組件:這個組件通常狀況下是獨立部署的,並且應該有很高的可用性,在理想狀態下,應該能夠查找到全部部門域中的全部交易。跨域的交易都須要經過這個組件來查找到對應域的服務。
2監控組件:這個組件能夠查看各個部門域內的運行狀況。
3 元素
3.1. 企業域管理器
3.1..1 企業服務查找註冊組件
這個是企業域管理器的核心組件,使用他來管理整個企業內的全部服務,這個組件應該有如下幾個功能。
服務註冊:註冊服務的地址,服務的說明。
服務版本管理:能夠管理個服務的版本。
服務客戶端代碼的生成,根根服務的地址和說明生成服務的客戶端,通常是 java 版本。
服務路由表的查找:主要是爲了查找對應的服務的地址,並且能夠對服務路由進行推送。
服務的使用方註冊:你要請求其餘的域的服務,你就須要告訴服務查找註冊組件,這樣就能夠經過此組件找到此服務的使用路徑,從而當服務進行更改後,能夠有效的通告相對應的交系域。
3.1..2 監控組件
這個組件能夠查看各個部門域內的運行狀況,並在部門域的運行超過伐值時進行相應的預警,必要時,操做域內流控來操做交易。具體的功能以下:
查看各個部門域內的運行狀況。如硬件資源,交易信息,流控信息,配置信息。
對資源使用狀況進行預警
根據狀況操做部門域內的配置參數,好比流控的配置參數。
定時收集各個域內的信息,保存後,爲報表、決策分析等提供信息支持。
3.1.2 部門域
部門域是整個企業域內的一個個的 ESB 結點,每一個部門的域內會根據項目羣,或者根據部門來進行劃分,在各個部門域內都有一個 ESB 的應用,經過這個 ESB 來整合整個部門內的服務和應用。這個元素咱們將會在部門域的視角中祥細進行闡述。
3.2 場景
3.2.1 子域間交互
全部的服務都會被註冊到企業管理器的服務查找組件中,這個組件擁這些服務的描述和服務的地址信息。一個具體的流程能夠查看序列圖(圖表 3:2 ),部門域 A 若是要發起一個跨域的服務請求,那就必需要使用企業域管理器的服務查找組件,經過這個組件的路由表來獲取此服務的服務方的部門域 B 的服務的地址後,才能請求對應的部門域 B 。 爲了提升性能,在這個場景裏,咱們也能夠在啓動的時候就去取對應的路由表信息,而後緩存起來,經過緩存來找到部門域 B 的地址,但這樣有一個注意點,那就是當部門域的改變了服務的地址後的通知部門域 A 的策略問題,咱們能夠有下以幾種策略
服務查找組件進行推送
若是服務請求地址出錯,從新請求服務查找組件
定時清空路由緩存