企业应用程序集成简介
本文是我們名為“ Spring Integration for EAI ”的學(xué)院課程的一部分。
在本課程中,向您介紹了企業(yè)應(yīng)用程序集成模式以及Spring Integration如何解決它們。 接下來,您將深入研究Spring Integration的基礎(chǔ)知識(shí),例如通道,轉(zhuǎn)換器和適配器。 在這里查看 !
目錄
1.簡(jiǎn)介 2.企業(yè)整合模式 3.整合策略1.簡(jiǎn)介
這是Spring Integration課程的第一部分。 本部分向您介紹什么是企業(yè)集成模式以及如何將不同的策略應(yīng)用于設(shè)計(jì)集成解決方案。 之所以要在本課程中獲得這些模式的基礎(chǔ)知識(shí),是因?yàn)镾pring Integration項(xiàng)目是基于這些模式設(shè)計(jì)的。 本課程的以下部分將進(jìn)入Spring Integration項(xiàng)目,并顯示有關(guān)如何應(yīng)用這些模式的實(shí)際示例。
2.企業(yè)整合模式
Enterprise Integration Patterns是由65種設(shè)計(jì)模式組成的組,該模式在書中以相同的名稱進(jìn)行編譯,并由Gregor Hohpe和Bobby Woolf于2003年編寫。定義這些設(shè)計(jì)模式的目的是需要標(biāo)準(zhǔn)化程序和建立模型。為開發(fā)人員提供的參考,以處理建筑集成解決方案。
這組集成設(shè)計(jì)模式是經(jīng)驗(yàn)豐富的開發(fā)人員多年來重新使用實(shí)踐的結(jié)果,它們每個(gè)都描述了針對(duì)特定設(shè)計(jì)問題(與不同系統(tǒng)之間的通信有關(guān))的基本解決方案。
一旦完成本課程,您將了解Spring Integration的API如何基于這些企業(yè)集成模式,因?yàn)槠湓O(shè)計(jì)靈感來自于上本書中解釋的概念。 第一篇教程將簡(jiǎn)要介紹這些概念,以使您在了解如何構(gòu)建Spring Integration時(shí)熟悉它們。
3.整合策略
應(yīng)用程序或系統(tǒng)之間的集成任務(wù)一直非常困難。 部分原因是應(yīng)用程序可以用不同的編程語言編寫(由于一個(gè)系統(tǒng)無法理解另一個(gè)系統(tǒng),因此無法進(jìn)行通信)或使用不同的數(shù)據(jù)格式(消息不兼容)。 多年來,為了解決這些問題并完成集成應(yīng)用程序的挑戰(zhàn),已采用了不同的方法。 基本上有以下四種簡(jiǎn)要描述的策略:
文件傳輸
此策略涉及應(yīng)用程序通過使用文件共享信息。 您可以具有一個(gè)或多個(gè)應(yīng)用程序來生成包含信息的文件(生產(chǎn)者),而其他應(yīng)用程序?qū)⑹褂么藬?shù)據(jù)(消費(fèi)者)。 要考慮的最重要的事情之一就是確定文件中的數(shù)據(jù)將采用哪種標(biāo)準(zhǔn)格式,因?yàn)樗猩婕暗膽?yīng)用程序都應(yīng)該知道如何處理它。 最受歡迎的格式之一是XML的使用。
設(shè)置數(shù)據(jù)格式后,可能會(huì)有多個(gè)應(yīng)用程序以不同方式使用該文件中的信息。 為此,使用方的應(yīng)用程序?qū)⑿枰粋€(gè)具有目標(biāo)的攔截器,以轉(zhuǎn)換生成文件的格式,從而使其可以適應(yīng)應(yīng)用程序的要求。
圖1
主要優(yōu)點(diǎn)是它使應(yīng)用程序彼此分離。 消費(fèi)應(yīng)用程序不需要了解生產(chǎn)應(yīng)用程序的內(nèi)部。 攔截器將處理文件,因此只要它們保持相同的文件格式,任何涉及的應(yīng)用程序中的更改都不會(huì)影響其他應(yīng)用程序。
另一方面,這種方法通常會(huì)花費(fèi)時(shí)間,因此如果您過于頻繁地需要信息,則可能不是理想的選擇。 某些應(yīng)用程序可能需要盡快顯示更新的信息。 在這種情況下,共享數(shù)據(jù)庫可能是一個(gè)更好的選擇。 要考慮的另一個(gè)方面是文件傳輸策略非常不安全,因?yàn)樗皇鞘聞?wù)性的,并且可能存在并發(fā)問題。
共享數(shù)據(jù)庫
該解決方案基于具有存儲(chǔ)所有需要共享的信息的中央數(shù)據(jù)庫。 這樣,如果您使用事務(wù)管理,則不同的應(yīng)用程序?qū)⒛軌蛲瑫r(shí)訪問相同的數(shù)據(jù)。 通過使用相同的數(shù)據(jù)庫,檢索到的信息將保持一致并且是最新的。 而且,消費(fèi)者可以快速訪問信息,以確保您不會(huì)獲取過時(shí)的數(shù)據(jù)。 如果使用文件傳輸,這將是您將要面對(duì)的缺點(diǎn)之一。
圖2
但是,您必須記住,如果多個(gè)應(yīng)用程序訪問同一數(shù)據(jù),則可能會(huì)出現(xiàn)性能問題。 某些應(yīng)用程序可能被阻止,試圖修改另一個(gè)應(yīng)用程序鎖定的數(shù)據(jù)。
在設(shè)計(jì)數(shù)據(jù)庫架構(gòu)時(shí)會(huì)發(fā)現(xiàn)另一個(gè)困難。 生成的模式應(yīng)適合所有涉及的應(yīng)用程序。 此外,您還必須考慮到架構(gòu)中的任何更改都會(huì)影響它們。 如今,如果您決定使用像MongoDB或Apache Cassandra這樣的NoSQL數(shù)據(jù)庫,則可能不會(huì)成為問題,因?yàn)檫@些類型的數(shù)據(jù)庫使用無模式數(shù)據(jù)結(jié)構(gòu)。 考慮每種類型的優(yōu)缺點(diǎn)超出了本教程的范圍。
遠(yuǎn)程過程調(diào)用
在前面討論的方法中,生產(chǎn)者產(chǎn)生信息(存儲(chǔ)在文件或數(shù)據(jù)庫中),其他人可以使用它。 但是,如果您需要根據(jù)共享數(shù)據(jù)與其他應(yīng)用程序進(jìn)行交互,該怎么辦? 這里存在一個(gè)問題,因?yàn)樯a(chǎn)者不知道使用中的應(yīng)用程序的內(nèi)部。 您需要某種抽象機(jī)制。 這是遠(yuǎn)程過程調(diào)用的來源。
圖3
遠(yuǎn)程過程調(diào)用由一個(gè)應(yīng)用程序通過存根與另一個(gè)應(yīng)用程序直接交互組成。 客戶端通過本地過程調(diào)用調(diào)用一個(gè)存根(client stub),然后存根將消息發(fā)送到服務(wù)器,另一個(gè)存根(骨架)將在其中接收消息并調(diào)用服務(wù)器過程。
這種方法的缺點(diǎn)是應(yīng)用程序緊密耦合,并且調(diào)用速度很慢。 這將我們帶到了最后一個(gè)策略,即消息傳遞。
訊息傳遞
如果您需要在應(yīng)用程序之間交換少量信息,則更適合使用消息傳遞 。 消息傳遞的最大好處是組件(生產(chǎn)者和消費(fèi)者)是分離的。 生產(chǎn)者可以發(fā)送消息而無需知道對(duì)方在哪。 可能會(huì)有一個(gè)或多個(gè)消費(fèi)者將收到該消息,但這與生產(chǎn)者無關(guān)。
圖4
另一個(gè)重要功能是消息傳遞可以異步完成。 這意味著生產(chǎn)者可以發(fā)送消息并繼續(xù)其邏輯,而不必阻塞以等待消費(fèi)者返回響應(yīng)。 消費(fèi)者處理完消息并發(fā)送響應(yīng)后,將通知生產(chǎn)者。
這種方法的主要缺點(diǎn)是它的復(fù)雜性,特別是在處理異步消息傳遞時(shí)。
企業(yè)集成模式的作者通常認(rèn)為此策略是集成企業(yè)應(yīng)用程序的最佳方法,而Spring Integration項(xiàng)目也基于該策略。 因此,本教程的其余部分將基于此策略。
基于這種策略的架構(gòu)稱為消息驅(qū)動(dòng)架構(gòu)。 下一節(jié)將說明其基本概念,在本課程中將廣泛使用它們的基本概念。
4.消息驅(qū)動(dòng)架構(gòu)
消息驅(qū)動(dòng)的體系結(jié)構(gòu)是基于您在上一節(jié)中看到的消息傳遞策略的體系結(jié)構(gòu)。 下面解釋了構(gòu)建此策略的基本概念:
- 消息 :在應(yīng)用程序之間或同一應(yīng)用程序的不同組件之間共享的信息量。 該消息是一種數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)由包含有關(guān)消息的元信息的標(biāo)頭和包含我們要共享的信息的正文組成。
- 生產(chǎn)者 :創(chuàng)建(產(chǎn)生)消息并將其發(fā)送到消息通道的組件。 消息可以同步發(fā)送,因此生產(chǎn)者將阻塞其線程并等待,直到收到響應(yīng)為止。 但是,如果處理可能需要一些時(shí)間,則有更好的選擇。 生產(chǎn)者可以異步發(fā)送消息。
- 消息通道 :消息通道是將生產(chǎn)者連接到一個(gè)或幾個(gè)使用者的某種管道或隊(duì)列。
- 使用者 :從消息通道檢索(消費(fèi))消息并對(duì)其進(jìn)行處理的組件。 (可選)將響應(yīng)發(fā)送回生產(chǎn)者。
這種消息驅(qū)動(dòng)的方法松散地耦合了應(yīng)用程序。 異步通信以一種應(yīng)用程序不需要知道另一個(gè)應(yīng)用程序是否處于活動(dòng)狀態(tài)的方式連接兩個(gè)應(yīng)用程序。 生產(chǎn)者可以發(fā)送消息而忽略它,繼續(xù)自己的工作。 如果發(fā)送過程需要響應(yīng),將通知生產(chǎn)者以處理結(jié)果。
5.同步和異步通信
同步通信允許兩個(gè)部分都處于活動(dòng)狀態(tài)的實(shí)時(shí)對(duì)話。 發(fā)送方發(fā)送消息,并等待接收方對(duì)其進(jìn)行處理并返回響應(yīng)。 當(dāng)生產(chǎn)者需要立即響應(yīng)以繼續(xù)其任務(wù)時(shí),這很有用。 這種類型的通訊有其缺點(diǎn)。 例如,如果接收方處理需要時(shí)間,則發(fā)送方需要完成的下一個(gè)任務(wù)將被延遲。 甚至更糟的是,消費(fèi)者可能不活躍。 常見的解決方案是建立超時(shí)并在響應(yīng)花費(fèi)太多時(shí)間時(shí)進(jìn)行處理。
異步通信允許兩個(gè)部分解耦,每個(gè)部分可能在不同的時(shí)間起作用(接收方在發(fā)送時(shí)可能不處于活動(dòng)狀態(tài))。 當(dāng)發(fā)件人不需要立即響應(yīng)時(shí),這種方法很常見。 它將繼續(xù)處理其任務(wù),直到收到響應(yīng)。 當(dāng)接收器處理需要時(shí)間時(shí),異步通信就足夠了。
Spring Integration允許兩種通信類型,每種通信都有其優(yōu)點(diǎn)和缺點(diǎn)。 在本課程的以下教程中,您將了解如何實(shí)現(xiàn)這一目標(biāo),并能夠確定在每種情況下哪一種更為合適。
翻譯自: https://www.javacodegeeks.com/2015/09/introduction-to-enterprise-application-integration.html
總結(jié)
以上是生活随笔為你收集整理的企业应用程序集成简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 河北产品备案查询(河北产品备案)
- 下一篇: junit testng_TestNG或