跳转到主要内容
Chinese, Simplified

当我开始测试Kafka的任务时,我意识到我有很多要理解的主题。在任务期间,我花时间积极学习这些主题,以及在任务期间出现的任何其他主题,例如AWS。

这篇博文介绍了各种主题。它不会详细介绍其中任何一个(我可能会在其他博客文章中介绍一些内容),而是我会专注于我如何学习这个项目的一部分。

  • Kafka:这可能是一个明显的主题,但我需要了解Kafka与其可靠性,弹性,可扩展性相关的特定方面,并找到监控其行为的方法。我最后还学习了如何编写Kafka客户端,实现和配置SASL_SSL安全性以及如何配置它。
  • VMWare:VMWare Enterprise技术将用于某些运行时环境。多年来我一直没有使用VMWare,并决定学习如何在几个小而又充满代表性的服务器上配置,监控和运行ESXi。这将使我既可以在客户端环境中工作,也可以独立地运行其他测试,而不是等待足够的环境和VM按需提供(由于内部流程和组织结构,企业往往移动得更慢)。
  • 如何'性能测试'Kafka:我们有几个想法,并且发现Kafka包含了一个“性能测试”实用程序。我们需要了解该实用程序如何生成消息和测量性能。它也可能不是最适合项目需求的工具。
  • 如何降低系统性能并暴露系统中的缺陷会对项目中使用Kafka的价值产生不利影响。如果可以直接访问机器和测试环境,则断开网络电缆,查杀进程等非常容易。但是,我们需要能够引入更复杂的故障条件,并且能够远程注入故障。

这些是我在任务开始时所知道的。还出现了几个,包括:

  • 在AWS中创建测试环境。这包括在VPC之间创建区域间对等,创建Kafka和Zookeeper集群,以及多个负载生成器和负载消费者实例来执行各种性能和负载测试。虽然有各种“快速入门”,包括用于部署Kafka集群的快速入门https://github.com/aws-quickstart/quickstart-confluent-kafka;最后我们不得不创建自…,堡垒主机和VPC。快速入门脚本经常失败,然后环境在失败后需要进行额外的清理。
  • Jepsen和其他类似的混沌生成工具。 Jepsen在几个主要版本之前测试了Kafka https://aphyr.com/posts/293-jepsen-kafka这些工具是可用的和开源的,但它们是否适合我们的环境和技能组合?
  • 在我们最终确定修改开源独立负载生成器并编写互惠负载消费者之前,各种开源负载生成器,包括与jmeter集成的2个。
  • Linux实用程序:我们广泛使用它来处理环境和自动化测试。类似地,在一些较大的体积负载测试之后,我们编写了实用程序脚本来监视,清理和重置集群和环境。
  • 启用主题自动创建的细微差别和影响。
  • KIP(卡夫卡改进提案):
  • 报告和分析:客户对报告内容以及报告方式有特别的期望。一些工具没有以足够的粒度提供结果,例如他们只提供“平均值”,我们需要校准工具,以便我们可以信任他们发出的数字。

注意:以下按主题或概念排序,而不是按时间顺序排序。

我是如何学习与测试Kafka相关的东西的


我知道从一开始就要学到很多东西。因此,我决定在合同签订之前投入时间和金钱,这样我就可以立即投入。值得庆幸的是,所有软件都是免费提供的,并且通常是开源的(这意味着我们可以阅读代码以帮助理解它,甚至修改它以帮助我们完成工作和学习)。

大多数学习都沉浸在实践中,我和我的同事会在各种测试环境中尝试,并通过实践,观察和实验来学习。 (我将在这里提到一些测试环境,并可能在其他博客文章中更详细地介绍方面。)

我发现并且第一次感谢在线课程的支付范围,深度和价值。虽然他们不一定像参加商业培训课程一样好,房间里有导师并且可以立即获得建议,但范围,价格和可用性是一个启示,我购买的所有课程的财务成本低于65英镑(90美元)。

