(一)kafka介紹

kafka概述

kafka是分佈式消息隊列,大體結構如下

  • topic(主題):消息按照主題歸類,主題之間的數據是隔離的
  • Producer(發送消息者)
  • Consumer(消息接受者)
  • broker:kafka集羣每個實例(server)
  • zookeeper:kafka集羣,producer,consumer都依賴於zookeeper來保證系統可用性,保存一些meta信息

kafka特點

  • 高吞吐量: Kafka 每秒可以生產約 25 萬消息(50 MB),每秒處理 55 萬消息(110 MB)。花了很多功夫去保證對磁盤的讀寫是連續的,不是隨機的,保證讀寫的速度
  • 持久化數據存儲:可進行持久化操作。將消息持久化到磁盤,因此可用於批量消費
  • 分佈式系統易於擴展:所有的 producer、broker 和 consumer 都會有多個,均爲分佈式的
  • 客戶端狀態維護:客戶端與服務端通信中所需要記錄的信息或狀態,都由客戶端自己去存儲及維護,服務端只負責提供讀寫。這樣可以讓客戶端非常靈活。

主題(topic)

  • 主題邏輯結構:藉助圖書館來理解,不同房間(主題)放不同類型的書籍,每個房間有很多書架(分區),每個書架上的書籍都有自己的唯一編號(消息的序列號offset),並有序(消息是連續有序的)的放在書架上。
  • kakfa消息清除機制:傳統的消息隊列是消費過的消息會被實時刪除,而kafka是配置一個時間T,消息發佈時間超過T後,則被批量清除,與消費無關。
  • kafka常量級性能:Kafka的性能只與硬盤讀寫速度有關,因爲只需磁頭第一次定位,後續都是連續讀寫
  • 分區實現負載均衡和失敗恢復:每個分區有多個副本(數量可配置),並以分區爲單位來劃分leader和follwer,這樣把ledaer分散到各個機器,充分利用所有機器的性能。leader負責寫和讀,其他的follwers只負責讀,並同步leader的數據,防止多個副本同時寫數據的混亂問題。

生產者(producers)

Producer將消息發佈到它指定的topic中,並負責決定發佈到哪個分區。通常簡單的由負載均衡機制隨機選擇分區,但也可以通過特定的分區函數選擇分區。

消費者(consumers)

offset由consumer來維護,一般情況下隨着consumer不斷的讀取消息,這offset的值不斷增加,但consumer可以將offset設置成爲一箇舊的值來重讀之前的消息。

消費者組,消費者裏可以加入消費者組。

組內是競爭關係(多個消費者形成一個集羣,解決單點故障),隊列模式,模擬傳統的消息隊列。

組間是共享關係(不同的消費者,構建各自的集羣),發佈訂閱模式

有序性

傳統的消息隊列,當多個consumer同時消費消息,服務器會按順序向consumer分發消息。但是消息到達各個comsumer時可能已經失去了原來的順序,所以只允許一個消費者消費消息。

Kafka將每個分區分只分發給一個consumer組,只要consumer組的數量不多於分區的數量即可併發訪問。

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