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的事宜。