摸鱼大数据——Kafka——Kafka核心概念一

核心概念整理

 - 生产者-producer: 负责生产消息(谁往Kafka中生产消息谁就是生产者)
 - 消费者-consumer: 负责消费消息(谁从Kafka中消费消息谁就是消费者)
 ​
 - 运行实例-broker:  Kafka实际工作的服务器进程,broker之间是没有主从之分
 ​
 - 主题-topic: 一类消息的集合,消息往哪放从哪取相当于数据库中的表   
 - 分区-partition: 数据的分区,分区数量可以大于broker节点数量,分区初始设置后,只能增大不能减小
 - 副本-replica: 数据的副本,副本数量不能大于broker节点数量,副本初始设置后,不能更改!
 - 主副本-leader replica: 实际负责数据读写的副本,生产者和消费者都与这个副本进行交互的
 - 从副本-follower replica: 负责从主副本上同步数据,实现数据备份,保证数据可靠性
 ​
 - 消费者组-consumer group: 多个消费者的集合
 ​
 - AR: All Replica 所有副本的集合,等于 AR = ISR+OSR
 - ISR: In Sync Replica 数据同步成功的副本(实际可用的副本)
 - OSR: Out of Sync Replica 数据同步不成功的副本(不可用的副本)

Kafka的数据位移offset

  • 分区在保存数据时,会对数据从1开始进行编号,用来记录数据的顺序,该编号称为偏移量offset

    • 各自分区内的偏移量是独立的,互不影响,所有每个分区的内的数据是有序的,但是多个分区的数据之间无法保障有序

  • 在Kafka0.8以前的kafka,消费的进度(offset)是写在zk中的,所以consumer需要知道zk的地址。这个方案有性能问题,Kafka 0.9版本之后 的时候整体大改了一次,brokers 接管了消费进度,数据位移直接保存在Kafka内部主题__consumer_offsets中, consumer 不再需要和 zookeeper 通信了,这也是为什么后来使用bootstrap-server了。bootstrap-servers 会自动发现其他 broker

不同的消费者可以同时消费同一个主题,但是同一个消费者会不会重复消费呢?

  • 生产者在生产数据的时候会生成对应的offset

  • 消费者在消费数据的时候会记录当前已消费数据的offset

Kafka的基准/压力测试

Kafka的基准测试, 又叫压力测试, 主要是用于测试Kafka集群的吞吐量, 每秒钟最大可以生产多少条数据, 以及每秒钟最大可以消费多少条数据

如何测试,创建多个topic,依次运行然后对比每秒发送的消息数,每秒发送的数据量以及平均延迟等指标?

topic1: 1分区 1副本

topic2: 3分区 1副本 相对topic1加了分区,理论上效率会提升

topic3: 1分区 3副本 相对topic1加了副本,理论上效率会降低

多分区通常可以提高 Kafka 系统的整体性能和吞吐量,特别是在大规模数据处理和高并发场景下。然而,对于一些特定的应用场景,如需要严格顺序性或资源受限的情况下,单分区可能会更为适合。因此,在设计和执行 Kafka 基准测试时,需要结合具体的使用需求和场景来选择最合适的分区策略。

多副本会带来一些额外的开销,特别是在数据复制、同步和存储方面。然而,在大多数情况下,这种开销是可以接受的,因为它提高了系统的容错性和可靠性,对于大多数企业级应用来说,这是非常重要的考虑因素。

因此,在进行 Kafka 基准测试时,通常需要权衡分区数量和副本数量对性能、可靠性和成本的影响,以找到最适合特定需求的配置。

  • 测试前提先要创建Topic

 /export/server/kafka/bin/kafka-topics.sh --create --bootstrap-server node1:9092,node2:9092,node3:9092 --partitions 3 --replication-factor 2 --topic benchmark

测试生产的效率

  • 1- 执行生产测试命令: 测试后,会增加4GB磁盘占用

 /export/server/kafka/bin/kafka-producer-perf-test.sh --topic benchmark --num-records 5000000 --throughput -1 --record-size 1000 --producer-props bootstrap.servers=node1:9092,node2:9092,node3:9092 acks=1

  • 2- 测试结果

    kafka-producer-perf-test.sh 是 Apache Kafka 自带的性能测试脚本,用以测量 Kafka 生产者的性能指标。测试结果通常包含以下几个关键项:

    1. Records sent: 发送的消息总数。

    2. Records/sec: 每秒发送的消息数。这是一个衡量吞吐量的关键指标。

    3. MB/sec: 每秒发送的数据量,以兆字节为单位。 这是一个重点指标

    4. Avg. Latency (ms): 平均延迟,以毫秒为单位。这是衡量延迟的关键指标。

    5. Max Latency (ms): 最大延迟。

    6. p50 Latency (ms): 50th百分位延迟。

    7. p95 Latency (ms): 95th百分位延迟。

    8. p99 Latency (ms): 99th百分位延迟。

    9. p99.9 Latency (ms): 99.9th百分位延迟。

测试消费的效率

 kafka-consumer-perf-test.sh 是 Apache Kafka 自带的消费者性能测试脚本,它能够评估 Kafka 消费者的吞吐量和其他性能指标。

  • 1- 执行消费测试命令

 /export/server/kafka/bin/kafka-consumer-perf-test.sh --broker-list node1:9092,node2:9092,node3:9092 --topic benchmark --fetch-size 1048576 --messages 5000000

2- 测试结果:

  • 43
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

困了就倒头睡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值