Azure EventHubs快速入門和使用心得

  • 2019 年 10 月 29 日
  • 筆記

Azure Event Hubs(事件中心)是一個大數據流式數據攝取服務平台,每秒接受數百萬事件;

  EventHubs 是一個有數據保留期限的緩衝區,類似分散式日誌;可縮放的關鍵在於【分區消費模型】,每分區獨立存儲數據,被後端獨立消費。隨著時間推移,事件會逐漸老化,所以分區不會 full.

發送到Eventhub 中的數據可以被 readl-time analytics provider 和後端batch/storage adapters 處理和存儲。

為什麼要使用EventHubs?

從EventHubs中及時獲取、探索數據 相當簡單,EventHubs 提供了低延遲的分散式流式處理平台(低延遲、無縫集成Azure內外的數據和分析服務)

EventHubs代表“event管道”的前門,一般被定義為事件攝取器:在事件發布者和事件消費者之間起解耦作用的組件或服務。

 

特性

  • Paas 上全託管
  • 支援實時和批處理
  • 可縮放
  • 豐富的生態

本文主要記錄兩個重要知識點:Partition, EventHubs Capture

Azure上創建EventHubs命名空間之後,新增EventHubs時要關注以上配置。

 

 

Partition Consumer Model

為支援攝取、存儲、 實時處理流式數據,EventHub是建立在分區消費模型之上,提高了可用性和並發度;

① 水平擴展事件處理能力,提供了Queue和topic等流式結構不具備的特性(某分區節點下線,其餘分區可繼續提供 發送和接受能力)

② 可讓多進程並發處理流式數據, 並可自行控制處理速度。

③ 支援批量發送事件, 單批次發送不超過1M事件

【是否啟用分區】取決於開發者在【數據一致性和可用性之間的平衡思考】

 If high availability is most important, do not specify a partition key; in that case events are sent to partitions using the round-robin model described previously.

 In many cases, using a partition key is a good choice if event ordering is important.     著名的CAP定理

 

EventHubs Capture

Azure EventHubs Capture 是把數據載入到Azure中最快捷的方式,可在使用 EventHubs Capture時 指定 Azure Blob storage account 或者 Azure Data Lake Store account存儲數據。

捕獲時機: 最上面Capture配置圖, 捕獲時機支援2種策略:time window 和 size window,  每個分區滿足任一策略則觸發該分區的捕獲動作。

// 文件路徑如下,包含命名空間、捕獲分區,每個文件以秒命名
{Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute}/{Second}

Azure EventHubs Capture 開始工作之後,在沒有數據的情況下默認會寫入空文件,這給後端消費程式提供了穩定的流量預期, 當然也可在創建EventHubs 配置勾選【Do not emit empty files when no events occur during the Capture time window<】

捕獲文件格式: avro 是一種簡潔快速,攜帶豐富數據結構的二進位格式

 

 

 捕獲的文件可使用Azure Storage Explorer查看, 注意這裡要使用帳號登陸Azure中國區, 後面就是 Azure Storage Account的事宜。