一、概要
- Kafka是Apache旗下的一款分布式流媒体平台,Kafka是一种高吞吐量、持久性、分布式的发布订阅的消息队列系统。
- 它最初由LinkedIn(领英)公司发布,使用Scala语言编写,与2010年12月份开源,成为Apache的顶级子项目。
- 它主要用于处理消费者规模网站中的所有动作流数据。动作指(网页浏览、搜索和其它用户行动所产生的数据)。
1.高吞吐量:可以满足每秒百万级别消息的生产和消费。(日志系统)
2.持久性:有一套完善的消息存储机制,确保数据高效安全且持久化。
3.分布式:基于分布式的扩展;Kafka的数据都会复制到几台服务器上,当某台故障失效时,生产者和消费者转而使用其它的Kafka。
参考文章
二、kafka的安装
在这里插入代码片version: '3.5'
services:
zookeeper:
image: zookeeper
container_name: zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.200.137:9092
container_name: kafka
volumes:
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
- zookeeper
三、kafka-exporter监控
docker run --name kafka-exporter -p 9308:9308 danielqsj/kafka-exporter --kafka.server=192.168.9.61:9092
http://ip:9308/metrics
四、kafka 压测
1、jmeter 压测
2、kafka自带压测
- 用Kafka官方自带的脚本,对Kafka进行压测。Kafka压测时,可以查看到哪个地方出现了瓶颈(CPU,内存,网络IO)
- 一般都是网络IO达到瓶颈
docker exec -it dokerid bash
cd /opt/kafka/bin
- 消费端: kafka-consumer-perf-test.sh
- 生产端:kafka-producer-perf-test.sh
1. kafka producer 压测
在…/kafka/bin目录下
./kafka-producer-perf-test.sh --topic test --record-size 100 --num-records 100000 --throughput -1 --producer-props bootstrap.servers=localhost:9092
参数说明:
- record-size:一条信息有多大,单位字节
- num-records:总共发送多少条信息
- throughput:每秒多少条信息,设置成-1,表示不限流,可测生产者最大吞吐量
结果:
100000 records sent, 27495.188342 records/sec (2.62 MB/sec), 1461.75 ms avg latency, 2183.00 ms max latency, 1696 ms 50th, 2103 ms 95th, 2177 ms 99th, 2181 ms 99.9th.
2. kafka consumer 压测
- consumer测试,如果这四个指标(IO,CPU,内存,网络)都不能改变,考虑增加分区数来提升性能
./kafka-consumer-perf-test.sh --broker-list localhost:9092 --topic test --fetch-size 10000 -messages 10000000 --threads 2
参数说明:
- broker-list:节点地址
- topic:指定topic名称
- fetch-size:指定每个fetch的数据大小
- messages:总共要消费的消息个数
结果:
start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec, rebalance.time.ms, fetch.time.ms, fetch.MB.sec, fetch.nMsg.sec
2022-06-27 13:17:57:490, 2022-06-27 13:18:11:751, 20.0272, 1.4043, 210000, 14725.4751, 1593235077858, -1593235063597, -0.0000, -0.0001
字段说明:
开始时间
结束时间
共消费数据:20.0272M
吞吐量:1.4043MB/s
共消费数据:210000条
平均每秒消费:14725.4751条
Prometheus-kafka告警
/prometheus/rules/kafka.rules