Kafka 和 Kinesis 之間的對比和選擇

在現代大型數據環境下,消息的發送和處理就變得非常重要了。

作爲消息發送處理領域裏面的大象,那就是 Kafka 了。

 

Amazon-Kinesis-vs-S3

 

Kafka 和 Kinesis 直接的關係

在對比 Kafka 和 Kinesis 和之前,我們需要對 Kinesis 有所瞭解。

什麼是 Kafka

Apache Kafka 是一個開源,分佈式,可伸縮的發佈-訂閱消息系統。 負責該軟件的組織是 Apache Software Foundation。 該代碼是用 Scala 編寫的,最初是由 LinkedIn 公司開發的。 它於2011年開源,成爲 Apache 的頂級項目。

該項目旨在提供一個統一的低延遲平臺,該平臺能夠實時處理數據饋送。 對於需要系統之間集成的不同企業基礎架構,它變得越來越有價值。 希望集成的系統可以根據其需求發佈或訂閱特定的Kafka主題。

Kafka受事務日誌的影響, Apache Kafka 背後的思想是成爲可伸縮的消息隊列,其結構類似於事務日誌。

這個平臺被指定爲實時數據流。

Kafka 允許組織特定主題下的數據。

用一句話來說就是 Kafka 的消息處理能力就是快,非常的快。

什麼是 Kinesis

簡單來說 Kinesis 就是 AWS 的雲平臺的實現。

與自行部署 Kafka 來說,你不需要維護硬件平臺,不需要爲硬件支付費用能夠非常快的進行部署。

Amazon Kinesis 可讓您輕鬆收集、處理和分析實時流數據,以便您及時獲得見解並對新信息快速做出響應。Amazon Kinesis 提供多種核心功能,可以經濟高效地處理任意規模的流數據,同時具有很高的靈活性,讓您可以選擇最符合應用程序需求的工具。

藉助 Amazon Kinesis,您可以獲取視頻、音頻、應用程序日誌和網站點擊流等實時數據,也可以獲取用於機器學習、分析和其他應用程序的 IoT 遙測數據。

如何選擇

對有選擇困難症的童鞋和公司來說也許下面的對比能夠幫你做出一些決定。

主要區別

Kafka 是開源的分佈式消息傳遞解決方案,而 Kinesis 是 mazon提供的託管平臺。

在Kafka中,您負責安裝和管理集羣,還負責確保高可用性,持久性和故障恢復。如果您使用的是Kinesis,則不必擔心託管軟件和資源。

您可以通過在本地系統中安裝 Kafka 輕鬆學習 Kafka,而Kinesis並非如此。

Kinesis 中的定價取決於您使用的分片數量。如果您打算長時間保留郵件,則還必須支付額外的費用。

對於 Kafka,費用主要取決於您使用的 Broker 的數量。Kafka還需要一個DevOps團隊進行維護,這有時成本很高。

但是,使用Kafka,只要您不耗盡存儲空間,就可以將消息保留更長時間,而無需支付額外費用。

儘管 Kafka 和 Kinesis 都由生產者組成,但 Kafka 生產者將消息寫入主題,而 Kinesis 生產者將數據寫入 KDS。

Kinesis 還對消息的大小和消息的消耗率施加了某些限制。

Kinesis 中的最大消息大小爲 1 MB,而 Kafka 消息大小可以更大。

在 Kinesis 中,您每秒可以消耗5次,每個分片最多可以消耗 2 MB,從而每秒只能寫入1000條記錄。

Kafka 並未施加任何隱式限制,因此費率由底層硬件決定,甚至你可以做到無限制的快速數據寫入。

在安全性方面,Kafka 提供了許多客戶端安全功能,例如數據加密,客戶端身份驗證和客戶端授權,而Kinesis 通過 AWS KMS 主密鑰提供服務器端加密,以加密存儲在數據流中的數據。

服務器端加密的話,則很難執行客戶端加密。

服務器端加密在客戶端加密的基礎上提供了第二層安全性。

考慮因素

看了上面那麼多是不是還是有點困惑?

其實離開數據量談方案都是耍流氓。

簡單點就是 Kinesis 上手很快,如果你沒有什麼技術力量,在 AWS 的控制檯中點一點就可以用了。

Kafka 的部署是有成本和曲線的,首先就是 Kafka 依賴 ZooKeeper 來運行,ZooKeeper 的最低運行環境都需要 3 太服務器,如果需要擴展的話那麼就需要 5 太服務器,因爲 ZooKeeper 爲了保持高可用性,需要的是奇數臺服務器的。

如果你的 ZooKeeper 部署 4 臺服務器,那麼 ZooKeeper 的運行效果和 3 臺是一樣的。

這裏就導致會有使用和學習成本了。

如果你在可遇見的週期,一天就幾萬條消息,手上也沒幾個技術員,那麼隨便用哪個都差不多,可能用 Kinesis 還方便點,上手更快。

如果你以分鐘就就萬條消息的話,你還是可以考慮 Kafka 吧,因爲隨着消息了的增加,Kinesis 並不便宜,同時消息的保留時間是有限制的。

Kafka 的擴展是完全可以通過擴展底層硬件來實現的,同時還有維護成本在裏面。

 

https://www.ossez.com/t/kafka-kinesis/13658

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章