基于Istio与链路追踪的微服务混沌测试方法及装置与流程

文档序号:40407463发布日期:2024-12-20 12:48阅读:60来源:国知局
基于Istio与链路追踪的微服务混沌测试方法及装置与流程

本发明属于云原生,具体涉及基于istio与链路追踪的微服务混沌测试方法及装置。


背景技术:

1、微服务架构随着云计算和容器技术的发展,逐渐成为现代分布式系统设计的主流,其将单一应用拆分成多个独立的服务,每个服务负责特定的业务功能,可以独立开发、部署和扩展。相比于传统单体架构,微服务架构在可伸缩性、开发部署效率、维护性和可管理性等方面具有优势。但基于微服务架构的系统通常较复杂,一个故障的出现可能会影响系统的多个方面。因此,对于测试人员来说,识别和解决这些复杂的故障对于提升微服务架构系统的韧性至关重要。

2、kubernetes(简称k8s)是一个开源的容器编排平台,旨在自动化应用程序的部署、扩展和管理。它通过提供强大的功能,如自动化部署、弹性伸缩、服务发现、负载均衡和自愈能力,使得在大规模集群环境中运行容器化应用变得更加高效和可靠。kubernetes 广泛应用于现代云计算和微服务架构,成为管理容器化应用的标准解决方案。

3、istio是一种开源服务网格解决方案,专为微服务架构设计,提供流量管理、安全、可观测性和策略控制等功能。通过在每个服务实例旁部署一个代理(envoy),istio即可实现服务间的通信、负载均衡、认证授权、监控和故障注入,从而增强了系统的弹性、可靠性和安全性,使得管理和运行分布式微服务变得更加高效和可控。

4、链路追踪是一种用于监控和调试分布式系统的方法,通过记录和追踪每个请求在系统中经过的各个服务和组件,生成完整的请求路径。它帮助开发人员和运维人员了解系统的内部运行状况、识别性能瓶颈和定位问题,从而提高系统的可观测性和可靠性。

5、混沌工程用于在系统中模拟实际生产环境中可能出现的各种故障场景,以触发系统在面对这些故障时可能会出现的问题。相关人员根据所触发的问题提出解决方案,从而提升系统整体应对风险的能力。然而,手动进行混沌工程实验效率低下,需耗费大量人力成本;随机注入故障存在重复和遗漏,执行效率不高,不能充分覆盖测试空间。在隔离环境中进行测试需要大量资源配合,且对于一些信息安全要求高的组织和企业(如金融、军事、科技、电力等行业),在其他环境中部署一套系统专门用于测试几乎是不可能的。现有的微服务混沌测试工具有:

6、混沌工程平台:chaos mesh 是一种典型的混沌工程平台,适用于 kubernetes 环境中的故障注入。然而,每次进行故障注入时,都需要人工手动指定注入目标和配置故障参数。注入完成后,必须人工发出测试请求,并手动检查故障注入的效果是否符合预期。

7、http层故障注入工具:filibuster 作为 http 层故障注入工具的代表,能够在发出测试请求后,对下游请求和响应在网络层注入预先配置的故障。通过请求追踪自动探测微服务之间的依赖关系,并生成所需的故障组合,避免不必要的故障注入,自动检查测试结果是否符合预期。然而,这种方法需要对被测微服务的源代码进行修改,以实现请求追踪和故障注入。

8、随机故障注入工具:chaos monkey 是随机故障注入工具的典型代表,支持在生产环境中定期随机注入崩溃故障。虽然能够有效发现系统问题,但同时也会对真实用户产生影响,且难以量化测试进度。

9、基于自动依赖发现和代理的微服务混沌测试工具:这种工具对资源依赖度较高,不适合在生产环境中进行实验,难以实际应用和推广。

10、因此,基于istio与链路追踪的微服务混沌测试方法的研究具有重要意义。


技术实现思路

