kafka0.9新特性
一、安全特性
在0.9之前,Kafka安全方面的考慮幾乎為0,在進行外網傳輸時,只好通過Linux的防火牆、或其他網路安全方面進行配置。相信這一點,讓很多使用者在考慮使用Kafka進行外網訊息互動時有些擔心。在安全方面,主要有以下方面設計:
- 客戶端連線borker使用SSL或SASL進行驗證
- borker連線ZooKeeper進行許可權管理
- 資料傳輸進行加密(需要考慮效能方面的影響)
- 客戶端讀、寫操作可以進行授權管理
- 可以對外部的可插拔模組的進行授權管理
當然,安全配置方面是可選的,可以混合使用。如:做過安全配置的的borkers和沒有進行安全配置的borkers放在同一叢集,授權的客戶端和沒有授權的客戶端,也可以在同一個叢集等等。具體配置詳見官方文件。
二、Kafka Connect
這個功能模組,也是之前版本沒有的。可以從名稱看出,它可以和外部系統、資料集建立一個數據流的連線,實現資料的輸入、輸出。有以下特性:
- 使用了一個通用的框架,可以在這個框架上非常方面的開發、管理Kafka Connect介面
- 支援分散式模式或單機模式進行執行
- 支援REST介面,可以通過REST API提交、管理 Kafka Connect叢集
- offset自動管理
同時,官方文件中,也給出了例子。通過配置,往一個文字檔案中輸入資料,資料可以實時的傳輸到Topic中。在進行資料流或者批量傳輸時,是一個可選的解決方案。
三、新的Comsumer API
新的Comsumer API不再有high-level、low-level之分了,而是自己維護offset。這樣做的好處是避免應用出現異常時,資料未消費成功,但Position已經提交,導致訊息未消費的情況發生。通過檢視API,新的Comsumer API有以下功能:
- Kafka可以自行維護Offset、消費者的Position。也可以開發者自己來維護Offset,實現相關的業務需求。
- 消費時,可以只消費指定的Partitions
- 可以使用外部儲存記錄Offset,如資料庫之類的。
- 自行控制Consumer消費訊息的位置。
- 可以使用多執行緒進行消費
Kafka 0.9這個版本,大的變化主要就是上面三點了。不過對於這個版本的穩定性還有待在實際使用中進行觀察。通過在JIRA中檢視,目前這個版本的Bug只帖出了一個,估計跟沒有大規模的被使用者使用有關。如果小夥伴們在使用過程中有什麼心得體會,歡迎在部落格下面留言分享!