匯出 (0) 列印
全部展開

移轉使用訊息技術的應用程式

更新日期: 2014年1月

作者:Kun Cheng
參與者:Sreedhar Pelluru、Valery Mizonov、Christian Martinez、Rama Ramani
審稿者:Steve Howard、Seth Manheim

訊息佇列常用於應用程式彼此通訊,或是應用程式本身的元件內進行通訊。在設計新型應用程式架構時,架構設計人員和開發人員可以使用訊息佇列來建立非同步通訊通道。訊息佇列可讓傳送者傳送訊息並繼續執行其他工作,而不等候來自接收者的回應。接收者獨立接收和處理訊息,而不會封鎖傳送者。此機制可協助分離原來緊密整合的應用程式元件,實現更具彈性且更容易擴充的方案。

從內部部署移轉應用程式到 Windows Azure 時,我們建議架構設計人員和開發人員檢查目前的架構,以及識別使用 Windows Azure 佇列或Microsoft Azure 服務匯流排的可能性,以利用鬆散偶合的架構,以及特別是在 Windows Azure 平台上延展的能力。

Windows Azure 佇列是以 Windows Azure 儲存體為基礎,提供基本佇列機制以支援點對點通訊。Windows Azure 佇列支援透過 REST 架構 HTTP 或 HTTPS 存取。每個訊息佇列最多支援 100 TB 容量 (目前儲存體帳戶的限制)。每個訊息的大小上限是 64 KB。如需詳細資訊,請參閱這份文件


Windows Azure 佇列最常見的用法是,Web 角色當做傳送者將工作項目加入佇列。您也可以將其用於背景工作角色當做接收者,清除佇列並以非同步方式處理工作項目。


Windows Azure 平台透過服務匯流排,也會提供以佇列為基礎的傳訊。除了佇列之外,服務匯流排也提供安全傳訊及轉送功能,以支援 Windows Azure 上的分散式應用程式或跨內部部署與 Windows Azure 混合式的應用程式部署。對於傳訊機制,服務匯流排支援透過 服務匯流排佇列的點對點通訊,以及透過 服務匯流排主題和訂用的發佈-訂用 (pub-sub) 模型。服務匯流排主題和訂用允許多個訂戶同時接聽單一發行者。轉送功能實現混合方案案例,其中內部部署或在私人雲端上的企業資產可以擴充並與雲端資源通訊。服務匯流排支援透過 REST 架構 HTTP/HTTPS 或 TCP 通訊協定存取。每個服務匯流排佇列的最大容量是 5 GB。每個訊息的大小上限是 256 KB。

Windows Azure 佇列和服務匯流排佇列之間有許多差異,包括驗證、交易支援和 WCF 整合。如需這兩種佇列技術之間的詳細比較,請參閱<Windows Azure 佇列和 Windows Azure 服務佇列 - 比較和對比>文件。

Windows 應用程式通常使用 Microsoft Message Queuing (MSMQ) 做為佇列機制。MSMQ 允許在不同伺服器、不同處理序中執行的應用程式以持續、鬆散偶合的方式彼此通訊。它也可讓位於異質性網路環境的應用程式交換資訊,即使應用程式不是同時在線上。它會提供保證訊息傳遞、分散式交易支援、有效率的路由、安全性和以優先權為基礎的傳訊。

將依賴 MSMQ 技術的應用程式移轉到 Windows Azure 平台時,請記住 Windows Azure 目前不支援 MSMQ。移轉需要您變更程式碼使用 Windows Azure 佇列。下列各節為依賴 MSMQ 技術的應用程式移轉到 Windows Azure 平台提供不同的選項。

在許多方面,服務匯流排是 Windows Azure 中最接近 MSMQ 的功能。它們共用類似功能,如基本佇列作業、交易支援和無效信件。不過,使用服務匯流排所需的應用程式開發介面與 MSMQ 不同,而語意在許多方面也不同。下列清單提供大小和效能等方面的一些主要差異:

  • 服務匯流排訊息大小上限是 256 KB (包含標頭和主體),而 MSMQ 訊息的大小上限則為 4 MB。

  • 服務匯流排佇列的大小上限為 5 GB。MSMQ 佇列大小受到電腦硬體或可設定配額的限制。

  • 服務匯流排佇列輸送量最多可達到每秒 2,000 個訊息,而 MSMQ 輸送量可達到每秒超過 6,000 個訊息 (根據 1k 基準)。如需詳細資訊,請參閱<在 Microsoft 訊息佇列伺服器環境中最佳化效能>。.

為了促進移轉,您可以透過橋接器,在內部部署 MSMQ 與 Windows Azure 上的服務匯流排之間建立連結。請參閱這裡的範例程式碼。

Windows Azure 佇列提供基本的點對點通訊通道。不同於 MSMQ,Windows Azure 佇列不支援異質性環境。此外,它們原生不支援一般 MSMQ 環境支援的功能,如自動無效信件、交易和排序保證。但是,應用程式開發人員可以在 Windows Azure 佇列的上方實作必要功能,以達成類似 MSMQ 的功能。不過,達成此功能需要自訂應用程式。

因為 Windows Server 內建支援 MSMQ,在與背景工作角色相同的節點上執行 MSMQ,具有 MSMQ 內部部署的完整功能。但是背景工作角色受限於容錯移轉和服務維護。發生此狀況時,所有狀態資訊 (例如儲存在本機 MSMQ 儲存體中的訊息) 都會遺失而變得無法復原。除非 MSMQ 是以無狀態的方式使用,而且應用程式設計為能夠處理角色容錯移轉情況,否則不建議在背景工作角色執行個體中執行 MSMQ。

顯示:
© 2014 Microsoft