Azure 消息 & 事件服務(wù)的選擇 – 下篇,azure ai配音Azure 消息 & 事件服務(wù)的選擇 – 下篇在上篇和中篇我們分別對(duì)了消息/事件服務(wù)中五種類型服務(wù)做了介紹和對(duì)比,它們包括Storage queue、Service bus queue、Service bus topic、Event Hub和IOT。這......
在上篇和中篇我們分別對(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)用場(chǎng)景和功能也有比價(jià)突出的特點(diǎn),而Event Gird則又是Azure平臺(tái)最新推出的一種Serverless服務(wù),接下來(lái)我們就這三種服務(wù)分別做介紹。
1.Service bus Relay
a.什么是Service bus Relay
在解釋這個(gè)問(wèn)題前,我們可以先想一個(gè)問(wèn)題,假設(shè)用戶需要去連接一個(gè)運(yùn)行在防火墻后面的應(yīng)用有哪些解決方案:
·開(kāi)啟防火墻的一個(gè)端口
·設(shè)置VPN從而連接到應(yīng)用所在的網(wǎng)絡(luò)
對(duì)于解決方案一,通常我們到拿到本地IT服務(wù)的許可才可以。對(duì)于方案二,不僅有方案一的問(wèn)題,還需要考慮基礎(chǔ)設(shè)施服務(wù)的費(fèi)用問(wèn)題,而Azure Service bus Relay提供給用戶更好的第三種選擇。
Azure Service bus Relay是一項(xiàng)用來(lái)幫助用戶構(gòu)建混合集成解決方案的技術(shù),用戶可以通過(guò)使用Relay將組織外部的客戶端與組織內(nèi)部的資源進(jìn)行連接,從而實(shí)現(xiàn)內(nèi)外應(yīng)用程序的相互訪問(wèn)和數(shù)據(jù)交互。
b.服務(wù)特征
Relay是如何工作的:
Relay可以理解為托管在云中的router。用戶的本地服務(wù)可以實(shí)現(xiàn)“聯(lián)機(jī)”并打開(kāi)Service bus Relay上的endpoint,這樣客戶端服務(wù)就能訪問(wèn)該endpoint并發(fā)快遞Web調(diào)用,Relay將該Web調(diào)用router到用戶的本地服務(wù)中,從而實(shí)現(xiàn)客戶端與本地服務(wù)的交互。
下圖顯示了運(yùn)行在組織外的客戶端如何通過(guò)Service bus Relay與組織內(nèi)的應(yīng)用程序進(jìn)行交互:
Azure Relay提供兩種用于連接應(yīng)用程序和客戶端的方式:
·Hybrid Connection:它是基于標(biāo)準(zhǔn)的Http/WebSocket協(xié)議實(shí)現(xiàn)的。Hybrid Connection可以在任何具有基本W(wǎng)ebSocket功能的平臺(tái)上使用任何語(yǔ)言來(lái)實(shí)現(xiàn)。
·WCF Relay:它是基于Windows Communication Foundation(WCF)的傳統(tǒng)的中繼產(chǎn)品,適用于完整的.NET Framework和WCF架構(gòu)。用戶通過(guò)使用一系列的WCF綁定實(shí)現(xiàn)本地和中繼服務(wù)間的連接。
下表是Hybrid Connection和WCF Relay間的區(qū)別:
c.Service bus queueService bus topic和Service bus Relay的區(qū)別:
下面的圖表是對(duì)三種服務(wù)區(qū)別的總結(jié):
下圖展示了三種服務(wù)是如何進(jìn)行消息傳遞:
d.適用場(chǎng)景
基于Service bus Relay的特性,它主要適用于以下場(chǎng)景:
·云端和本地服務(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)用開(kāi)發(fā)者在開(kāi)發(fā)程序時(shí)需要考慮增加通知推快遞功能。然而在實(shí)際的開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)者需要考慮推國(guó)際快遞多個(gè)平臺(tái)、定制化的推快遞消息、處理不同版本的應(yīng)用程序以及擴(kuò)展性等等問(wèn)題。
Azure Notification Hub就是幫助開(kāi)發(fā)者簡(jiǎn)化這一過(guò)程,通過(guò)使用Azure Notification Hub開(kāi)發(fā)者可以專注于移動(dòng)應(yīng)用端的開(kāi)發(fā),而不需要開(kāi)發(fā)者處理復(fù)雜的后端推快遞。
b.服務(wù)特征
Notification Hub為用戶提供了一個(gè)可擴(kuò)展的推快遞通知的基礎(chǔ)架構(gòu),可以幫助用戶有效的跨平臺(tái)將消息推國(guó)際快遞數(shù)百萬(wàn)的終端用戶。
Notification Hub解決的最主要的一個(gè)問(wèn)題是“如何將推快遞通知通過(guò)各種各樣的特定平臺(tái)的服務(wù)傳遞給相應(yīng)的設(shè)備”(例如,Windows Store應(yīng)用程序只能通過(guò)Windows Notification Service(WNS)被推快遞得到通知,而IOS設(shè)備只能通過(guò)Apple Push Notification service(APNs)被推快遞通知,同樣的,Android設(shè)備只能通過(guò)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,用來(lái)表示該用戶對(duì)某類的通知感興趣。這個(gè)功能提供給用戶一個(gè)非常簡(jiǎn)單的方式,可以通過(guò)調(diào)用單個(gè)API向百萬(wàn)級(jí)別的目標(biāo)設(shè)備端發(fā)快遞推快遞通知,而不需要用戶自己考慮如何實(shí)現(xiàn)向每臺(tái)設(shè)備發(fā)快遞通知的問(wèn)題。
iii.Notification Hub提供給用戶基于template發(fā)快遞推快遞通知的功能,這樣用戶可以自定義通知的格式、內(nèi)容等信息,同時(shí)也與后端代碼保持獨(dú)立。
iv.高度的可擴(kuò)展性:Notification Hub支持用戶注冊(cè)百萬(wàn)級(jí)別的設(shè)備,用戶只需要觸發(fā)一條推快遞消息到Notification Hub,它會(huì)自動(dòng)將推快遞消息通過(guò)推快遞服務(wù)以低延遲的性能發(fā)國(guó)際快遞百萬(wàn)級(jí)別的設(shè)備端。
下圖顯示了通過(guò)Notification Hub推快遞通知的過(guò)程:
c.適用場(chǎng)景
Azure Notification Hub是一種不同類型的消息傳遞服務(wù)。它不像上面我們介紹到的消息服務(wù),用于應(yīng)用程序之間或使用微服務(wù)架構(gòu)來(lái)發(fā)快遞消息,Azure通知中心可以從任何服務(wù)(在Azure,本地或其他地方)向在移動(dòng)設(shè)備(Windows,iOS或Android)上運(yùn)行的移動(dòng)端應(yīng)用程序發(fā)快遞推快遞通知。
基于Notification Hub的特性,它的使用場(chǎng)景非常明確,它非常適用于移動(dòng)應(yīng)用程序跨手機(jī)、平板和PG的消息推快遞場(chǎng)景。
3.Event Grid(目前暫時(shí)在中國(guó)沒(méi)有上線)
a.什么是Event Grid
Event Grid于2018年1月正式上線,是一項(xiàng)比較新的事件傳遞服務(wù),在它使得基于事件的應(yīng)用架構(gòu)(如微服務(wù)和EventDriven系統(tǒng))的構(gòu)建更容易。
Event Grid提供給用戶一種實(shí)時(shí)、可靠、可擴(kuò)展且基于事件的應(yīng)用架構(gòu),可用于管理事件路由且可以處理每秒百萬(wàn)級(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ù)來(lái)源),同時(shí)也支持第三方的資源或者用戶使用自定義topic作為Source。用戶可以通過(guò)Source將時(shí)間發(fā)國(guó)際快遞某個(gè)topic中,而每個(gè)topic則可以有多個(gè)subscriber/handler。用戶可以在Event Grid上使用filters將特定的event數(shù)據(jù)安全的路由到一個(gè)或者多個(gè)endpoint中。
除了以上基本功能之外,Event Grid還提供給用戶以下功能:
i.Event Domains,它允許用戶通過(guò)Azure Active Directory對(duì)多達(dá)數(shù)千個(gè)topic進(jìn)行授權(quán)和身份管理,此外,Domain還支持partition的處理,換句話說(shuō),用戶不需要單獨(dú)向每個(gè)topic發(fā)布事件,而是將事件發(fā)布給domain,它可以確保將事件發(fā)國(guó)際快遞正確的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ì)列功能,也可以檢測(cè)匹配和不匹配事件以及每個(gè)subscriber上出現(xiàn)的錯(cuò)誤和延遲。
下圖顯示了Event Grid如何連接Source和Handlers:
c.與Service bus topic的區(qū)別
雖然Azure Event Grid也是采用pubsub的模式分發(fā)消息并且也有topic的概念,但是這兩個(gè)服務(wù)是不同的,有如下區(qū)別:
i.消息接收模式:Event Grid是push的模式,而Service bus topic是pull的模式。也就是說(shuō)當(dāng)用戶使用Service bus topic接收消息時(shí)需要管理并控制何時(shí)或者接收多少的消息,而使用Event Gird只要handlers保持與Event Gird的連接,事件就會(huì)被實(shí)時(shí)推國(guó)際快遞對(duì)應(yīng)的handlers中。也正是因?yàn)檫@點(diǎn)差異,用戶使用Service bus topic更具有靈活性和可控性,如果當(dāng)接收端接收的速度跟不上發(fā)快遞端的速度時(shí),可以先將消息積存在topic服務(wù)中,而使用Event Grid用戶需要保證Handler有足夠的能力處理來(lái)事件的負(fù)載。
ii.吞吐量:Event Grid可以保證每秒鐘千萬(wàn)級(jí)別的的事件量,而這一點(diǎn)是Service bus topic遠(yuǎn)遠(yuǎn)達(dá)不到的。
更多關(guān)于Service bus topicEvent Grid的區(qū)別,可以參考:官方鏈接。
d.適用場(chǎng)景
i.Serverless架構(gòu)
作為正真意義上的ServerLess服務(wù),Event Grid可以很好的應(yīng)用到各種ServerLess架構(gòu)中,通過(guò)使用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),通過(guò)這種方式我們可以使用任何平臺(tái)或應(yīng)用程序來(lái)處理事件,實(shí)現(xiàn)格式統(tǒng)一,從而輕松實(shí)現(xiàn)應(yīng)用集成和相互操作。
雖然這篇文章盡可能詳細(xì)的介紹這幾種不同的消息事件服務(wù)的區(qū)別和選擇,然而在實(shí)際的應(yīng)用場(chǎng)景中,我們經(jīng)常會(huì)將這幾種服務(wù)結(jié)合在一起使用并且在不同的應(yīng)用環(huán)境下,根據(jù)用戶的考慮因素,產(chǎn)品的選擇也會(huì)有不同。如果您通過(guò)以上的解釋還是無(wú)法抉擇選擇哪種服務(wù),歡迎您聯(lián)系Microsoft技術(shù)支持團(tuán)隊(duì),我們會(huì)就您的特定的需求和環(huán)境幫助您做進(jìn)一步的分析和抉擇。
特別聲明:以上文章內(nèi)容僅代表作者本人觀點(diǎn),不代表ESG跨境電商觀點(diǎn)或立場(chǎng)。如有關(guān)于作品內(nèi)容、版權(quán)或其它問(wèn)題請(qǐng)于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號(hào)密碼登錄
平臺(tái)顧問(wèn)
微信掃一掃
馬上聯(lián)系在線顧問(wèn)
小程序
ESG跨境小程序
手機(jī)入駐更便捷
返回頂部