天天看點

《微軟雲計算Windows Azure開發與部署權威指南》——6.5 AppFabric服務總線基礎概念

本節書摘來自異步社群《微軟雲計算windows azure開發與部署權威指南》一書中的第6章,第6.5節,作者: 尹成 , 郝庭毅 , 張俊強 , 孫奉剛 , 寇睿明 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

在大型分布式應用程式中最常見的需求之一就是連通性,而應用程式的整合通常也是it領域中花費最高、最麻煩的。目前大多數組織機構都采用企業服務總線(esb)這一解決方案。

作為windows azure平台的一部分,服務總線讓esb模式在整個internet領域中成為現實。服務總線提供了很多可以在典型的esb解決方案中看到的體系結構特點,包括身份認證和通路控制、命名、服務注冊、公共消息池等。對于appfabric服務總線,這些元件必須設計為能夠在雲端操作,面向的是整個internet領域,并且要有高度的可擴充性和聯合性。

服務總線可以把本地的esb産品和運作在雲端的服務整合,使用大量第三方提供的服務,比如微軟或者其他提供商,以及運作在企業防火牆之外的各種桌面級、ria(rich internet application)和web應用程式。

1.中繼連接配接

現今,大量諸如即時消息、線上多人遊戲、使用比如bittorrent協定的對等檔案共享應用程式等占據了網絡傳輸中很大的比重。這些應用程式都是通過寫低層的網絡邏輯來實作穿過防火牆和nat(network address transfer)裝置以建立對等連接配接的。它們通常都通過一個中繼服務來提供連接配接邏輯,如圖6-43所示。

《微軟雲計算Windows Azure開發與部署權威指南》——6.5 AppFabric服務總線基礎概念

它的工作方式是:本地化服務通過出站端口連接配接中繼服務并建立一個雙向套接字綁定到特定的集結點位址來通信。用戶端通過向中介服務發送消息實作與本地化的服務端通信。中繼服務通過早已準備好的雙向套接字連接配接将消息轉發給本地化的服務端。用戶端不需要和服務端建立連接配接,也不必知道服務端在哪,而服務端也不需要在防火牆上打開入站端口。

使用服務總線中繼,可以充分利用單向消息、請求—響應、釋出—訂閱(多點傳播)甚至異步和緩沖消息的優點。

2.直接互連性

除了中繼通信,服務總線還提供了在用戶端和服務端建立直接連接配接的能力以提高效能和吞吐量。用戶端和服務端仍然先通過公共集結點位址與中繼通信,然後中繼會幫助它們直接互連以避免未來的中繼轉發。

中繼基于用戶端和服務端的探詢資訊,使用公共端口預測算法來實作二者的直接互連。中繼服務檢視探詢資訊,然後盡力預測接下來哪些端口會在兩個nat裝置上打開。之後,中繼向用戶端和服務端提供資訊,它們就可以嘗試建立連接配接了。如果中繼服務預測準确,連接配接将會建立成功;否則,中繼會繼續預測直到決定放棄直接互連,繼續使用中繼連接配接,如圖6-44所示。

《微軟雲計算Windows Azure開發與部署權威指南》——6.5 AppFabric服務總線基礎概念

https://yqfile.alicdn.com/36e4741b77932c8aa712d383806120b4ded636e3.png" >

3.中繼位址

了解如何為服務總線端點(endpoint)構造集結點位址對于使用服務總線非常重要。當公開一個基于tcp的端點時,位址構造如下。

當要使用一個基于http的位址時,隻需要将“sb”協定替換為“http”或者“https”。

要注意位址必須以命名空間開始,以差別于服務總線上其他使用者使用的端點。位址中包含的命名空間域名之後的部分可以随便起名字。

4.服務注冊中心

服務總線提供服務注冊中心來釋出服務和為某個解決方案尋找服務端點。服務總線自動将公開端點釋出在服務注冊中心裡,這樣其他人通過浏覽該服務命名空間的基位址來發現該服務,在這個命名空間基位址可以檢索到包含該端點資訊的訂閱。

為了確定一個端點會出現在服務注冊中心,必須配置該端點以被廣泛發現。隻需将端點與serviceregistrysettings行為關聯起來,并将discoverymodel設定為discoverytype.public。

5.與wcf整合

在.net平台上使用服務總線的主要程式設計模型是wcf(windows communication foundation)。在相應的sdk中帶有一套可以自動将wcf服務端和用戶端與中繼服務整合的wcf中繼綁定操作集。大多數情況下,隻需要将目前使用的wcf綁定替換為服務總線綁定即可。

表6-2中列出了所有的服務總線綁定和對應的标準wcf綁定。像basichttpbinding、webhttpbinding、ws2007httpbinding和nettcpbinding這些最常用的綁定都對應一個名字非常相似的服務總線綁定(僅僅在binding前添加了relay)。隻有很少的中繼綁定如netonewayrelaybinding和neteventrelaybinding在wcf中沒有相應的綁定。

《微軟雲計算Windows Azure開發與部署權威指南》——6.5 AppFabric服務總線基礎概念

繼續閱讀