1、为了解决上述技术问题,本发明提供了基于istio与链路追踪的微服务混沌测试方法与装置。通过利用 envoy 拦截请求来获取请求定义并返回预设响应,依赖服务无需实际处理这些请求,通过直接返回预设响应,可以快速模拟各种服务响应情况,加快测试进程;通过链路追踪获取涉及的微服务粒度链路,并结合 envoy 拦截的请求定义生成一个微服务与请求对应的请求追踪树。随后,实施自底向上的测试策略,以全面覆盖测试空间。

2、为实现上述目的,本发明采用的技术方案如下:

3、一方面,本发明提供一种基于istio与链路追踪的微服务混沌测试方法,所述方法包括:

4、步骤s1、提交测试任务:所述测试任务内容包括当前被测系统所在的命名空间、选择触发被测链路的请求定义以及各个微服务的故障候选列表;

5、步骤s2、初始化测试环境:确保 istio 已安装并在被测系统中启用了 sidecar模式以及已经集成了链路追踪功能;

6、步骤s3、生成请求追踪树:通过处理后的触发被测链路的请求定义发起请求,利用envoy 过滤出经过每个微服务的请求定义,并通过链路追踪功能追踪此次请求的微服务级调用链路,结合请求定义与微服务级调用链路生成请求追踪树;

7、步骤s4、实施自底向上的测试策略:从请求追踪树的叶子结点开始自底向上实施测试用例,单个测试用例的执行包括注入候选故障、发起指定请求、触发envoy过滤器获取预设响应;

8、步骤s5、生成最终测试结果:通过收集请求、预设响应、微服务的调用、注入的故障类型相关信息,生成指定格式的测试结果。

9、另一方面,本发明提供一种基于istio与链路追踪的微服务混沌测试装置,所述装置包括:

10、trace处理器,用于标记并发起对被测链路的请求,根据此次请求的链路追踪数据和envoy过滤器过滤出的各个请求的请求定义生成请求追踪树,触发测试用例生成器;

11、测试用例生成器,用于根据trace处理器生成的请求追踪树的各个叶子节点以及前端提交的各个服务所对应的故障候选列表生成测试用例;

12、envoy过滤器,用于将trace处理器所标记的请求所触发的对下游各个服务的请求处理为指定格式的请求定义,以及对由测试用例执行器发起的指定请求触发生成响应过滤器或依据已有响应过滤器返回预设响应;

13、测试用例执行器,用于注入测试用例指定的故障、发起指定请求,并触发envoy过滤器,如果此指定请求具有对应的响应则会得到预设响应,如果没有则提交被测服务返回的结果与此次测试用例的信息至envoy过滤器生成响应过滤器;

14、测试结果处理器,用于根据测试用例执行器生成的测试过程数据生成指定格式的测试结果。

15、本发明与现有技术相比,具有以下优点:

16、1、人工成本低:本发明通过自动化的测试流程,显著减少了人工干预的需求。利用istio 的自动 sidecar 注入和链路追踪工具,实现了对测试链路的自动识别和追踪,测试用例的生成和执行均由系统自动完成,极大地降低了人工操作的复杂性和劳动强度。

17、2、执行效率高:采用自底向上的测试策略,通过并行执行测试用例,提高了测试的执行效率。envoy 过滤器能够有效拦截和处理请求和响应,减少了不必要的网络开销。通过动态注入 opentelemetry agent 和配置 opentelemetry collector,实现了高效的追踪数据采集和处理。

18、3、应用场景广:本发明支持在生产环境中进行测试,适用于各种规模的微服务系统。无论是简单的小规模微服务架构,还是复杂的大规模分布式系统,都能够有效应用本发明的方法和装置。

19、4、资源占用低:使用 envoy 进行请求和响应的拦截和处理,减少了对系统性能的影响,采样策略和预设响应机制的应用,进一步降低了测试过程中对计算和存储资源的需求。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1