kafka學習筆記

前言

最近在作測試平臺的開發過程當中,須要用到消息隊列,在簡單調研後選取了主流的kafka作爲咱們平臺的消息中間件,如下是對kafka的學習筆記。html

1. 重要概念

  • topic:消息的主題/隊列(邏輯概念)
  • producer:生產者
  • consumer:消費者
  • broker:集羣中的服務器節點,即實際存儲消息的服務器
  • consumer group:消費者組,每一個consumer歸屬於一個groupjava

    消息在同一個consumer group下的consumer間,實行負載均衡
    消息在不一樣consumer group下的consumer間,實行廣播python

  • partition:物理概念。一個topic包含多個partition,數據在partition中連續。
  • leader/follower:partition的多副本,其中一個爲leader,其他爲follower
  • controller:其中的一個broker,記錄全部brokers的存活狀態,決定選舉
  • segment:每一個partition在物理上被平均分配到許多個大小相等的segment。每一個segment包含一個index file和一個data file。
  • offset:偏移量,每條消息的惟一標識。apache

2. Log compaction

kafka中的每一條數據都有一對key和value,存放在磁盤上。通常不會被永久保留,而是在到達必定的數量或者時間後對最先寫入的數據進行刪除。bootstrap

Log compaction確保kafka將始終保留單個topic partition的數據日誌中每一個key值的最後一個已知值。它給出在應用程序崩潰或系統故障後恢復狀態,或者在操做維護期間從新啓動應用程序後從新加載緩存這些場景的解決方法。
api

3. 生產與消費

一個消息能夠被多個consumer group消費,但只能被同一個group下的一個consumer消費。好處是能夠同時提供離線和實時處理(離線和實時分屬兩個group,各自消費,互不影響)。緩存

4.kafka的命令使用

kafka搭建: http://www.orchome.com/6服務器

kafka啓動命令:架構

bin/kafka-server-start.sh config/server.properties &

建立topic:負載均衡

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

查看topic:

bin/kafka-topics.sh --list --zookeeper localhost:2181

生產消息:

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test 
This is a message
This is another message

消費消息:

#從頭開始消費消息
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

#從客戶端啓動後消費新到達的消息:
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test

#指定消費者組,從該消費者組上次的偏移量開始消費
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --consumer.config config/consumer.properties

查看topic的分區、副本信息

bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic

5. 感悟

  • 一個topic分爲多個partiton,每一個partition被分到不一樣的broker,是爲了提升吞吐率。
  • 一個partition會有多個replica,是爲了作消息高可用,提升容錯。
  • kafka將元數據信息保存在zookeeper中,元數據信息包括consumer group、controller、brokers和topic等信息,並由zookeeper來保持這些元數據的更新。

6. API

7. 其餘

kafka架構:

segment中,index和log文件的對應關係

相關文章
相關標籤/搜索