这下我终于懂了,如何验证 Kafka 系统的可靠性?

    作者:Java高级架构师阿谷更新于: 2019-11-29 14:04:24

    大神带你学编程,欢迎选课

      当通过 Kafka 构建的系统需要提供特定的可靠性,我们对 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 会发生什么,能否接受后果?

      这些就是今天全部内容,欲知详情,请看下回分解。根据实际的需要去构建测试场景,当测试都通过之后可以进入下一步。

课课家教育

未登录