1. 程式人生 > 其它 >Kafka 和 Kinesis 之間的對比和選擇

Kafka 和 Kinesis 之間的對比和選擇

在現代大型資料環境下,訊息的傳送和處理就變得非常重要了。

作為訊息傳送處理領域裡面的大象,那就是 Kafka 了。

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