跳转到主要内容
Chinese, Simplified

上下文


我意识到软件工具可以帮助我们在两个关键方面测试kafka:性能和稳健性。我从很少了解工具或它们的能力开始,虽然我知道十年前我曾经简要使用的jmeter。

我最初的目标是找到一种可以生成和消耗负载的方法。然后,这个负载将成为试验稳健性测试的背景,以了解系统和数据复制在恶劣条件下的工作和处理能力。通过inclement我的意思是不同程度的不利条件,如网络条件差,复杂的错误条件,在升级过程中“错误的”节点被取下而系统试图赶上积压的交易等等。我出现了我正在分别写下Beaufort环境条件的概念。

稳健性测试工具


我的研究很快就让我开始了凯尔金斯伯里的工作。他有一些优秀的视频https://www.youtube.com/watch?v=NsI51Mo6r3ohttps://www.youtube.com/watch?v=tpbNTEYE9NQ以及开源软件工具和各种文章https:// aphyr .com /关于测试各种技术的帖子https://jepsen.io/analyses包括Zookeeper和Kafka。 Jay Kreps提供了他对Kyle测试的看法http://blog.empathybox.com/post/62279088548/a-few-notes-on-kafka-and-je…

到现在为止还挺好…

然而,当我开始研究使用jepsen测试新版Kafka的实际方面时,我至少遇到了一些重大挑战。我找不到原始脚本,我找到的那些脚本https://github.com/gator1/jepsen/tree/master/kafka是一个Clojure,一种不熟悉的语言,以及旧版本的Kafka(0.10。 2.0)。更重要的是它依赖于docker。虽然docker是一个非常强大和快速的工具,但客户端不愿意相信在docker环境中运行的测试(我们的环境至少需要20个实例来测试最小的配置)。

下一个要尝试的项目是https://github.com/mbsimonovic/jepsen-python,这是我和其他团队成员充分了解的语言。但是我们又遇到了它使用docker的拦截器。但是,如果我们可以获得支持docker swarm的依赖项之一,那么似乎有一些测试集群的潜力。那个项目是Blockade。我问是如何添加对docker swarm的支持;根据项目团队之一https://github.com/worstcase/blockade/issues/67,相当多。

到目前为止,我们需要继续前进并专注于测试Kafka的性能,可伸缩性和延迟,包括区域间数据复制,因此我们不得不暂停搜索自动化工具或框架来控制测试的稳健性方面。

性能测试工具


目前我将继续专注于工具而不是尝试定义性能测试与负载测试等,因为在区分这些术语和其他相关术语方面存在许多分歧。我们知道我们需要生成流量模式的方法,范围从简单的文本到与预期的生产流量配置文件非常相似的流量模式。

在项目期间,我们发现了至少5个生成负载的候选者:

  • kafkameter https://github.com/BrightTag/kafkameter
  • pepper-box:https://github.com/GSLabDev/pepper-box
  • kafka工具:https://github.com/apache/kafka
  • sangrenel:https://github.com/jamiealquiza/sangrenel
  • ducktape:https://github.com/confluentinc/ducktape

kafkameter和胡椒盒都集成了jmeter。其中胡椒盒更新,灵感来自kafkameter。 kafkameter显然需要大量的工作来满足我们的需求,所以我们开始尝试胡椒盒。我们很快分叉了项目,因此我们可以轻松地试验和添加功能,而不会干扰父项目,或者通过等待批准等延迟我们需要做的测试。

我已经将使用胡椒盒的细节移到了一个单独的博客文章http://blog.bettersoftwaretesting.com/2018/04/working-with-pepper-box-t…

 

我希望我们有更多的时间


可以做很多工作来改进工具和使用测试工具来测试Kafka的方法。我们需要在分配期间立即关注,以便快速提供反馈和结果。此外,测试特别是在早期阶段进入杂草,正确配置Kafka作为几种技术的新手非常耗时。我们确实希望在项目早期进行更多测试,并建立定期,可靠和值得信赖的测试结果。

有足够的空间来改进辣椒盒和分析工具。其中一些已经在各自的github存储库中被识别出来。

https://github.com/commercetest/pepper-box/issues
https://github.com/commercetest/pepperbox-analysis/issues
我接下来要探索的是什么
至少在我看来,最大的直接改进是专注于使用可信赖的统计分析工具(如R),以便我们可以自动化更多的测试处理和图形方面。

更多主题


以下是我希望在以后的文章中介绍的主题:

  • 管理和扩展测试,特别是如何运行许多测试并跟踪结果,同时保持环境的健康和清洁。
  • 设计生产者和消费者,以便我们可以使用消费者代码收集的结果来测量吞吐量和延迟。
  • 消息保真度与增加保真度的开销之间的权衡(高保真成本比运行时的低保真成本更高)。
  • 我们在建立值得信赖,可靠的测试环境以及简单地执行测试时遇到的许多不利因素

 

原文 :http://blog.bettersoftwaretesting.com/2018/04/tools-for-testing-kafka/

Article
知识星球
 
微信公众号
 
视频号