09-Kafka应用

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的一些应用简介

四、参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值