《企業整合模式》讀書筆記 第三章

2021-10-09 12:00:13 字數 1680 閱讀 4076

本書英文全名為《enterprise integration patterns: designing, building, and deploying messaging solutions 》對應的中譯版為《企業整合模式——設計、構建及部署訊息傳遞解決方案》,出版於 2003 年。絕對稱得上是老前輩了…

本章標題為"訊息傳遞系統",意在介紹乙個完整的訊息傳遞系統應該包含哪些關鍵元件,並且這些元件的作用又分別是什麼。

訊息傳遞系統在具體實現上雖然會因為廠商的不同而不同,但在基本概念方面,它們至少要滿足以下幾條:

通道。應用與應用之間交換資料時使用的虛擬管道。

訊息。被交換的資料在訊息傳遞系統中的統稱。

管道和過濾器。用來解決互動的雙方資料格式不一致的情況。

路由。解決訊息從乙個應用發往另外乙個應用時的路徑選擇問題。

端點。用於將應用接入到基於訊息傳遞進行整合的架構體系中。

上一小節,我們對訊息傳遞系統中的關鍵性概念進行了簡要介紹,本小節將對其進行逐一完善。

3.1 通道(channel)

訊息傳遞的方式和目的地都不是隨機的,我們需要通過建立特定的訊息通道來規範訊息的投遞。

通道絕大多數情況下應該被預先設定,應該被推遲到執行時的情況極少。

解耦性:實現了應用的解耦合,使他們不必知道彼此的位置。

3.2 訊息(message)

由兩部分組成,分別是訊息頭部和訊息體,其中訊息頭部將被由訊息傳遞系統進行消費,判斷如何操作該訊息;而訊息體中放置的則是應用傳遞給其他應用的資料。

訊息本身必須是可序列化,因為整合涉及到程序間的呼叫,因此被作為訊息傳遞的資料必須能夠被序列/反序列化。

3.3 管道和過濾器(pipeline and filter)

在解決整合的雙方資料格式不一致的前提下保持彼此的松耦合。將轉換的邏輯提取到專門的元件中,其他元件不需要進行任何修改。滿足開閉原則,

使用"管道和過濾器"提高了可測試性。對於加解密元件,我們將聚焦測試其唯一的加解密功能。

另外一大優勢是單個元件的可組合性,採取樂高積木的方式拼接出強大的功能。

3.4 路由(route)

將目的地的選擇這項需求從單個元件中抽離到專門的訊息路由器中,實現"單一職責"。

不會修改訊息的內容,只關心訊息的目標。

解耦性:相較於通過,"路由"甚至不要求在應用之間協商建立共同的訊息通道。

3.5 轉換(transfer)

負責處理應用的雙方資料格式不一致的情況。

轉換有四個層次,從下到上(從底層到上層)分別是:

a. 傳輸協議。例如請求者採取的是rpc呼叫,而響應者要求使用http。

b. 資料表示。例如對呼叫方傳送的資料需要加密之後再發給服務方。

c. 資料型別。資料型別的轉換,例如將日期轉化為字串以讓對方識別等等。

d. 資料結構(應用層)。應用語義層面的轉換(老實說看到這裡筆者都有點亂了…)。

解耦性:在"通道"和"路由"的解耦性基礎上,"轉換"消除了彼此資料格式不同上導致的耦合性。

3.6 端點(endpoint)

負責將應用和訊息傳遞通道鏈結起來,它是訊息傳遞系統的客戶,而應用正是使用它來傳送或接收訊息。

是乙個特殊化的通道適配元件,要為應用定製開發。

本章作為詳細介紹訊息傳遞系統的總章,概要介紹了整個訊息傳遞系統中涉及到的關鍵性元件,為之後的四,五,七,八,十章中針對對應元件的詳細介紹打下基礎。

第三章讀書筆記

程序管理 3.1程序 程序就是處於執行期的程式 目標碼存放在某種儲存介質上 但程序並不僅僅侷限於一段可執行程式 執行執行緒,執行緒,是程序活動的物件。兩種虛擬機制 虛擬處理器和虛擬記憶體。最終,程式通過exit 系統呼叫退出執行。3.2程序描述及任務結構 核心把程序的列表存放在叫做任務佇列的雙向迴圈...

第三章讀書筆記

本章是講了git的使用入門,為學習本書的人展示了git的基本用法。儘管git並不是學習android移植和linux核心 驅動開發必須掌握的技術。但對於深入研究這些底層技術的人來說,git將成為學習過程中必不可少的工具。git是什麼,git就是乙個開源的分布式版本控制系統,用以有效 高速的處理從很小...

UNP讀書筆記第三章

網路位元組序和主機位元組序大小端不一樣。linux提供了4個轉換函式 include uint16 t htons uint16 t value uint32 t htonl uint 32t value uint16 t ntohs uin16 t value uint32 t ntohl uin...