

Azure 消息 & 事件服務(wù)的選擇 – 上篇,azure ai配音Azure 消息 & 事件服務(wù)的選擇 – 上篇Microsoft Azure平臺(tái)提供了不同類型處理消息或事件的服務(wù)。用戶可以將他們的應(yīng)用數(shù)據(jù)(消息/事件)傳遞到這些服務(wù)中,也可以通過一定應(yīng)用程序或者服務(wù)獲取放在這些服務(wù)中的數(shù)據(jù)。對(duì)于剛開始或者準(zhǔn)備開始使......
Microsoft Azure平臺(tái)提供了不同類型處理消息或事件的服務(wù)。用戶可以將他們的應(yīng)用數(shù)據(jù)(消息/事件)傳遞到這些服務(wù)中,也可以通過一定應(yīng)用程序或者服務(wù)獲取放在這些服務(wù)中的數(shù)據(jù)。對(duì)于剛開始或者準(zhǔn)備開始使用Azure消息事件服務(wù)的用戶來講,心里會(huì)存有以下疑問:這些消息事件服務(wù)有什么區(qū)別,各有什么特征呢?或者這些服務(wù)分別適用于哪些應(yīng)用場(chǎng)景呢?這篇文章就以上的問題展開做詳細(xì)的介紹。
首先我們來看一下在Azure平臺(tái)上有哪些可用的消息/事件服務(wù),目前Azure平臺(tái)提供8種不同類型的消息/事件服務(wù)它們分別是:
·Storage queue
·Service bus queue
·Service bus topic
·Event Hub
·IOT Hub
·Service bus Relay
·Notification Hub
·Event Grid
通過以下圖表我們先直觀清晰的對(duì)這些服務(wù)有一個(gè)大概的了解。
接下來我們就這些服務(wù)分別做相應(yīng)的介紹:
1.Storage queue
a.什么是Storage queue
Storage queue服務(wù)是Azure存儲(chǔ)提供的存儲(chǔ)服務(wù)之一,也是Azure平臺(tái)最早出現(xiàn)的messaging服務(wù),可以追溯到2010年。Storage queue允許用戶存儲(chǔ)大量的消息,這里講的量可達(dá)到甚至幾百TB的數(shù)量級(jí)。
b.適用場(chǎng)景
如果用戶剛開始接觸云端消息隊(duì)列服務(wù),并且有需求存儲(chǔ)TB數(shù)量級(jí)別的消息時(shí),可以考慮使用Storage queue。
c.服務(wù)特性
Storage queue服務(wù)的主要優(yōu)勢(shì)在于:實(shí)現(xiàn)簡(jiǎn)單,節(jié)省費(fèi)用(用多少付多少),支持存儲(chǔ)大量的消息。
另外Storage queue支持在消費(fèi)消息時(shí)at least once的模式,換句話說一個(gè)客戶端接收某條消息后,這條消息不會(huì)從服務(wù)端被刪除掉,這樣其他的客戶端也可以再次接收該條消息。因此使用Storage queue服務(wù)時(shí)要注意接收端可能會(huì)受到重復(fù)消息。
Storage queue有一項(xiàng)很有意思的功能是其他Azure消息服務(wù)沒有的,那就是Storage queue提供記錄日志的功能,用戶需要在Storage服務(wù)端開啟日志記錄功能,這樣所有對(duì)queue的操作包括這些操作來源于那些IP地址都會(huì)被記錄,方便用戶去檢索對(duì)應(yīng)的操作行為。
d.一些限制和說明
用戶在使用Storage queue的時(shí)候,有些服務(wù)端的限制也需要考慮,比如在Storage queue里能夠存儲(chǔ)的消息大小最大為64KB,消息最多可以在服務(wù)端存放7天(Max TTL=7 days)。
2.Service bus queue
a.什么是Service bus queue
Azure Service bus queue相比較Storage queue是Microsoft Azure提供的具備更強(qiáng)大功能、更復(fù)雜的消息傳遞服務(wù),可以支持更加復(fù)雜的消息傳遞解決方案。
當(dāng)我們從Service bus queue中接收消息時(shí)支持First In,First Out(FIFO)的消息傳遞模式,這種模式下每條消息只能被一個(gè)消費(fèi)端接收。
b.服務(wù)特性
Service bus queue有一個(gè)很特殊的功能,就是deadletter queue,簡(jiǎn)單講,就是當(dāng)客戶端無法成功接收到某條消息或者消息在一定的期限中過期沒有被接收時(shí),該條消息會(huì)自動(dòng)轉(zhuǎn)移到第二個(gè)隊(duì)列中,也就是deadletter queue。
另外Service bus queue的一個(gè)很有意思的功能就是可以檢測(cè)重復(fù)消息,一旦開啟該功能,如果接收端重復(fù)接收一條已經(jīng)接收過的消息,第二條重復(fù)的消息會(huì)被忽略。
值得被提的一點(diǎn)是我們提供兩種不同從Service bus queue中接收消息的方式,分別是Peek and Lock和Receive and Delete,當(dāng)用戶采用第一種方式(也是默認(rèn)方式)接收消息時(shí),當(dāng)接收端還在處理該條消息的時(shí)候,這條消息會(huì)被服務(wù)端鎖定,從而其他接收端無法接收該條消息,直到接收端成功處理完這條消息后,這條消息才會(huì)從queue中刪除掉。如果在一定的時(shí)間段(可以設(shè)置的timeout時(shí)間)服務(wù)端還是沒有收到接收端的成功接收的返回請(qǐng)求,那么該條消息會(huì)被服務(wù)端解除鎖定重新釋放掉,這個(gè)時(shí)候其他的接收端可以再次接收這條消息。
c.與Storage queue的區(qū)別
首先Service bus queue與Storage queue底層的實(shí)現(xiàn)是完全不一樣的。相比較Storage queue,Service bus queue存儲(chǔ)的的消息大小最大可以達(dá)到256KB,并且可以根據(jù)屬性TimeSpan.Max調(diào)整消息存儲(chǔ)在服務(wù)端的時(shí)間,滿足用戶需要長(zhǎng)時(shí)間存儲(chǔ)消息的需求,然而不同與Storage queue強(qiáng)大的存儲(chǔ)功能,Service bus queue最大能存放80GB的消息。
其次Service bus queue服務(wù)支持使用AMQP 1.0協(xié)議進(jìn)行數(shù)據(jù)傳輸,這一特點(diǎn)很好的適用于嵌入式設(shè)備。這意味著,用戶可以使用Service bus queue構(gòu)建crossplatform的混合應(yīng)用,用戶也可以在不同的操作平臺(tái)上使用不同語(yǔ)言和開發(fā)框架去連接Service bus queue。
最后正如我們上一節(jié)“服務(wù)特性”中講到的,相比較Storage queue,Service bus queue提供更豐富更強(qiáng)大的消息傳遞功能。
更多關(guān)于Storage queue與Service bus queue的區(qū)別用戶可以參考官方對(duì)比文檔。
d.適用場(chǎng)景
Service bus服務(wù)主要提供給用戶一種強(qiáng)大的企業(yè)級(jí)消息傳遞解決方案,在這種典型的云端消息方案體系下,Service bus將服務(wù)端和應(yīng)用程序進(jìn)行分離。
細(xì)心的讀者在閱讀Service bus queue的“服務(wù)特性”章節(jié)后不難發(fā)現(xiàn),Service bus queue更加適用于對(duì)消息敏感(即不允許重復(fù)消息、不允許消息丟失),需要長(zhǎng)期存儲(chǔ)消息的使用場(chǎng)景。
e.一些限制和說明
Service bus服務(wù)提供不同的等級(jí)(SKU)供用戶選擇,在標(biāo)準(zhǔn)和高級(jí)版本(目前高級(jí)版本還沒有在中國(guó)上線)的服務(wù)中,Service bus queue最大可以到達(dá)80GB。
另外在在同一個(gè)命名空間下(namespace)的所有服務(wù)(包括Service bus queue以及Service bus topic)最大的并發(fā)連接數(shù)可以達(dá)到5000個(gè),這里包括接收端的連接也包括發(fā)快遞端的連接。
3.Service bus topic
a.什么是Service bus topic
Service bus topic與Service bus queue很類似,因此Service bus queue所具備的功能topic都有。但是Service bus topic還有一個(gè)非常重要也區(qū)別于queue的功能,就是一條消息發(fā)國(guó)際快遞topic中,可以生成多個(gè)copy根據(jù)一定的規(guī)則分發(fā)到多個(gè)的接收端,這里我們稱為訂閱(subscribers)。
我們可以將每個(gè)訂閱理解為一個(gè)“queue”,而具體每個(gè)queue里接收的消息是由對(duì)應(yīng)的規(guī)則定義的。
b.服務(wù)特性
Service bus topic是典型的支持Publish/Subscribe消息傳輸模式的服務(wù)。每個(gè)topic最多可以支持2000個(gè)訂閱,這意味著每一條發(fā)到topic里的消息都可以被多達(dá)2000個(gè)訂閱接收。我們可以在topic運(yùn)行期間的任何時(shí)刻增加新的訂閱,這不會(huì)影響其他已經(jīng)存在的訂閱接收消息,一旦新的訂閱添加成功,新進(jìn)入topic中的消息就會(huì)根據(jù)規(guī)則被新添加的訂閱接收。
上面我們提到“規(guī)則”,在Service bus topic的世界中,我們將其稱為“filter”,用戶可以根據(jù)自己的需求為每個(gè)訂閱定義不同的“filter”規(guī)則(每一條傳遞到service bus服務(wù)中的消息都會(huì)包含一組屬性properties,用戶可以通過使用屬性來自定義“filter”規(guī)則)所有滿足“filter”規(guī)則的消息將會(huì)被相應(yīng)的訂閱接收。通過這樣的方式,可以達(dá)到不同的訂閱偵聽或接收不同消息的目的。
Service bus topic的特性不止于此,我們不僅可以自定義不同的“filter”規(guī)則,我們還可以為每個(gè)訂閱定義不同的action,即當(dāng)該訂閱接收到相應(yīng)的消息后就會(huì)執(zhí)行對(duì)應(yīng)的action(比如我們可以修改某個(gè)屬性的名稱值等等),這對(duì)于某些場(chǎng)景非常有用。
c.與Service bus queue的區(qū)別
根據(jù)前面的介紹,我們能得到Service bus queue與topic一個(gè)最大的區(qū)別在于:Service bus queue是one to one的消息分發(fā)模式,而Service bus topic是one to many的消息分發(fā)模式。
Queue的消息分發(fā)模式可以參照下圖:
Topic的消息分發(fā)模式可以參考下圖:
d.適用場(chǎng)景
從上面的特性描述中我們不難發(fā)現(xiàn),如果用戶有需要將同一份消息傳遞到不同的接收端或系統(tǒng)中做不同的后續(xù)分析或處理,并且接收端可能在動(dòng)態(tài)變化,那么Service bus topic將會(huì)是非常好的解決方案。
本篇中主要對(duì)Azure平臺(tái)提供的三種消息服務(wù)從幾個(gè)不同的維度做介紹和對(duì)比,Azure平臺(tái)還提供了處理大量事件的服務(wù),比如IOT Hub和Event Hub,接下來我們會(huì)在中篇會(huì)對(duì)這兩種事件服務(wù)繼續(xù)做介紹和對(duì)比,如果您對(duì)這個(gè)話題感興趣可以在中篇中繼續(xù)了解詳細(xì)內(nèi)容。
特別聲明:以上文章內(nèi)容僅代表作者本人觀點(diǎn),不代表ESG跨境電商觀點(diǎn)或立場(chǎng)。如有關(guān)于作品內(nèi)容、版權(quán)或其它問題請(qǐng)于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號(hào)密碼登錄
平臺(tái)顧問
微信掃一掃
馬上聯(lián)系在線顧問
小程序
ESG跨境小程序
手機(jī)入駐更便捷
返回頂部