kafka-使用總結

什麼是kafka?

Kafka是一種高吞吐量的分佈式發佈訂閱消息系統,它可以處理消費者規模的網站中的所有動作流數據。 這種動作(網頁瀏覽,搜索和其他用戶的行動)是在現代網絡上的許多社會功能的一個關鍵因素。 這些數據通常是由於吞吐量的要求而通過處理日誌和日誌聚合來解決。 對於像Hadoop的一樣的日誌數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的並行加載機制來統一線上和離線的消息處理,也是爲了通過集羣來提供實時的消費。

MQ 與kafka比較

 作爲消息隊列來說,企業中選擇mq的還是多數,因爲像Rabbit,Rocket等mq中間件都屬於很成熟的產品,性能一般但可靠性較強,而kafka原本設計的初衷是日誌統計分析,現在基於大數據的背景下也可以做運營數據的分析統計,而redis的主要場景是內存數據庫,作爲消息隊列來說可靠性太差,而且速度太依賴網絡IO,在服務器本機上的速度較快,且容易出現數據堆積的問題,在比較輕量的場合下能夠適用。
 RabbitMQ,遵循AMQP協議,由內在高併發的erlanng語言開發,用在實時的對可靠性要求比較高的消息傳遞上。
kafka是Linkedin於2010年12月份開源的消息發佈訂閱系統,它主要用於處理活躍的流式數據,大數據量的數據處理上。
1)在架構模型方面,
 RabbitMQ遵循AMQP協議,RabbitMQ的broker由Exchange,Binding,queue組成,其中exchange和binding組成了消息的路由鍵;客戶端Producer通過連接channel和server進行通信,Consumer從queue獲取消息進行消費(長連接,queue有消息會推送到consumer端,consumer循環從輸入流讀取數據)。rabbitMQ以broker爲中心;有消息的確認機制。
 kafka遵從一般的MQ結構,producer,broker,consumer,以consumer爲中心,消息的消費信息保存的客戶端consumer上,consumer根據消費的點,從broker上批量pull數據;無消息確認機制。
2)在吞吐量,
 kafka具有高的吞吐量,內部採用消息的批量處理,zero-copy機制,數據的存儲和獲取是本地磁盤順序批量操作,具有O(1)的複雜度,消息處理的效率很高。
 RabbitMQ在吞吐量方面稍遜於kafka,他們的出發點不一樣,rabbitMQ支持對消息的可靠的傳遞,支持事務,不支持批量的操作;基於存儲的可靠性的要求存儲可以採用內存或者硬盤。
3)在可用性方面,
 RabbitMQ支持miror的queue,主queue失效,miror queue接管。
 kafka的broker支持主備模式。
4)在集羣負載均衡方面,
 kafka採用zookeeper對集羣中的broker、consumer進行管理,可以註冊topic到zookeeper上;通過zookeeper的協調機制,producer保存對應topic的broker信息,可以隨機或者輪詢發送到broker上;並且producer可以基於語義指定分片,消息發送到broker的某分片上。
 rabbitMQ的負載均衡需要單獨的loadbalancer進行支持。

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