Azure 消息 & 事件服務(wù)的選擇 – 下篇

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

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

1.Service bus Relay

a.什么是Service bus Relay

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

·開啟防火墻的一個(gè)端口

·設(shè)置VPN從而連接到應(yīng)用所在的網(wǎng)絡(luò)

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

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

b.服務(wù)特征

Relay是如何工作的:

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

下圖顯示了運(yùn)行在組織外的客戶端如何通過Service bus Relay與組織內(nèi)的應(yīng)用程序進(jìn)行交互:

01 (2).png

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

·Hybrid Connection:它是基于標(biāo)準(zhǔn)的Http/WebSocket協(xié)議實(shí)現(xiàn)的。Hybrid Connection可以在任何具有基本W(wǎng)ebSocket功能的平臺(tái)上使用任何語言來實(shí)現(xiàn)。

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

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

微信圖片_20201214094849.png

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

下面的圖表是對(duì)三種服務(wù)區(qū)別的總結(jié):

微信圖片_20201214094905.png

下圖展示了三種服務(wù)是如何進(jìn)行消息傳遞:

02 (2).png

d.適用場景

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

·云端和本地服務(wù)之間的通信

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

2.Notification Hub

a.什么是Notification Hub

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

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

b.服務(wù)特征

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

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

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

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

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

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

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

03 (1).png

c.適用場景

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

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

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

a.什么是Event Grid

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

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

b.服務(wù)特征

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

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

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

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

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

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

04.png

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

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

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

ii.吞吐量:Event Grid可以保證每秒鐘千萬級(jí)別的的事件量,而這一點(diǎn)是Service bus topic遠(yuǎn)遠(yuǎn)達(dá)不到的。

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

d.適用場景

i.Serverless架構(gòu)

作為正真意義上的ServerLess服務(wù),Event Grid可以很好的應(yīng)用到各種ServerLess架構(gòu)中,通過使用ServerLess類型的Handler服務(wù)(如logic app/function),用戶可以充分利用ServerLess架構(gòu)的強(qiáng)大功能對(duì)事件處理進(jìn)行高度的擴(kuò)展。

ii.Enterprise integration

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

iii.Cloud Events

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

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

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于Microsoft Azure,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
Azure Arc為企業(yè)構(gòu)建安全的云基礎(chǔ)
Azure Arc為企業(yè)構(gòu)建安全的云基礎(chǔ)
隨著人工智能技術(shù)持續(xù)重塑企業(yè)運(yùn)營方式,企業(yè)需要能夠處理海量數(shù)據(jù)的系統(tǒng),以支持實(shí)時(shí)洞察,同時(shí)幫助他們應(yīng)對(duì)跨IT和OT環(huán)境(包括云端、邊緣和本地)中運(yùn)營、應(yīng)用、數(shù)據(jù)和基礎(chǔ)設(shè)施的協(xié)作難題。
Azure
微軟云
云服務(wù)
2024-12-172024-12-17
釋放.NET 9和Azure的AI技術(shù)與云計(jì)算潛力:更快、更智能、面向未來
釋放.NET 9和Azure的AI技術(shù)與云計(jì)算潛力:更快、更智能、面向未來
.NET 9現(xiàn)已正式發(fā)布,它為.NET平臺(tái)的發(fā)展掀開了嶄新的一頁,突破了性能、云原生開發(fā)和AI技術(shù)集成的邊界。
Azure
微軟云
云服務(wù)
2024-12-162024-12-16
Azure網(wǎng)絡(luò)管理現(xiàn)已具備智能Microsoft Copilot副駕駛能力
Azure網(wǎng)絡(luò)管理現(xiàn)已具備智能Microsoft Copilot副駕駛能力
智能Microsoft Copilot副駕駛for Azure網(wǎng)絡(luò)服務(wù)現(xiàn)已推出公共預(yù)覽版。
Azure
微軟云
云服務(wù)
2024-12-102024-12-10
Microsoft Fabric功能更新,借助AI驅(qū)動(dòng)的數(shù)據(jù)平臺(tái)加速應(yīng)用創(chuàng)新
Microsoft Fabric功能更新,借助AI驅(qū)動(dòng)的數(shù)據(jù)平臺(tái)加速應(yīng)用創(chuàng)新
一年前,我們正式推出了一款端到端數(shù)據(jù)平臺(tái),旨在幫助組織推動(dòng)人工智能轉(zhuǎn)型,并重新定義數(shù)據(jù)的連接、管理和分析方式。
Azure
微軟云
云服務(wù)
2024-12-092024-12-09
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家