Azure Event Hub 技術研究系列1-Event Hub入門篇

前兩個系列研究了Azure IoT Hub和Azure Messaging。最近準備繼續研究Azure Event Hub,即Azure的事件中心。首先,編程

Azure Event Hub的官方介紹:跨域

1. Azure 事件中心是超大規模的遙測引入服務,可收集、傳輸和存儲數以百萬的事件服務器

2. 從網站、應用和任何數據流引入雲端大規模的遙測數據,進行流式處理和分析數據結構

能夠看出,Azure Event Hub是一個數據的雲端接入服務。咱們上面的博客中講到的Azure IoT Hub中的數據,發送到雲端以後,也是使用的Azure Event Hub做爲數據接入服務。分佈式

那麼,在實際的應用場景中,有哪幾類能夠借鑑應用的場景性能

1. IoT設備遙測數據接入,例如,充電樁的遙測數據,接入到雲端的Azure Event Hub中,接入後進行實時流式處理,數據分發等操做大數據

2. 分佈式事件中心:將跨域、跨模塊、跨服務中心的事件,統一發送到Azure Event Hub中,經過事件的訂閱者,集中分發處理。網站

3. 雲端的ESB(私有云和公有云系統的集成打通),做爲事件通道,Azure Messaging做爲消息通道編碼

有其餘的應用場景,歡迎你們繼續補充,上面列出了咱們這邊能夠用到的一些實際應用場景。spa

Azure Event Hub的具體功能有哪些?

1. 每秒對數百萬事件進行流式處理
Azure 事件中心是超大規模的遙測引入服務,可收集、傳輸和存儲數以百萬的事件。做爲分佈式流式處理平臺,它爲用戶提供低延遲和可配置的時間保留,使用戶能夠將大量遙測數據引入到雲中,並使用發佈-訂閱語義從多個應用程序中讀取數據。

2. 處理相同數據流中的實時和批處理
使用事件中心存檔功能,使單個流能夠支持實時、基於批處理的管道,並下降解決方案的複雜性。在支持未來的實時分析和處理的平臺上針對如今的批處理進行構建。事件中心存檔是將數據加載到 Azure 最簡單的方法。

3. 利用徹底託管的平臺型服務
事件中心是一種徹底託管的服務,無需維護任何服務器,也無需獲取任何軟件許可證。訂價簡單且方便。事件中心可以使用戶專一於從遙測數據獲取值,而非收集該數據。

4. 處理容量、種類和速度
大數據有不少來源,其負載分佈也各不相同,例如每隔數分鐘就會生成遙測數據的恆溫器、每秒都會生成事件的應用程序性能計數器,以及每一個客戶操做時捕獲捕獲遙測數據的移動應用。事件中心是一種徹底託管的服務,能夠根據不一樣的負載分佈以及負載高峯來採集規模具備彈性的事件。

5. 經過多語言支持進行跨平臺開發
事件中心使用高級消息隊列協議 (AMQP) 來實現跨平臺的互操做性和二進制文件兼容性,同時還支持 HTTPS 實現數據引入。藉助 Java 和 .NET 的本機客戶端,可輕鬆開始使用事件中心,而且能夠將其與流分析、Functions 和虛擬機等其餘 Azure 服務集成。還有一個持續爲 Apache NiFi 和 Elastic Stack 等熱門平臺建立新適配器和鏈接器的強大事件中心開源社區。

Azure Event Hub的體系結構:

Azure 事件中心是一種事件處理服務,用於提供雲規模的事件與遙測引入,具備較低的延遲和較高的可靠性。 事件中心提供消息流處理功能,其特徵不一樣於傳統的企業消息傳送。 事件中心功能圍繞高吞吐量和事件處理方案而構建。

所以,事件中心未實現適用於消息傳送實體(例如主題)的某些消息傳送功能。

事件中心在命名空間級別建立,使用 AMQP 和 HTTP 做爲其主要的 API 接口。

事件發佈者:

向事件中心發送數據的任何實體都稱爲「事件發佈者」。 事件發佈者可使用 HTTPSAMQP 1.0 發佈事件。 事件發佈者經過共享訪問簽名 (SAS) 令牌向事件中心代表其身份,可使用惟一的標識,也可使用通用的 SAS 令牌。

事件發佈:

