文章目录
Kafka应用
- 关于Kafka的应用类工具
Kafka系列文章是基于:深入理解Kafka:核心设计与实践原理一书,结合自己的部分实践和总结。
一、命令行工具
脚本名称 | 作用 |
---|---|
kafka-consumer-groups.sh | 消费者组信息管理 |
kafka-delete-records.sh | 消息删除功能 |
1.1 消费组管理
- 展示消费者分组:./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
bash-4.4# ./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
Note: This will not show information about old Zookeeper-based consumers.
anonymous.0b68eb1e-bebf-401b-8bbc-081200680ea3
groupID
anonymous.3e8a0f81-5742-4584-be2b-00ee3ec36ba3
ifaas-engine
kafka-group
ifaas-collection
ifaas-target
anonymous.3c0c3b13-9d41-4d8e-931a-e15f80a5aa27
ifaas-data
send-pg
anonymous.e94c8a4f-121d-4470-9e6b-65f9f1fdbbb3
- 展示特定的消费者分组信息:./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group ifaas-data
bash-4.4# ./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group ifaas-data
Note: This will not show information about old Zookeeper-based consumers.
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
engine-alarm 0 0 0 0 consumer-6-10bfc412-bdb2-454d-bcf9-438c0b40ea12 /192.168.89.193 consumer-6
ifaas-target 0 439706 439706 0 consumer-10-b84ab303-799e-4e6f-9457-c78bc234ac88 /192.168.89.193 consumer-10
all-user-record 0 588 588 0 consumer-8-43146cd4-3f90-4486-9277-b683691bacc1 /192.168.89.193 consumer-8
engine-image 0 0 0 0 consumer-2-f424478d-fc03-427c-b58b-f42fbdc382c7 /192.168.89.193 consumer-2
engine-face 0 0 0 0 consumer-4-ca15bc03-3a8c-4258-a299-069b55cecaa4 /192.168.89.193 consumer-4
ifaas-image 0 389082 389082 0 consumer-12-ba173a0a-9db4-4454-9678-8c152c36c19c /192.168.89.193 consumer-12
TOPIC:主题名称
PARTITION:分区编号
CURRENT-OFFSET:消费者组最新提交的消费位移
LOG-END-OFFSET:HW,即高水位,是消费者可见的最大offset
LAG:消息滞后数量,LOG-END-OFFSET和CURRENT-OFFSET的差值
CONSUMER-ID:消费者组的成员id
HOST:消费者的host信息
CLIENT-ID:消费者客户端的client.id
- 展示特定的消费者分组的状态:./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group ifaas-data --state
bash-4.4# ./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group ifaas-data --state
Note: This will not show information about old Zookeeper-based consumers.
COORDINATOR (ID) ASSIGNMENT-STRATEGY STATE #MEMBERS
192.168.89.193:9092 (1) range Stable 6
Stable是正常情况的状态,其他状态值有:Dead、Empty(组内没有消费者)、PreparingRebalance和CompletingRebalance
- 罗列消费者组内成员信息:./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group ifaas-data --members
bash-4.4# ./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group ifaas-data --members
Note: This will not show information about old Zookeeper-based consumers.
CONSUMER-ID HOST CLIENT-ID #PARTITIONS
consumer-6-10bfc412-bdb2-454d-bcf9-438c0b40ea12 /192.168.89.193 consumer-6 1
consumer-10-b84ab303-799e-4e6f-9457-c78bc234ac88 /192.168.89.193 consumer-10 1
consumer-8-43146cd4-3f90-4486-9277-b683691bacc1 /192.168.89.193 consumer-8 1
consumer-2-f424478d-fc03-427c-b58b-f42fbdc382c7 /192.168.89.193 consumer-2 1
consumer-4-ca15bc03-3a8c-4258-a299-069b55cecaa4 /192.168.89.193 consumer-4 1
consumer-12-ba173a0a-9db4-4454-9678-8c152c36c19c /192.168.89.193 consumer-12 1
- 罗列消费者组内成员信息,并且展示成员的分区分配情况:./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group ifaas-data --members --verbose
bash-4.4# ./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group ifaas-data --members --verbose
Note: This will not show information about old Zookeeper-based consumers.
CONSUMER-ID HOST CLIENT-ID #PARTITIONS ASSIGNMENT
consumer-6-10bfc412-bdb2-454d-bcf9-438c0b40ea12 /192.168.89.193 consumer-6 1 engine-alarm(0)
consumer-10-b84ab303-799e-4e6f-9457-c78bc234ac88 /192.168.89.193 consumer-10 1 ifaas-target(0)
consumer-8-43146cd4-3f90-4486-9277-b683691bacc1 /192.168.89.193 consumer-8 1 all-user-record(0)
consumer-2-f424478d-fc03-427c-b58b-f42fbdc382c7 /192.168.89.193 consumer-2 1 engine-image(0)
consumer-4-ca15bc03-3a8c-4258-a299-069b55cecaa4 /192.168.89.193 consumer-4 1 engine-face(0)
consumer-12-ba173a0a-9db4-4454-9678-8c152c36c19c /192.168.89.193 consumer-12 1 ifaas-image(0)
- 删除消费者分组,不过组内有消费者正常工作时,删除操作会失败。
./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --delete --group ifaas-data
1.2 消费偏移管理
- kafka-consumer-groups.sh可以重置消费者分组的offset为0,不过需要在分组内没有运行的消费者成员时执行才能有效。
//全部主题重置为最小offset
./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group ifaas-data --all-topics --reset-offsets --to-earliest --execute
//指定主题分区重置为最大offset
./kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group ifaas-data --topics topicName:1 --reset-offsets --to-latest --execute
- 除了最早最晚,还能支持更细粒度的偏移量重置,比如调整到距离当前时间指定时间间隔处或者指定offset处
- 另外kafka-consumer-groups.sh还支持将某些位移调整方案打印出来但是不支持(不使用–execute,使用dry-run/export),可用阅读参考文章[1]的9.1.2小节。
1.3 手动删除消息
-
kafka-delete-records.sh提供消息删除相关功能
-
删除方式:./kafka-delete-records.sh --bootstrap-server localhost:9092 --offset-json-file delete.json
./kafka-delete-records.sh --bootstrap-server localhost:9092 --offset-json-file delete.json
//delete.json ;表示将topic-1的0号分区offset为10,1号分区offset为100的消息删除掉,当删除动作最终完成后,分区0的logStartOffset被置为10,分区1的logStartOffset被置为100
{
"partitions": [
{
"topic": "topic-1",
"partition": 0,
"offset": 10
},
{
"topic": "topic-1",
"partition": 1,
"offset": 100
}
],
"version": 1
}
二、其他
2.1 Kafka Connect
- 可以将数据从Kafka中导入或者导出。
2.1.1 Connector
-
Kafka Connect中有两个核心概念:Source和Sink,前者将数据导入Kafka,后者从Kafka导出数据,二者都被称为Connector。
-
Kafka Connect特性
1.通用性;规范化其他数据与kafka的集成
2.支持独立模式和分布式模式
3.提供REST接口
4.自动位移管理
5.流式计算和批处理集成。
2.1.2 两种模式
- 独立模式
connect-standalone.sh用于独立模式运行Kafka Connect,适合于测试和功能验证场景,无法利用负载均衡和高容错的特性。
- 分布式模式
connect-distributed.sh用于分布式模式运行Kafka Connect,可以结合Kafka的负载均衡和故障转移功能。
2.1.3 REST API
- Kafka提供看REST风格的API来管理Kafka Connect,默认端口8083,比如接口:GET / 用于查看Kafka集群版本信息,更多接口信息可以阅读参考文章[1]的9.2.2小结。
2.2 Kafka Mirror Maker
- 用于在2个kafka集群直接同步数据的工具,其原理是从源集群中消费数据并将消息写入目标集群,可以实现准实时的数据同步。
2.3 Kafka Stream
- Kafka Stream是一个用于处理和分析数据的客户端库,它对存储在kafka中的数据进行分析和处理并将结果写回kafka或者发送到外部系统。该库可以和应用程序相结合
- Kafka Stream特性
三、小结
- 关于Kafka的一些应用简介