Azure 消息 & 事件服務的選擇 – 下篇

來源: Microsoft Azure
作者:Microsoft Azure
時間:2020-12-14
17063
在上篇和中篇我們分別對了消息事件服務中五種類型服務做了介紹和對比,它們包括Storage queue、Service bus queue、Service bus topic、Event Hub和IOT。這篇文章我們繼續(xù)對剩下的三種服務做介紹.

在上篇和中篇我們分別對了消息/事件服務中五種類型服務做了介紹和對比,它們包括Storage queue、Service bus queue、Service bus topic、Event Hub和IOT。這篇文章我們繼續(xù)對剩下的三種服務做介紹,其中Service bus Relay和Notification Hub相比較之前的五種消息服務,有比較大的區(qū)別,應用場景和功能也有比價突出的特點,而Event Gird則又是Azure平臺最新推出的一種Serverless服務,接下來我們就這三種服務分別做介紹。

1.Service bus Relay

a.什么是Service bus Relay

在解釋這個問題前,我們可以先想一個問題,假設用戶需要去連接一個運行在防火墻后面的應用有哪些解決方案:

·開啟防火墻的一個端口

·設置VPN從而連接到應用所在的網絡

對于解決方案一,通常我們到拿到本地IT服務的許可才可以。對于方案二,不僅有方案一的問題,還需要考慮基礎設施服務的費用問題,而Azure Service bus Relay提供給用戶更好的第三種選擇。

Azure Service bus Relay是一項用來幫助用戶構建混合集成解決方案的技術,用戶可以通過使用Relay將組織外部的客戶端與組織內部的資源進行連接,從而實現(xiàn)內外應用程序的相互訪問和數(shù)據交互。

b.服務特征

Relay是如何工作的:

Relay可以理解為托管在云中的"router"。用戶的本地服務可以實現(xiàn)“聯(lián)機”并打開Service bus Relay上的"endpoint",這樣客戶端服務就能訪問該"endpoint"并發(fā)送Web調用,Relay將該Web調用"router"到用戶的本地服務中,從而實現(xiàn)客戶端與本地服務的交互。

下圖顯示了運行在組織外的客戶端如何通過Service bus Relay與組織內的應用程序進行交互:

01 (2).png

Azure Relay提供兩種用于連接應用程序和客戶端的方式:

·Hybrid Connection:它是基于標準的Http/WebSocket協(xié)議實現(xiàn)的。Hybrid Connection可以在任何具有基本WebSocket功能的平臺上使用任何語言來實現(xiàn)。

·WCF Relay:它是基于Windows Communication Foundation(WCF)的傳統(tǒng)的中繼產品,適用于完整的.NET Framework和WCF架構。用戶通過使用一系列的WCF綁定實現(xiàn)本地和中繼服務間的連接。

下表是Hybrid Connection和WCF Relay間的區(qū)別:

微信圖片_20201214094849.png

c.Service bus queueService bus topic和Service bus Relay的區(qū)別:

下面的圖表是對三種服務區(qū)別的總結:

微信圖片_20201214094905.png

下圖展示了三種服務是如何進行消息傳遞:

02 (2).png

d.適用場景

基于Service bus Relay的特性,它主要適用于以下場景:

·云端和本地服務之間的通信

·本地的應用程序運行在組織內網,有防火墻隔離的環(huán)境中,需要與其他的應用程序(運行在本地或者云端)進行數(shù)據交互。

2.Notification Hub

a.什么是Notification Hub

使用移動應用程序的用戶有需求被定期推送他們感興趣的內容,而不是定期自己去檢查。因此移動應用開發(fā)者在開發(fā)程序時需要考慮增加通知推送功能。然而在實際的開發(fā)過程中,開發(fā)者需要考慮推送到多個平臺、定制化的推送消息、處理不同版本的應用程序以及擴展性等等問題。

Azure Notification Hub就是幫助開發(fā)者簡化這一過程,通過使用Azure Notification Hub開發(fā)者可以專注于移動應用端的開發(fā),而不需要開發(fā)者處理復雜的后端推送。

b.服務特征

Notification Hub為用戶提供了一個可擴展的推送通知的基礎架構,可以幫助用戶有效的跨平臺將消息推送到數(shù)百萬的終端用戶。

Notification Hub解決的最主要的一個問題是“如何將推送通知通過各種各樣的特定平臺的服務傳遞給相應的設備”(例如,Windows Store應用程序只能通過Windows Notification Service(WNS)被推送得到通知,而IOS設備只能通過Apple Push Notification service(APNs)被推送通知,同樣的,Android設備只能通過Google Cloud Messaging(GCM)被推送通知)。另外Notification Hub還提供給用戶以下功能:

i.設備管理:Notification Hub減輕了后端要存儲管理Channel URL以及device token(用于各大推送服務推送消息)的壓力。Notification Hub會安全可靠的幫用戶存儲處理PNS feedback、device token等信息。

ii.基于tag的多播和pub/sub分發(fā)模式:一臺設備在Notification Hub中注冊時可以指定一個或多個tag,用來表示該用戶對某類的通知感興趣。這個功能提供給用戶一個非常簡單的方式,可以通過調用單個API向百萬級別的目標設備端發(fā)送推送通知,而不需要用戶自己考慮如何實現(xiàn)向每臺設備發(fā)送通知的問題。

iii.Notification Hub提供給用戶基于template發(fā)送推送通知的功能,這樣用戶可以自定義通知的格式、內容等信息,同時也與后端代碼保持獨立。