能夠經過 AMQP 1.0 或 HTTPS 發佈事件。 服務總線提供了一個 EventHubClient 類,使用該類可從 .NET 客戶端向事件中心發送事件。 對於其餘運行時和平臺,你可使用任何 AMQP 1.0 客戶端,例如 Apache Qpid。 能夠逐個或者批量發送事件。 單個發佈(事件數據實例)限制爲 256 KB,無論它是單個事件仍是事件批。 發佈大於此限制的事件將致使出錯。 發佈者最好是不知道事件中心內的分區數,而只是經過其 SAS 令牌指定「分區鍵」(以下一部分所述)或其標識。

 

分區:

事件中心經過分區使用者模式提供消息流式處理功能,在此模式下,每一個使用者只讀取消息流的特定子集或分區。 此模式支持事件處理的水平縮放,同時提供隊列和主題中不可用的其餘面向流的功能。
分區是事件中心內保留的有序事件。 當較新的事件到達時,它們將添加到此序列的末尾。 能夠將分區視爲「提交日誌」。

事件中心按配置的保留時間保留數據,該時間適用於事件中心的全部分區。 事件根據特定的時間過時;沒法顯式刪除事件。 因爲分區互相獨立且包含自身的數據序列,所以一般按不一樣速率增大。

分區數在建立時指定,必須介於 2 到 32 之間。 分區計數不可更改,所以在設置分區計數時應考慮長期規模。 分區是一種數據組織機制,與使用方應用程序中所需的下游並行度相關。 

分區中填充了一系列的事件數據,這些數據包含事件的正文、用戶定義的屬性包和元數據,例如,它在分區中的偏移量,以及它在流序列中的編號這一點和Kafka+ZooKeeper很像

SAS 令牌

事件中心使用在命名空間和事件中心級別提供的共享訪問簽名。 SAS 令牌是從 SAS 密鑰生成的,它是以特定格式編碼的 URL 的 SHA 哈希。 事件中心可使用密鑰(策略)的名稱和令牌從新生成哈希,以便對發送者進行身份驗證。 一般,爲事件發佈者建立的 SAS 令牌只對特定的事件中心具備發送權限。

事件使用者

從事件中心讀取事件數據的任何實體稱爲「事件使用者」。 全部事件中心使用者經過 AMQP 1.0 會話進行鏈接,事件在可用時經過會話傳送。 客戶端不須要輪詢數據可用性。

事件使用者組

事件中心的發佈/訂閱機制經過「使用者組」啓用。 使用者組是整個事件中心的視圖(狀態、位置或偏移量)。 使用者組使多個消費應用程序都有各自獨立的事件流視圖,並按自身步調和偏移量獨立讀取流。

在流處理體系結構中,每一個下游應用程序至關於一個使用者組。 若是你要將事件數據寫入長期存儲,則該存儲寫入器應用程序就是一個使用者組。 而後便可由另外一獨立的使用者組執行復雜的事件處理。 你只能經過使用者組訪問分區。 每一個分區一次只能有一個活動的讀取者來自給定的使用者組。 事件中心內始終有一個默認的使用者組,最多可爲一個標準層事件中心建立 20 個使用者組。

這個使用者組合Kafka Consumer中Group是相似的概念,可是從下面的圖例看,Kafka的每一個消費組 Group 都能同時消費同一Topic的消息,Azure Event Hub則不是,更多的是並行事件使用。

流偏移量 

「偏移量」是事件在分區中的位置。 能夠將偏移量視爲客戶端遊標。 偏移量是事件的字節編號。 有了該偏移量,事件使用者(讀取者)即可以在事件流中指定要從其開始讀取事件的點。 能夠時間戳或者偏移量值的形式指定偏移量。 使用者負責在事件中心服務的外部存儲其自身的偏移量值。 在分區中,每一個事件都包含一個偏移量。

事件的數據結構:

  • Offset
  • 序列號
  • 正文
  • 用戶屬性
  • 系統屬性

管理偏移量由用戶負責。

 

以上便是Azure Event Hub 的一些主要的概念、體系結構和術語說明,相信搞過Kafka的小夥伴能夠很快就理解了。下一篇咱們將繼續Azure Event Hub 的編程研究。

 

周國慶

2017/5/11

相關文章
相關標籤/搜索