阅读也很关键,网上有很多博客文章和文章,包括直接参与开发和测试Kafka的人的几篇重要文章。我还搜索了经过同行评审的学术文章。我只找到了一对 - 可惜的是,书面的学术研究是对商业和/或个人非正式报道的一种不可思议的补充。

我们花了很多时间阅读源代码,然后修改我们希望在适应后适合的代码。值得庆幸的是,客户同意我们可以公开提供我们的非机密工作,并在宽松的开源和创意公共许可下提供。

Udemy


几年前我第一次使用udemy课程来尝试学习几种技术。当时我没有得到或得到很多价值,但经常打折的价格足够低,我不介意太多。相比之下,这次我发现udemy课程非常有价值且相关。 udemy提供的课程的丰富性,范围和深度令人难以置信,并且有足够的优质课程可用于相关主题(特别是在Kafka,AWS和较小程度上的VMWare),以便能够快速,实用地取得进展。学习这些关键主题的方方面面。

我真的很感激能够不仅观看几个介绍性视频,还能看到我发现的每个潜在比赛中更高级主题的例子。观看这些是免费的,并不需要很长的时间,并使我能够很好地了解主持人的方法和材料是否值得我给我知道和我想要实现的目标。

如果我认为我至少要学习该课程中的几个具体项目,我就采取了支付课程费用的方法。与他们在我的意识和理解中释放的知识的潜在价值相比,成本很小。

有时,即使是看似做得不好的课程,也有助于我理解哪些概念很容易混淆和/或很难理解。如果主持人感到困惑 - 也许我也会感到困惑????那就是说,对我来说最有价值的来自以下与我特别相关的课程:

https://www.udemy.com/apache-kafka/learn/v4/overview
https://www.udemy.com/kafka-cluster-setup/learn/v4/overview
https://www.udemy.com/apache-kafka-security/learn/v4/overview
https://www.udemy.com/aws-certified-solutions-architect-associate/learn…
https://www.udemy.com/vmwarecloudaws/learn/v4/overview
前三个课程由同一位主持人Stephane Maarek领导。他特别有魅力。当我通过udemy的平台向他发送问题时,他也很有帮助和反应灵敏。

发表文章和博客文章


我不会在这里列出文章或博客文章。有太多,我怀疑过多的链接会对你有多大帮助。在学习方面,一些主要挑战在于确定这些文章是否与我们正在测试的Kafka版本实现的目标相关。例如,许多在Kafka版本0.10之前编写的文章不再具有相关性,并且复制测试和示例有时太耗时而无法证明所需的时间。

此外,项目想要使用Kafka的方式很少被覆盖,我们发现我们需要使用的一些关键配置设置极大地改变了Kafka的行为,这再次意味着许多文章和博客文章没有直接应用。

我使用了一个名为Zotero的软件工具来管理我的笔记和参考资料(我已经使用了几年作为我的博士研究的一部分)并且在那里记录了超过100篇已识别的文章。我在作业期间读了很多文章,可能多达1000篇。

学术研究


我发现的最好的文章比较了Kafka和RabbitMQ在工业研究环境中的作用。有几个版本可用。同行评审的文章可以在https://doi.org/10.1145/3093742.3093908找到,但是除非您有合适的订阅,否则您可能需要为此版本付费。最新版本似乎是https://arxiv.org/abs/1709.00333v1,可以免费下载和阅读。

测试环境


在这里,我会简短。我计划稍后深入介绍测试环境。我们的测试环境包括Raspberry Pi集群(使用MirrorMaker等进行复制),Docker容器,运行ESXi的廉价物理机架式服务器以及多个AWS环境。 Docker和AWS都经常被引用,例如我之前提到的udemy kafka课程使用AWS作为他们的机器。

 

原文: http://blog.bettersoftwaretesting.com/2018/04/testing-kafka-how-i-learned-stuff/

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