什么是企業(yè)服務總線ESB|選擇ESB平臺的三個原則
作者: 數(shù)環(huán)通發(fā)布時間: 2024-07-17 15:19:17
企業(yè)服務總線(ESB)從根本上是一種架構(gòu)。是一套規(guī)則和原則,用于在類似總線的基礎設施上將許多應用程序集成在一起。ESB產(chǎn)品使用戶能夠構(gòu)建這種類型的架構(gòu),但他們的方式和提供的功能各不相同。ESB架構(gòu)的核心概念是,您通過在它們之間放置通信總線來集成不同的應用程序,然后使每個應用程序能夠與總線通信。這使系統(tǒng)彼此分離,允許它們在不依賴或了解總線上其他系統(tǒng)的情況下進行通信。ESB的概念誕生于擺脫點對點集成的需要,隨著時間的推移,點對點集成變得脆弱且難以管理。點對點集成導致自定義集成代碼在應用程序之間傳播,沒有集中的監(jiān)控或故障排除方法。這通常被稱為“意大利面代碼”,不會擴展,因為它在應用程序之間造成了緊密的依賴性。
為什么要使用ESB?
通過縮短實施時間來提高組織敏捷性,是公司實施ESB作為其IT基礎設施骨干的最常見原因之一。ESB架構(gòu)通過提供一個簡單、定義明確、可擴展的“可插拔”系統(tǒng)來促進這一點。此外,ESB提供了一種利用現(xiàn)有系統(tǒng)的方法,并使用其通信和轉(zhuǎn)換功能將它們暴露給新應用程序。
ESB實施
ESB架構(gòu)有一些關(guān)鍵原則,允許業(yè)務敏捷性和規(guī)模。關(guān)鍵重點是將系統(tǒng)彼此分離,同時允許它們以一致和可管理的方式進行通信。
“ESB總線”概念將應用程序彼此解耦。這通常使用JMS或AMQP等消息服務器來實現(xiàn)。
在總線上傳輸?shù)臄?shù)據(jù)是一種規(guī)范格式,幾乎總是XML。
應用程序和總線之間有一個“適配器”,可以在雙方之間編排數(shù)據(jù)。
適配器負責與后端應用程序?qū)υ挘?shù)據(jù)從應用程序格式轉(zhuǎn)換為總線格式。適配器還可以執(zhí)行許多其他活動,如消息路由事務管理、安全性、監(jiān)控、錯誤處理等。
ESB通常是無狀態(tài)的;狀態(tài)嵌入在通過總線的消息中。
規(guī)范消息格式是系統(tǒng)之間的合同。規(guī)范格式意味著在總線上有一個一致的消息格式,并且總線上的每個應用程序都可以相互通信
ESB整合核心原則
讓我們看看ESB架構(gòu)如何映射到我們的五個核心集成原則:
編排:將幾個現(xiàn)有的細粒度組件組合成一個高階復合服務。這樣做可以實現(xiàn)適當?shù)姆铡傲6取?,并促進底層組件的重用和可管理性。
轉(zhuǎn)換:規(guī)范數(shù)據(jù)格式和每個ESB連接器所需的特定數(shù)據(jù)格式之間的數(shù)據(jù)轉(zhuǎn)換。這方面的一個例子是將CSV、Cobol copybook或EDI格式轉(zhuǎn)換為SOAP/XML或JSON。Canoncial數(shù)據(jù)格式可以極大地簡化與大型ESB實施相關(guān)的轉(zhuǎn)換要求,因為那里有許多消費者和提供商,每個都有自己的數(shù)據(jù)格式和定義。
傳輸:多種格式(如HTTP、JMS、JDBC)之間的傳輸協(xié)議協(xié)商。注意:Mule將數(shù)據(jù)庫視為另一個“服務”,使JDBC成為可以訪問數(shù)據(jù)的另一個傳輸(或端點)。
調(diào)解:提供多個接口,用于a)支持多個版本的服務,以實現(xiàn)向后兼容性,或者,b)允許多個通道實現(xiàn)相同的底層組件。第二個要求可能涉及為同一組件提供多個接口,一個遺留接口(平面文件)和一個符合標準(SOAP/XML)的接口。
非功能一致性:對于典型的ESB倡議,這可以包括圍繞安全和監(jiān)控策略的應用和實施方式的一致性。此外,通過使用ESB的多個實例來增加吞吐量(可擴展性)并消除單故障點(SPOFs),可以實現(xiàn)可擴展性和可用性的目標,這是高可用性系統(tǒng)的關(guān)鍵目標。
選擇ESB平臺
有許多ESB平臺,從大型專有供應商到利基和開源供應商。在表面上,有很多相似之處。以下是在選擇ESB時需要考慮的一些要點。
1.輕量級
在選項過程中,我們需要充分考慮ESB集成平臺部署成本和現(xiàn)有集成進行遷移的成本,以及進行遷移所需的繁重工作量。能否提供模塊化和超快的熱部署,以及易于重新排序和添加/更改功能的配置模型至關(guān)重要。
2.不僅僅是中間件
大多數(shù)供應商認為ESB純粹是系統(tǒng)之間的中間件,并擁有單獨的產(chǎn)品來托管業(yè)務邏輯和發(fā)布服務。但在上線使用環(huán)節(jié),提供一個輕巧且可擴展的服務容器,用于發(fā)布REST和SOAP服務也很關(guān)鍵。
3.易用性
平臺上線后,組織內(nèi)部開發(fā)人員能否快速學習使用很關(guān)鍵,這要求ESB盡可能使用所有Java開發(fā)人員都熟悉的常用工具,如Maven、Eclipse、JUnit和Spring。用XML配置模型(類似于Spring)來定義邏輯,自定義代碼可以用各種語言編寫,包括Java、Groovy、JavaScript、Ruby或Python。此外,新開發(fā)人員能否通過快速掌握可視化開發(fā)環(huán)境。
4.擴展性
優(yōu)秀ESB往往能夠在環(huán)境中進行水平擴展,無需重復投入。例如:國外知名得Mule 的運行時環(huán)境可以輕松地嵌入到應用程序中,或者嵌入到應用服務器中。除此之外,還提供了對 JUnit 的支持,使其可以嵌入到 JUnit 測試用例中。這些功能非常有用,因為它意味著您可以為將在開發(fā)人員筆記本電腦上運行且可以集成到持續(xù)構(gòu)建過程中的集成創(chuàng)建可重復的單元測試。
5.通用性
雖然 XML 十分常見,但在許多場景下,您可能會希望使用 JSON、文件、 Java 對象等。不同類型數(shù)據(jù)映射、轉(zhuǎn)化和處理等能力需要健全。
新一代混合集成平臺
如果您希望一站式解決組織內(nèi)外部所有應用和數(shù)據(jù)集成需求,那么數(shù)環(huán)通更適合。數(shù)環(huán)通是一個集成平臺即服務(iPaaS),可讓您更高效的實現(xiàn)集成開發(fā)。并提供了一個多租戶的彈性平臺,目前已經(jīng)連接到1000多個應用和服務,并支持連接到您的本地應用程序。
關(guān)于ESB與iPaaS差異,詳見:iPaaS VS ESB總線 | 差異及優(yōu)劣勢分析