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文件的对应关系

相关文章
相关标签/搜索