Kafka系列二 kafka相關問題理解

一、kafka是什麼

  類JMS消息隊列,結合JMS中的兩種模式,能夠有多個消費者主動拉取數據,在JMS中只有點對點模式纔有消費者主動拉取數據。 kafka是一個生產-消費模型。
  producer:生產者,只負責數據生產,生產者的代碼能夠集成到任何系統中。數據的分發策略由producer決定,默認是Defaultpartition Utils.abs(key.hashCode)%numPartitions.
  Broker;當前服務器上的kafka進程,俗稱拉皮條。只管數據存儲,無論是誰消費。在集羣中每一個broker都有一個惟一的brokerid,不得重複。
  Topic:目標發送的目的地,這是一個邏輯上的概念,落到磁盤上是一個Partition的目錄。partition的目錄中有多個segment組合(index,log)
      一個Topic對應多個partition[0,1,2,3],一個Partition對應多個segment組合。一個segment有默認的大小是1G。
      每一個Partition能夠設置多個副本,會從全部的副本中選取一個leader出來。全部讀寫操做都是經過leader來進行的。特別強調,和mysql中主從有區別,mysql作主從是爲了讀寫分離,在kafka中讀寫操做都是leader。
  Consumer:數據消費者,Consumer能夠有多個,每一個consumer消費的數據都是同樣的。
  ConsumerGroup;能夠把多個consumer線程劃分爲一個組,組裏面全部成員共同消費一個topic的數據,組員之間不能重複消息。mysql

二、kafka生產數據時的分組策略

  默認是Defaultpartition Utils.abs(key.hashCode)%numPartitions.
  上文中的key是producer在發送數據時傳入的,producer.send(KeyMessage(topic,mypartitionKey,messageContent))算法

三、Kafka如何保證數據的徹底生產?

  ack機制:broker表示發來的數據已確認接收無誤,表示數據已經保存到磁盤。
      0 :不等待broker返回確認信息。
      1 :等待topic中某個partition leader保存成功的狀態反饋。
      -1:等待topic中某個partiton 全部副本都保存成功的狀態反饋sql

四、broker如何保存數據?

  在理論環境下,broker按照順序讀寫的機制,能夠每秒保存600M的數據。主要經過pagecache機制,儘量的利用當前物理機器上的空閒內存來作緩存。當前topic所屬的broker,一定有一個該topic的partition,partition是一個磁盤目錄。partition的目錄中有多個segment組合(index,log)緩存

五、partition如何分佈在不一樣的broker上。

list(kafka01,kafka02,kafka03)//broker列表
int partitions=4;//partitions個數
for(int i=0;i<partitions;i++){
brIndex=i%broker;
hostname=list.get(brIndex)
}

六、consumerGroup的組員和partition之間如何作負載均衡?

  最好是一一對應,一個partition對應一個consumer。若是consumer的數量過多,必然有空閒的consumer服務器

  算法:
  假如topic1,具備以下partitions: P0,P1,P2,P3
  加入group中,有以下consumer: C1,C2
  首先根據partition索引號對partitions排序: P0,P1,P2,P3
  根據consumer.id排序: C0,C1
  計算倍數: M = [P0,P1,P2,P3].size / [C0,C1].size,本例值M=2(向上取整)
  而後依次分配partitions: C0 = [P0,P1],C1=[P2,P3],即Ci = [P(i * M),P((i + 1) * M -1)]
負載均衡

七、如何保證kafka消費者消費數據是全局有序的?

  僞命題
  若是要保證消費有序,必須保證生產有序,存儲有序,消費有序。
  因爲生產能夠作集羣,存儲能夠分片,消費能夠設置爲一個consumerGroup,就須要全局全局有序,就須要保證每一個環節都有序。
  只有一個可能,就是一個生產者,一個partition,一個消費者。這種場景和大數據應用相悖。大數據

相關文章
相關標籤/搜索