当通过 Kafka 构建的系统需要提供特定的可靠性,我们对 Kafka 做了相应配置,对生产者和消费者的应用做了必要的处理之后,如何验证整个系统确实实现了期望的可靠性呢?本文介绍。我们一起看看下:
内容提要:
概述
验证配置
验证应用
线上监控
1. 概述
仍然是那句话,可靠性不是一个可以轻易获得的东西,验证的方法也不简单,分为三个阶段:
在没有生产者和消费者参与的情况下,对 Kafka 的配置进行验证,确认 Kafka 的表现与预期一致;
加入生产者和消费者的应用,确认生产者和消费者的表现和预期一致;
应用上线后,对应用和 Kafka 的指标、日志等进行监控,发现与可靠性有关的问题,进行修复。
2. 验证配置
验证:其实就是测试,实际效果和预期效果是否一致,因此在验证前必须确认期望看到的结果,如果这一步有误差,验证可能很难成功。
验证配置不是指用肉眼去确认配置文件是否正确,而是使用 Kafka 提供的工具,Kafka 在 org.apacha.kafka.tools 包下有两个类:VerifiableProducer 和 VerifiableConsumer,这两个类既可以通过命令行运行,也可以在各种测试框架中使用。
VerifiableProducer 可以按照我们指定的参数来发送一定数量的消息,消息内容为从 1 开始递增的数字,参数包括 acks,重试次数和发送速率等等,运行时会打印每条消息发送成功或失败。VerifiableConsumer 消费 VerifiableProducer 生产的消息,按照消费顺序打印消息内容,并且打印提交 offset 和分区重分配的消息。
下面来实战一下,先看下这两个命令行工具都有哪些参数:
因为我也是第一次使用,所以我就随便选几个参数设置一下:
使用 VerifiableProducer 发送数据:
然后用 VerifiableConsumer 接收收据:
因为将 max-messages 设置为 10,而 topic 中只有 5 条消息,所以没有退出。
以上只是演示,因为 broker 只有一台,而且非常稳定,实际测试时需要构建更复杂的场景:
leader 选举,关掉 leader 所在的 broker,producer 和 consumer 需要多长时间恢复?
controller 选举,重启 controller,整个系统需要多长时间恢复?
滚动重启,一台一台的重启 broker,能否做到一条消息都不丢失?
脏 leader 选举,当发生了脏 leader 选举时,producer 和 consumer 会发生什么,能否接受后果?
这些就是今天全部内容,欲知详情,请看下回分解。根据实际的需要去构建测试场景,当测试都通过之后可以进入下一步。
¥29.00
¥498.00
¥399.00
¥299.00