文章目录
Service Mesh 在 OSI 的第 4 层到第 7 层之间运行,而 Kubernetes 容器网络接口(CNI)为第 2 层和第 3 层网络提供基础设施。当使用 Service Mesh 部署应用时,我们需要测试、确保和度量应用不会受到服务 Mesh 的负面影响。工具和测试套件在理解部署在其中的环境应用程序的影响方面起着至关重要的作用。随着向微服务的转移,工具集的分布式特性对于跨分布式应用程序部署(无论是在同一集群内还是集群之间)使用第 3 层到第 7 层流量进行测试变得更加重要。
已经有相当多的开源工具集能够应对测试和测量服务网格性能影响的挑战。使用以下工具对特性功能进行描述和比较:
- Fortio
- Nighthawk
- Wrk2
- Httpbin
- Meshery
- Isotope
- Hyperfoil
- Service-mesh-benchmark
- Locust
- Service Mesh Performance
理想特征集
在我们开始测试或测量服务网格影响之前,我们需要清楚地了解应用程序的部署环境。话虽如此,有助于研究基于微服务的应用程序部署的服务网格的理想功能集是什么?列出几项:
- 提供跨第 3 层到第 7 层的吞吐量和延迟性能
- 能够利用 HTTP 1/1.1/2 和/或 gRPC 功能
- 提供调整加密类型、连接数、同时用户数、套接字规模、正在发送/接收的数据包内部等设置的能力。
- 能够提供可插入和可扩展的接口以添加额外的测试功能
- 有一个活跃的开源社区
- 理想情况下符合 RFC 设置的要求,例如用于第 3 层测试的 RC2544。
- 在各种负载生成条件下具有低本底噪声,因此对测试结果的抖动/延迟最小甚至没有
- 最重要的是,在多次运行中提供一致的可重复结果
此处提供的工具集和测试套件基于源代码、社区讨论和提到的每个项目的文档描述了每个项目的亮点。
在开始测试之前,有关服务网格的基准测试和测试注意事项的详细信息,请查看关于服务网格性能的 5 件事
负载生成器
下图提供了可用开源负载生成器的高级描述。比较的负载生成器有Fortio、Nighthawk、Wrk2和Httpbin
优缺点
下面两个图在优缺点方面提供了高级别的特性比较。请注意,这种比较并不是否定开源社区所做的令人难以置信的工作,它只是比较每个工具集的特性/功能/性能属性。
将这些细节放在一起的来源很少:
持续的社区牵引
Github 活动通常为任何项目提供有关开源社区牵引力的见解。下图提供了关于每个开源社区活动的一些见解。
服务网格测试框架
虽然开源负载生成器可用作测试工具,但框架提供额外的测试功能,例如分布式测试、可扩展性、进一步定制等。Isotope、Hyperfoil、Meshery、Locust、Service Mesh Benchmark 和 Service Mesh Performance 等框架如下所述:
Isotope
有关 Isotope 和服务图的详细评论,请查看 Istio 的 Isotope
Hyperfoil
Hyperfoil 是一个面向微服务的分布式基准测试框架。
更多详情请看:Hyperfoil 主页
Meshery
Meshery 为服务网格提供了一个管理平面。
更多详情请看:Meshery 主页
Locust
Locust 为负载测试等提供框架。
更多详情请看:Locust 主页
Service Mesh Benchmark
Service Mesh Benchmark 是一个用于配置和测试服务网格的测试套件
服务网格基准:Service Mesh Benchmark GitHub
服务网格性能框架
用于跨各种网格使用模式部署和测试各种服务网格的框架
更多详情:服务网格性能框架
翻译自
Service Mesh Testing — Tools & Frameworks (Open Source)
关注
本文首发于微信公众号【进击云原生】,扫左侧码关注,了解更多咨询,更有免费资源供您学习