Kafka入门一
启动:
./bin/kafka-server-start.sh ./config/server.properties
创建topic test
./bin/kafka-topics.sh --zookeeper localhost:2181 --create -topic test --replication-factor=1 --partitions 1
List topics
bin/kafka-topics.sh --zookeeper localhost:2181 --list
kafka集群常用配置
broker.id
log.dirs
Zookeeper.connect
生产者生产消息
./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
hello world!
this is my first msg.
消费者消费消息
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
Kafka入门二-Producer核心参数
Producer核心参数:
metadata.max.age.ms 默认每隔5分钟 会刷新下元数据
max.request.size 每个请求的最大大小(1mb)
buffer.memory 缓冲区的内存大小(32mb)
max.block.ms 缓冲区填满之后或元数据拉取最大阻塞时间(60s)
request.timeout.ms 请求超时时间(30s)
batch.size 每个batch的大小默认(16kb)
linger.ms 默认为0,不延迟发送。
可以配置为10ms,10ms内还没有凑成1个batch发送出去,必须立即发送出去
Partitioner.class:
分区策略,用于控制消息被发送到topic的哪个分区。如果要实现自定义的分区策略,创建自己的类,并实现o.a.k.clients.producer.Partitioner接口
默认的DefaultPartitioner对于没有key的消息使用轮询
Kafka入门三-Consumer核心参数
Consumer端的参数基本上是通过在consumer代码中进行指定,通常形式为
Properties props = new Properties(); props.put(key, value)
{key/value}.serializer
用于为{key/value}做序列化,任何消息的key和value都会依据该参数制定的类转换成字节数组用于后续的发送
推荐配置
常见的是o.a.k.common.serialization.StringSerializer,即将字符串转换成字节数组。
group.id
组id,唯一标识一个消费组consumer group
推荐配置
如果使用Kafka提供的自动组管理功能的话(也就是调用KafkaConsumer#subscribe),那么需要确定一个不重复的组id
session.timeout.ms
自动组管理下用于检测consumer失效failure的时间。
推荐配置
默认值10s是一个很好的起始值。如果要缩短错误检测时间,可适当减少该值。
auto.offset.reset
earliest, latest, 生产环境常用latest
enable.auto.commit
是否让Kafka在后台自动提交位移。
推荐配置
如果有比较强的”exactly-once“消费需求,通常要设置该参数为false,然后在程序中自己控制位移提交。其他情况下,设置成true即可。
heartbeat.interval.ms
与session.timeout.ms一样,也是一个用于影响rebalance行为的参数。该参数用于控制consumer发送心跳请求的频率。同时它也被用作consumer感知rebalance发生的手段,因此如果设置比较低的值,consumer通常都能更快的进行rebalance
推荐配置
如果consumer group中成员很多的话,推荐将此值设置大一点,但最好不要超过session.timeout.ms的1/3
max.poll.interval.ms
用于调节消费主线程的消费速度,该参数是0.10版本加的,主要是解决之前提到的session.timeout.ms多重含义重合的问题。该参数明确表示“消息处理超时”。比如如果你poll回来的消息需要1分钟进行处理,那么你就需要将该参数设置成1分钟。
推荐配置
需要结合具体的性能目标和实际场景进行设置。如果处理消息时需要调用外部系统服务,默认的30s通常都无法满足需求,可以考虑适当增加该值。
max.poll.records
控制单次poll回来的消息数。
推荐配置
需要结合具体的性能目标和实际场景进行设置。如果consumer group经常性地rebalance,通常头可以减少此值以使得consumer可以在max.poll.interval.ms时间内处理完所有消息。
Kafka入门四-Producer介绍
Kafka入门五-消费者与消费者组
查看kafka的消费者组列表
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list test-consumer-group
查看消费者组的成员信息
> bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
topic3 0 241019 395308 154289 consumer2-5d30 /127.0.0.1 consumer2
topic2 1 520678 803288 282610 consumer2-5d30 /127.0.0.1 consumer2
topic3 1 241018 398817 157799 consumer2-5d30 /127.0.0.1 consumer2
topic1 0 854144 855809 1665 consumer1-581a /127.0.0.1 consumer1
topic2 0 460537 803290 342753 consumer1-581a /127.0.0.1 consumer1
topic3 2 243655 398812 155157 consumer4-c6c1 /127.0.0.1 consumer4