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