iv.高度的可擴展性:Notification Hub支持用戶注冊百萬級別的設備,用戶只需要觸發(fā)一條推送消息到Notification Hub,它會自動將推送消息通過推送服務以低延遲的性能發(fā)送到百萬級別的設備端。

下圖顯示了通過Notification Hub推送通知的過程:

03 (1).png

c.適用場景

Azure Notification Hub是一種不同類型的消息傳遞服務。它不像上面我們介紹到的消息服務,用于應用程序之間或使用微服務架構來發(fā)送消息,Azure通知中心可以從任何服務(在Azure,本地或其他地方)向在移動設備(Windows,iOS或Android)上運行的移動端應用程序發(fā)送推送通知。

基于Notification Hub的特性,它的使用場景非常明確,它非常適用于移動應用程序跨手機、平板和PG的消息推送場景。

3.Event Grid(目前暫時在中國沒有上線)

a.什么是Event Grid

Event Grid于2018年1月正式上線,是一項比較新的事件傳遞服務,在它使得基于事件的應用架構(如微服務和Event-Driven系統(tǒng))的構建更容易。

Event Grid提供給用戶一種實時、可靠、可擴展且基于事件的應用架構,可用于管理事件路由且可以處理每秒百萬級別的數(shù)據吞吐量。

b.服務特征

使用Event Grid時用戶需要指定Source和Event Handdlers/WebHook,Source用于推送事件而Handler用于接收事件,Event Grid支持Azure平臺中服務如Storage blob或Event Hub作為Source(數(shù)據來源),同時也支持第三方的資源或者用戶使用自定義topic作為Source。用戶可以通過Source將時間發(fā)送到某個topic中,而每個topic則可以有多個subscriber/handler。用戶可以在Event Grid上使用filters將特定的event數(shù)據安全的路由到一個或者多個endpoint中。

除了以上基本功能之外,Event Grid還提供給用戶以下功能:

i.Event Domains,它允許用戶通過Azure Active Directory對多達數(shù)千個topic進行授權和身份管理,此外,Domain還支持partition的處理,換句話說,用戶不需要單獨向每個topic發(fā)布事件,而是將事件發(fā)布給domain,它可以確保將事件發(fā)送到正確的topic。

ii.高級Filter,Event Grid也提供給用戶更強大與Service bus topic的Filter功能,這體現(xiàn)在用戶創(chuàng)建多個類型的Filter,例如數(shù)字、字符串、布爾值。這使得用戶對事件的路由控有更好的控制和發(fā)揮空間。

iii.管理:用戶可以為Event Grid啟用重試策略和死信隊列功能,也可以檢測匹配和不匹配事件以及每個subscriber上出現(xiàn)的錯誤和延遲。

下圖顯示了Event Grid如何連接Source和Handlers:

04.png

c.與Service bus topic的區(qū)別

雖然Azure Event Grid也是采用pub-sub的模式分發(fā)消息并且也有topic的概念,但是這兩個服務是不同的,有如下區(qū)別:

i.消息接收模式:Event Grid是push的模式,而Service bus topic是pull的模式。也就是說當用戶使用Service bus topic接收消息時需要管理并控制何時或者接收多少的消息,而使用Event Gird只要handlers保持與Event Gird的連接,事件就會被實時推送到對應的handlers中。也正是因為這點差異,用戶使用Service bus topic更具有靈活性和可控性,如果當接收端接收的速度跟不上發(fā)送端的速度時,可以先將消息積存在topic服務中,而使用Event Grid用戶需要保證Handler有足夠的能力處理來事件的負載。

ii.吞吐量:Event Grid可以保證每秒鐘千萬級別的的事件量,而這一點是Service bus topic遠遠達不到的。

更多關于Service bus topicEvent Grid的區(qū)別,可以參考:官方鏈接。

d.適用場景

i.Serverless架構

作為正真意義上的ServerLess服務,Event Grid可以很好的應用到各種ServerLess架構中,通過使用ServerLess類型的Handler服務(如logic app/function),用戶可以充分利用ServerLess架構的強大功能對事件處理進行高度的擴展。

ii.Enterprise integration

Event Grid提供可靠的事件消息傳遞,包括重試和死信隊列,因此可以保證用戶事件不丟失,這非常好的滿足企業(yè)集成方案的需求。

iii.Cloud Events

作為支持CloudEvents標準的首批服務之一,CloudEvents提供了一種允許跨平臺處理事件的標準。隨著Azure,AWS,Google,IBM等各大廠商支持此標準,通過這種方式我們可以使用任何平臺或應用程序來處理事件,實現(xiàn)格式統(tǒng)一,從而輕松實現(xiàn)應用集成和相互操作。

雖然這篇文章盡可能詳細的介紹這幾種不同的消息&事件服務的區(qū)別和選擇,然而在實際的應用場景中,我們經常會將這幾種服務結合在一起使用并且在不同的應用環(huán)境下,根據用戶的考慮因素,產品的選擇也會有不同。如果您通過以上的解釋還是無法抉擇選擇哪種服務,歡迎您聯(lián)系Microsoft技術支持團隊,我們會就您的特定的需求和環(huán)境幫助您做進一步的分析和抉擇。

立即登錄,閱讀全文
版權說明:
本文內容來自于Microsoft Azure,本站不擁有所有權,不承擔相關法律責任。文章內容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權,請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質服務商推薦
更多
掃碼登錄
打開掃一掃, 關注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家