CN117914755A - 基于微服务架构的链路压测方法、系统、设备及存储介质 - Google Patents

基于微服务架构的链路压测方法、系统、设备及存储介质 Download PDF

Info

Publication number
CN117914755A
CN117914755A CN202311873980.1A CN202311873980A CN117914755A CN 117914755 A CN117914755 A CN 117914755A CN 202311873980 A CN202311873980 A CN 202311873980A CN 117914755 A CN117914755 A CN 117914755A
Authority
CN
China
Prior art keywords
pressure measurement
data
service
link
flow
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311873980.1A
Other languages
English (en)
Inventor
江艳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianyi IoT Technology Co Ltd
Original Assignee
Tianyi IoT Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tianyi IoT Technology Co Ltd filed Critical Tianyi IoT Technology Co Ltd
Priority to CN202311873980.1A priority Critical patent/CN117914755A/zh
Publication of CN117914755A publication Critical patent/CN117914755A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0677Localisation of faults
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Arrangements For Transmission Of Measured Signals (AREA)

Abstract

本申请实施例提供了一种基于微服务架构的链路压测方法、系统、设备及存储介质,属于链路压测技术领域。本方案通过对压测流量添加染色标识,并基于分布式系统追踪工具对被测链路进行性能监控,使得压测过程中能够基于染色标识和采集的性能数据快速定位被测链路中的问题节点;基于依赖管理工具高效且无侵入式地修改实际生产环境中应用服务针对压测数据的消息传递逻辑和存储逻辑,实现压测数据和真实数据隔离,使得压测结果更加真实可靠。

Description

基于微服务架构的链路压测方法、系统、设备及存储介质
技术领域
本申请涉及链路压测技术领域,尤其涉及一种基于微服务架构的链路压测方法、系统、设备及存储介质。
背景技术
微服务架构由一系列相对独立的细粒度的服务组成,一个完整的业务逻辑调用请求的背后可能牵涉后端几个、几十个甚至上百个服务接口,每个服务可能是由不同的团队开发,使用不同的编程语言,还有可能部署在不同的机器上,分布在不同的数据中心。
对于企业而言,每一个业务逻辑能否正常实现很大程度上依赖于众多微服务调用过程中各个服务的性能,因此,业务的链路压测尤为重要。示例性地,对于物联网卡管控的业务场景,物联网卡的使用管控,包括各类机卡绑定类型管控、各类区域限制类型管控,需要经过从CRM系统的资料同步,再到用户自行上线上报RADIUS消息及CHF消息,通过上报消息的使用区域、终端IMEI的情况,通过规则判断区域、IMEI的变化,然后做出相关的管控动作,即提交到订单中心,再由订单中心提交的下游的采控管理中心、CRM系统,采控、CRM系统对接网元实现物联网卡的管控。整个管控工作流程涉及多个开发模块、多个微服务,同时跨调4个系统,如果对整个流程链路进行压测,光是各个服务产品的人员协调就是一个较大的工程,牵扯大量的服务产品及开发人员,当遇到性能瓶颈问题时,当前的分析手段只能依靠人工层层分析链路相关节点日志确定问题节点位置,因此,目前的微服务架构下的链路压测效率和准确率低。
发明内容
本申请实施例的主要目的在于提出一种基于微服务架构的链路压测方法、系统、设备及存储介质,旨在提高链路压测效率和准确率。
为实现上述目的,本申请实施例的一方面提出了一种基于微服务架构的链路压测方法,包括以下步骤:
根据目标业务场景确定目标生产环境信息,其中,所述目标生产环境信息包括链路数据、业务流量和数据存储范围;
根据所述业务流量确定压测流量,并为所述压测流量中的压测请求添加染色标识;
根据所述数据存储范围创建影子存储节点,所述影子存储节点用于存储压测过程产生的压测数据;
采用依赖管理工具,为所述链路数据所涉及的各个应用服务配置压测组件的依赖,其中,所述压测组件用于识别压测请求并根据压测请求中的染色标识进行消息传递和存储;
根据所述压测流量和所述链路数据创建并运行压测脚本以对目标业务链路进行压测;
通过分布式系统追踪工具,采集压测过程中各节点的性能数据,并根据所述性能数据确定压测结果。
在一些实施例中,所述根据目标业务场景确定目标生产环境信息,包括以下步骤:
通过执行功能回归用例对目标业务场景的正常流量进行联合调试和测试,其中,联合调试和测试过程中正常回归流量设置流量标;
根据正常流量联合调试和测试的联调结果,确定链路数据和数据存储范围;
根据所述数据存储范围获取生产库中的数据并进行清洗,得到业务数据。
在一些实施例中,所述影子存储节点包括影子库和影子表,所述根据所述数据存储范围创建影子存储节点,包括以下步骤:
根据所述数据存储范围确定若干个生产库和若干个业务表;
根据所述生产库的结构配置创建相同结构的影子库,将所述生产库中的数据复制到所述影子库中,将所述生产库的库名加上前缀或者后缀作为所述影子库的库名;
根据所述业务表的结构配置在所述业务表所在的生产库中创建相同结构的影子表,将所述业务表的表名加上前缀或者后缀作为所述影子表的表名。
在一些实施例中,所述压测组件包括控制拦截器和请求拦截器;
所述控制拦截器用于拦截压测请求,并将所述压测请求的染色标识写到线程变量中;
所述请求拦截器用于拦截所要发送的服务请求,将所述线程变量的染色标识写到所述服务请求的头部信息中。
在一些实施例中,所述压测组件还包括数据隔离器;
所述数据隔离器用于根据所述线程变量的染色标识识别压测数据,将所述压测数据的主键修改为预设字段后将所述压测数据存储到影子存储节点中。
在一些实施例中,所述基于微服务架构的链路压测方法还包括以下步骤:
根据所述链路数据确定调用外部通讯接口的调用对象;
为所述调用对象添加接口模拟组件,其中,所述接口模拟组件用于识别压测数据,并将所述压测数据的外部通讯接口调用替换为模拟接口调用。
在一些实施例中,所述基于微服务架构的链路压测方法还包括以下步骤:
通过移动均值算法确定各个节点的性能数据的趋势变化曲线;
通过标准差算法确定各个节点的性能数据的波动范围;
根据性能数据的所述趋势变化曲线和所述波动范围进行链路的压测风险预警。
为实现上述目的,本申请实施例的另一方面提出了一种一种基于微服务架构的链路压测系统,包括:
第一模块,用于根据目标业务场景确定目标生产环境信息,其中,所述目标生产环境信息包括链路数据、业务流量和数据存储范围;
第二模块,用于根据所述业务流量确定压测流量,并为所述压测流量中的压测请求添加染色标识;
第三模块,用于根据所述数据存储范围创建影子存储节点,所述影子存储节点用于存储压测过程产生的压测数据;
第四模块,用于采用依赖管理工具,为所述链路数据所涉及的各个应用服务配置压测组件的依赖,其中,所述压测组件用于识别压测请求并根据压测请求中的染色标识进行消息传递和存储;
第五模块,用于根据所述压测流量和所述链路数据创建并运行压测脚本以对目标业务链路进行压测;
第六模块,用于通过分布式系统追踪工具,采集压测过程中各节点的性能数据,并根据所述性能数据确定压测结果。
为实现上述目的,本申请实施例的另一方面提出了一种电子设备,所述电子设备包括存储器、处理器、存储在所述存储器上并可在所述处理器上运行的程序以及用于实现所述处理器和所述存储器之间的连接通信的数据总线,所述程序被所述处理器执行时实现上述实施例所述的基于微服务架构的链路压测方法。
为实现上述目的,本申请实施例的另一方面提出了一种存储介质,所述存储介质为计算机可读存储介质,用于计算机可读存储,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述实施例所述的基于微服务架构的链路压测方法。
本申请提出的基于微服务架构的链路压测方法、系统、设备及存储介质,其通过对压测流量添加染色标识,并基于分布式系统追踪工具对被测链路进行性能监控,使得压测过程中能够基于染色标识和采集的性能数据快速定位被测链路中的问题节点;基于依赖管理工具高效且无侵入式地修改实际生产环境中应用服务针对压测数据的消息传递逻辑和存储逻辑,实现压测数据和真实数据隔离,使得压测结果更加真实可靠。
附图说明
图1是本申请实施例提供的微服务架构的链路压测方法的流程图;
图2是图1中的步骤S101的流程图;
图3是图1中的步骤S103的流程图;
图4是本申请另一实施例提供的微服务架构的链路压测方法的流程图;
图5是本申请另一实施例提供的微服务架构的链路压测方法的流程图;
图6是本申请实施例提供的物联网卡管控流程示意图;
图7是本申请实施例提供的各个微服务传递消息过程示意图;
图8是本申请实施例提供的MQ消息中间件存储数据过程示意图;
图9是本申请实施例提供的调用外部通讯接口服务过程示意图;
图10是本申请实施例提供的生产环境下真实流量处理过程和压测流程处理过程对比示意图;
图11是本申请实施例提供的基于微服务架构的链路压测系统示意图;
图12是本申请实施例提供的电子设备的硬件结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,虽然在系统示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于系统中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
首先,对本申请中涉及的若干名词进行解析:
RADIUS(Remote Authentication Dial In User Service,远程用户拨号认证系统):是一种在计算机网络中广泛使用的认证、授权和会计协议。RADIUS协议在4G无线网络中扮演重要的角色。在4G LTE网络中,RADIUS协议用于对无线终端设备(如智能手机、平板电脑)进行用户认证和授权。
CHF(Charging Function,计费功能):负责产生计费数据记录,作为在线计费的配额控制节点,对用户的各种业务执行在线计费的费率处理。
IMEI(International Mobile Equipment Identity,国际移动设备识别码),即通常所说的手机序列号、手机“串号”,用于在移动电话网络中识别每一部独立的手机等移动通信设备,相当于移动电话的身份证。序列号共有15~17位数字,前8位(TAC)是型号核准号码,是区分手机品牌和型号的编码,接着2位(FAC)是最后装配号,代表最终装配地代码。后6位(SNR)是串号,代表生产顺序号。
CRM(Customer Relationship Management,客户关系管理系统),是指企业用来管理和分析客户在整个生命周期内数据交互的方法和策略,并利用相应的信息技术来协调企业之间的销售、服务和营销的系统。
基于此,本申请实施例提供了一种基于微服务架构的链路压测方法、系统、设备及存储介质,旨在提高链路压测效率和准确率。
本申请实施例提供的推荐方法和装置、电子设备及存储介质,具体通过如下实施例进行说明,首先描述本申请实施例中的微服务架构的链路压测方法。
本申请实施例提供的微服务架构的链路压测方法,涉及链路压测技术领域。本申请实施例提供的微服务架构的链路压测方法可应用于终端中,也可应用于服务器端中,还可以是运行于终端或服务器端中的软件。在一些实施例中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机等;服务器端可以配置成独立的物理服务器,也可以配置成多个物理服务器构成的服务器集群或者分布式系统,还可以配置成提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN以及大数据和人工智能平台等基础云计算服务的云服务器;软件可以是实现微服务架构的链路压测方法的应用等,但并不局限于以上形式。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
图1是本申请实施例提供的微服务架构的链路压测方法的一个可选的流程图,图1中的方法可以包括但不限于包括步骤S101至步骤S106。
步骤S101,根据目标业务场景确定目标生产环境信息,其中,目标生产环境信息包括链路数据、业务流量和数据存储范围;
步骤S102,根据业务流量确定压测流量,并为压测流量中的压测请求添加染色标识;
步骤S103,根据数据存储范围创建影子存储节点,影子存储节点用于存储压测过程产生的压测数据;
步骤S104,采用依赖管理工具,为链路数据所涉及的各个应用服务配置压测组件的依赖,其中,压测组件用于识别压测请求并根据压测请求中的染色标识进行消息传递和存储;
步骤S105,根据压测流量和链路数据创建并运行压测脚本以对目标业务链路进行压测;
步骤S106,通过分布式系统追踪工具,采集压测过程中各节点的性能数据,并根据性能数据确定压测结果。
本申请实施例所示意的步骤S101至步骤S106,通过对压测流量添加染色标识,并基于分布式系统追踪工具对被测链路进行性能监控,使得压测过程中能够基于染色标识和采集的性能数据快速定位被测链路中的问题节点;基于依赖管理工具高效且无侵入式地修改实际生产环境中应用服务针对压测数据的消息传递逻辑和存储逻辑,实现压测数据和真实数据隔离,使得压测结果更加真实可靠。
在一些实施例的步骤S101中,可以根据目标业务场景分析所需要进行压测的生产环境的相关信息。一般地,不同业务场景对应有相应的生产环境,生产环境为业务实现过程中所经过的各种节点情况以及实现业务所需的业务数据等,在微服务架构下,生产环境为业务实现过程中各种应用服务的调用关系(即链路数据)、所涉及的数据存储情况(即数据存储范围)以及实现业务所需的业务数据,在某一时间段下生产环境的业务数据形成业务流量。
以目标业务场景为物联网卡管控场景为例,请参照图6,在进行物联网卡管控时,需要连接管理平台内部的资料中心,通过资料变化同步消息给规则中心制定相关的管控规则,规则引擎通过物联网卡上线的radius消息及CHF消息中的终端IMEI变化及上线区域变化以触发对应的管控策略,在将管控策略提交到订单中心,订单中心指导下游系统CRM系统、采控系统需要对网元下发的操作,CRM及采控系统再对接4G、5G网元下发指令执行物联网卡的管控操作。该业务场景下,对应的生产环境信息可以为订单中心指导下游各系统时以及下游各系统对接网元所涉及的调用服务链路数据、订单中心所发送的需要进行管控的卡号管控请求(形成业务流量)以及从订单中心发送请求到网元完成管控操作过程中一系列数据的存储位置。
请参阅图2,在一些实施例中,步骤S101可以包括但不限于包括步骤S201至步骤S203:
步骤S201,通过执行功能回归用例对目标业务场景的正常流量进行联合调试和测试,其中,联合调试和测试过程中正常回归流量设置流量标;
步骤S202,根据正常流量联合调试和测试的联调结果,确定链路数据和数据存储范围;
步骤S203,根据数据存储范围获取生产库中的数据并进行清洗,得到业务数据。
在本实施例中,在进行针对目标业务场景的生产环境进行压测前,可以先确定压测需求,包括压测范围(如生产环境的全链路压测、部分链路压测)、压测策略(如逐步加压测试、增大脉冲测试、并发量测试、小流量压测)、压测目的(期望达到的QPS、稳定性要求),还可以通过正常流量联调梳理生产环境系统架构、请求链路、相关技术结构、模块划分,以及消息、缓存和数据库等中间件的使用情况,初步分析潜在的瓶颈点,以后续针对性地增加压测监控指标。
在正常流量联调过程中,通常通过执行功能回归用例完成联调,需要将正常回归流量打上流量标,以在查找调用链路时可以精准定位。根据正常流量联调的结果,梳理出相关的数据库存储范围和第三方服务的依赖情况,根据第三方服务的依赖情况确定链路数据。进一步地,还可以根据数据库存储范围确定存储正常业务请求的生产库,从该生产库获取大量的业务请求,并进行数据筛选和清洗,从而形成业务流量。
在一些实施例的步骤102中,基于业务流量构建与生产环境实际工作相同的压测流量,再基于压测流量构建压测脚本对生产环境进行全链路压测,能够提高链路压测的准确性。针对全链路压测流量染色,通过压测平台对输出的压力请求打上标识,在服务系统中提取压测标识,确保完整的程序上下文都有该染色标识,且能够穿透微服务及各种中间件,比如MQ,Fegin,从而方便压测数据的快速定位。具体地,压测平台为压测请求添加染色标识的方式可以是在压测请求的HTTP请求头中添加自定义的染色标识。在不同应用服务相互调用时,每个应用服务都能识别出压测的请求流量,染色标识能够互相透传下去,即通过应用框架进行感知。示例性地,请继续参照图6,在物联网卡管控场景下,在实时采集话单获取IMEI变化及AREA变化之前,还需要进行压测测试卡打标流程以及打标的测试卡在非绑定终端/非管控区域上线流程。
在一些实施例的步骤S103中,影子存储节点用于单独存储压测请求及压测回归数据,从而隔离正常的业务数据请求与压测数据请求,减少对正常业务的影响。影子存储节点包括若干个影子库和若干个影子表,影子库基于正常业务处理涉及的生产库结构构建,影子表基于正常业务处理涉及的业务表结构构建。在另外一种示例中,影子存储节点还可以是消息中间件的影子队列,影子队列用于缓存处理过程的相关数据,影子队列同样基于生产环境的消息中间件的队列构建得到。
请参阅图3,在一些实施例中,步骤S103可以包括但不限于包括步骤S301至步骤S303:
步骤S301,根据数据存储范围确定若干个生产库和若干个业务表;
步骤S302,根据生产库的结构配置创建相同结构的影子库,将生产库中的数据复制到影子库中,将生产库的库名加上前缀或者后缀作为影子库的库名;
步骤S303,根据业务表的结构配置在业务表所在的生产库中创建相同结构的影子表,将业务表的表名加上前缀或者后缀作为影子表的表名。
在本实施例中,通过创建与生产环境结构相同的影子库,将生产库中的数据复制到影子库中,模仿生产库的使用情况,不仅能隔离压测数据,还能提高数据库存储性能压测的准确性。通过在生产库中创建与业务表结构相同的影子表,在压测数据与正常数据存储于相同库的情况下,通过影子表也能隔离压测数据。
在一些实施例的步骤S104中,在不同应用服务的相互调用时,为了使压测请求中的染色标识能够在微服务之间互相传递,需要修改应用服务的处理逻辑,而生产环境中涉及大量应用服务的调用,如果直接修改应用服务的代码,应用服务代码容易出错且效率低下,因此,本申请实施例通过依赖管理工具配置相关应用服务的依赖,从而修改应用服务在遇到压测数据时的处理逻辑,在业务代码无侵入的基础上实现链路压测。
依赖管理工具可以是SprintBoot Starter,可以帮助开发者快速搭建SpringBoot项目,简化项目的依赖管理,通过引入一个Starter,能够获得压测组件依赖,避免手动添加大量的依赖配置,从而提高开发效率。示例性地,使用springboot starter使微服务配置(组件)自动装配,配置当满足指定条件(例如:具备染色标识的压测流量进来)时,才进行对应的压测组件注册。微服务通过@Conditional完成配置自动装配,@Conditional表示仅当所有指定条件都匹配时,组件才有资格注册。@Conditional注释使用方式为:作为任何@Bean方法的方法级注释,和自动装配一样,springboot starter的目的也是简化配置,解决的是依赖管理配置负责的问题,当需要构建Web应用程序时,不必编译所有的依赖包,一个一个地添加到项目的依赖管理中,而是只需要配置一个spring-boot-starter-web。springboot starter开发规范中,项目中会有一个空的名为xxx-spring-boot-starter-web的项目,项目主要靠pom.xml将所有需要的依赖映入进来,同时项目还会有一个xxx-spring-boot-autoconfigure项目,这个项目主要写带@Configuration注释的配置类,在这个类或者类中带@Bean的方法上,在xxx-spring-boot-starter的项目下的resources文件夹下面新建一个META-INF文件,并在下面创建spring.factories文件,将自动配置类配置进去。本实施例避免为了压测对各个微服务进行改造,在各个服务中入侵很多不必要的代码,通过SprintBoot Starter实现压测处理逻辑无侵入修改。
压测组件用于识别压测请求并根据压测请求中的染色标识进行消息传递和存储。即应用服务注册配置有压测组件依赖时,通过压测组件能够识别接收到的压测请求,根据压测请求中的染色标识对下一级服务进行调用以及根据染色标识进行数据缓存、存储或者消息推送。
在一种实施例中,压测组件包括控制拦截器和请求拦截器;
控制拦截器用于拦截压测请求,并将压测请求的染色标识写到线程变量中;
请求拦截器用于拦截所要发送的服务请求,将线程变量的染色标识写到服务请求的头部信息中。
具体地,控制拦截器可以是基于Spring MVC框架构建的MVC拦截器,MVC拦截器是Spring MVC框架中的一种组件,类似于Servlet中的过滤器(Filter),主要用于拦截用户请求并作相应的处理,在SpringMVC中通过实现HandlerInterceptor接口实现自定义拦截器类。请求拦截器可以是Feign拦截器,Feign拦截器是一种在发送请求前对请求进行操作的机制,例如设置请求头等属性,Feign提供了拦截器机制,在真正HTTP调用之前,执行拦截器逻辑,业务逻辑层无感知。
参照图7,各个微服务(即应用服务)注册压测组件依赖后,利用压测组件进行消息传递的过程为:微服务A的MVC拦截器接收到压测请求后,通过Header的方式获取到压测请求中的染色标识,并将染色标识设置进当前的THreadLocal(线程变量)中,微服务A调用微服务B使用。当微服务A需要调用微服务B时,利用Fegin拦截器在发送请求之前从ThreadLocal中获取到染色标识,并放进Fegin构建请求的Header中,实现微服务之间的压测数据传递。
在一种实施例中,压测组件还包括数据隔离器;
数据隔离器用于根据线程变量的染色标识识别压测数据,将压测数据的主键修改为预设字段后将压测数据存储到影子存储节点中。
具体地,应用服务注册压测组件依赖后,利用压测组件依赖进行数据存储的过程为:服务通过MVC拦截器的ThreadLocal识别出来压测数据后,当需要进行数据存储时,利用数据隔离器进行数据存储,如果是压测数据就路由到影子库,如果是正常流量则路由到主库,同时如果是压测数据,则在压测数据的主键后面加上后缀,通过不同主键将Redis缓存数据或者MQ消息中间件数据隔离。示例性地,请参照图8,MQ消息中间件数据隔离的过程为:判断来自发送端服务的是否存在染色标识Token,如果存在染色标识Token,则利用Feign拦截器在将要发送的请求Header增加Token,利用数据隔离器对在数据的主键后加上后缀然后缓存进MQ服务的影子队列QUEUE_SHADOW中;如果不存在染色标识Token,则直接存储进MQ服务的正常队列QUEUE中,然后MQ服务再将队列中的消息推送至消费者服务。
进一步地,为防止污染生产日志全链路日志隔离,可以在web系统向磁盘或外设输出日志时,若流量被标记为压测流量,则将日志隔离输出到压测日志的路径下,避免影响生产日志。
请参阅图4,在一些实施例中,本申请实施例的基于微服务架构的链路压测方法还可以包括但不限于包括步骤S401至步骤S402:
步骤S401,根据链路数据确定调用外部通讯接口的调用对象;
步骤S402,为调用对象添加接口模拟组件,其中,接口模拟组件用于识别压测数据,并将压测数据的外部通讯接口调用替换为模拟接口调用。
具体地,为了减少压测时对用户的影响,需要对部分第三方数据接口进行隔离,例如,短信、邮件等外部通讯接口,正常的数据需要发送短信,对于压测数据则不能直接调用外部通讯接口发送短信。本实施例根据链路数据的调用关系确定需要调用外部通讯接口的调用对象,为调用对象添加接口模拟组件,当调用对象在调用外部通讯接口之前识别压测数据,当识别到压测数据则改为调用MOCK接口(即模拟接口)。进一步地,可以在小流量压测联调时验证第三方MOCK接口。请参照图9,对压测过程中某应用调用第三方的外部通讯接口进行说明。通过请求入口接收到请求后,判断请求是否存在染色标识Token,如果不存在表明其为正常业务请求,则直接调用第三方接口,如果存在表明其为压测请求,则通过模拟接口对压测请求进行拦截和验证。
在步骤S105的一些实施例中,在通过步骤S102创建压测流量以及通过步骤S103和S104对生产环境进行相关配置后,根据压测流量和压测链路创建并运行压测脚本,使得压测流量能够按照压测链路在生产环境中联调,联调压测流量与正常流量联调的方式基本一致,联调过程中压测流量打上染色标识,在查找调用链时可以精准定位。
在步骤S106的一些实施例中,在整个压测过程中通过分布系统追踪工具进行全链路服务监控,实时监控服务的运行状况以及分析服务的调用链。分布系统追踪工具可以是Zipkin、Jaeger、Pinpoint或者SkyWalking等,其中Skywalking是可以通过探针自动收集所需的指标,并进行分布式追踪,通过调用链路及其性能指标,Skywalking APM感知应用间关系和服务间关系,并进行相应的性能指标数据统计。本实施例可以根据瓶颈节点测试需求进行多种不同类型压测,具体可以是:单链路小流量测试,对生产环境进行小流量试压,暴露最表层的问题,保证流程的正确性;单链路压测,验证所有接口在无干扰、无竞争的情况下的性能基线数据,确定所有接口的性能SLA;全链路小流量压测,对生产环境进行小流量试压,暴露最表层的问题,保证流程的正确性;全链路压测,按生产环境流量配比进行复合场景全链路压测。探测相互干扰、竞争情况下的资源消耗水位和瓶颈。
请参阅图5,在一些实施例中,本申请实施例的基于微服务架构的链路压测方法还可以包括但不限于包括步骤S501至步骤S503:
步骤S501,通过移动均值算法确定各个节点的性能数据的趋势变化曲线;
步骤S502,通过标准差算法确定各个节点的性能数据的波动范围;
步骤S503,根据性能数据的趋势变化曲线和波动范围进行链路的压测风险预警。
在本实施例中,通过Skywaling agent,采集调用链数据及其性能指标,如调用成功率和时延,通过移动均值来识别各个接口的性能数据(调用成功率/时延)的趋势变化规律得到变化趋势曲线,使用标准差来识别性能数据层的波动范围,结合的变化趋势的上下限阈值和波动范围的上下限阈值,识别下游系统的性能数据趋势反转现象,从而提前监控告警当链路接口达到变化趋势的上下限阈值或者波动范围的上下限阈值时,进行全链路风险熔断。此外,可以通过配置两个服务系统之间的服务通讯黑白名单开关控制流量流入以减少链路风险,还可以通过降低调用或关闭压测开关,保证下游系统能够平稳运行不受压测的影响,在一定程度上避免下游系统出现瓶颈、不支持压测所带来的风险。
根据本申请一些可实施例,请参照图10,图10提供了一种生产环境下真实流量处理过程和压测流程处理过程对比示意图,具体为:压测流量携带染色标识进入生产流程,微服务之间通过各自配置MVC拦截器和Reign拦截器进行包含染色标识的消息传递,采用MQ隔离技术,通过RoutingKEY+后缀以及添加染色标记的方式对所需存储或者缓存的压测数据进行处理,并将处理后的压测数据存储至与正常流量存储节点结构配置相同的影子节点中,影子节点类型分别为永久数据库、Redis数据库和缓存队列,而消费服务对于压测请求的回归数据同样存储于影子节点中。此外,涉及到调用外部接口的微服务,其针对压测请求进行外部接口调用时,改为调用MOCK接口,而正常数据则正常调用外部接口。在压测过程中,利用Skywalking对各个接口进行流量监控及压测分析,从而得到压测结果。
根据本申请一些实施例,本申请实施例具备以下有益效果:
在物联网卡管控场景下,能够在物联网卡各类机卡绑定及区域限制场景下的全链路压测时快速定位到具体的服务/接口的性能瓶颈点,改进多个微服务及跨系统之间通过分析错误日志,层层追溯定位性能瓶颈的问题,以及解决协调各个系统、各个产品线、各个微服务开发之间协作定位分析问题难的痛点。
在生产环境做实现无侵入压测,染色压测数据,对压测数据和实际数据进行隔离,使得压测结果更加真实可靠,且避免产生垃圾数据。
在全链路真实环境压测,提供轨迹性能问题点定位和发现,同时也可以作为压测结果准确性的证据链。
在压测时能够实现全链路风险熔断,在一定程度上避免下游系统出现瓶颈、不支持压测带来的的风险。
请参阅图11,本申请实施例还提供一种基于微服务架构的链路压测系统,包括:
第一模块,用于根据目标业务场景确定目标生产环境信息,其中,目标生产环境信息包括链路数据、业务流量和数据存储范围;
第二模块,用于根据业务流量确定压测流量,并为压测流量中的压测请求添加染色标识;
第三模块,用于根据数据存储范围创建影子存储节点,影子存储节点用于存储压测过程产生的压测数据;
第四模块,用于采用依赖管理工具,为链路数据所涉及的各个应用服务配置压测组件的依赖,其中,压测组件用于识别压测请求并根据压测请求中的染色标识进行消息传递和存储;
第五模块,用于根据压测流量和链路数据创建并运行压测脚本以对目标业务链路进行压测;
第六模块,用于通过分布式系统追踪工具,采集压测过程中各节点的性能数据,并根据性能数据确定压测结果。
可以理解的是,上述基于微服务架构的链路压测方法实施例中的内容均适用于本系统实施例中,本系统实施例所具体实现的功能与上述基于微服务架构的链路压测方法实施例相同,并且达到的有益效果与上述基于微服务架构的链路压测方法实施例所达到的有益效果也相同。
本申请实施例还提供了一种电子设备,电子设备包括:存储器、处理器、存储在存储器上并可在处理器上运行的程序以及用于实现处理器和存储器之间的连接通信的数据总线,程序被处理器执行时实现上述基于微服务架构的链路压测方法。该电子设备可以为包括平板电脑、车载电脑等任意智能终端。
请参阅图12,图12示意了另一实施例的电子设备的硬件结构,电子设备包括:
处理器901,可以采用通用的CPU(CentralProcessingUnit,中央处理器)、微处理器、应用专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请实施例所提供的技术方案;
存储器902,可以采用只读存储器(ReadOnlyMemory,ROM)、静态存储设备、动态存储设备或者随机存取存储器(RandomAccessMemory,RAM)等形式实现。存储器902可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器902中,并由处理器901来调用执行本申请实施例的基于微服务架构的链路压测方法;
输入/输出接口903,用于实现信息输入及输出;
通信接口904,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信;
总线905,在设备的各个组件(例如处理器901、存储器902、输入/输出接口903和通信接口904)之间传输信息;
其中处理器901、存储器902、输入/输出接口903和通信接口904通过总线905实现彼此之间在设备内部的通信连接。
本申请实施例还提供了一种存储介质,存储介质为计算机可读存储介质,用于计算机可读存储,存储介质存储有一个或者多个程序,一个或者多个程序可被一个或者多个处理器执行,以实现上述基于微服务架构的链路压测方法。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本申请实施例描述的实施例是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本领域技术人员可以理解的是,图1-5中示出的技术方案并不构成对本申请实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
以上所描述的系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。
以上参照附图说明了本申请实施例的优选实施例,并非因此局限本申请实施例的权利范围。本领域技术人员不脱离本申请实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本申请实施例的权利范围之内。

Claims (10)

1.一种基于微服务架构的链路压测方法,其特征在于,包括以下步骤:
根据目标业务场景确定目标生产环境信息,其中,所述目标生产环境信息包括链路数据、业务流量和数据存储范围;
根据所述业务流量确定压测流量,并为所述压测流量中的压测请求添加染色标识;
根据所述数据存储范围创建影子存储节点,所述影子存储节点用于存储压测过程产生的压测数据;
采用依赖管理工具,为所述链路数据所涉及的各个应用服务配置压测组件的依赖,其中,所述压测组件用于识别压测请求并根据压测请求中的染色标识进行消息传递和存储;
根据所述压测流量和所述链路数据创建并运行压测脚本以对目标业务链路进行压测;
通过分布式系统追踪工具,采集压测过程中各节点的性能数据,并根据所述性能数据确定压测结果。
2.根据权利要求1所述的基于微服务架构的链路压测方法,其特征在于,所述根据目标业务场景确定目标生产环境信息,包括以下步骤:
通过执行功能回归用例对目标业务场景的正常流量进行联合调试和测试,其中,联合调试和测试过程中正常回归流量设置流量标;
根据正常流量联合调试和测试的联调结果,确定链路数据和数据存储范围;
根据所述数据存储范围获取生产库中的数据并进行清洗,得到业务数据。
3.根据权利要求1所述的基于微服务架构的链路压测方法,其特征在于,所述影子存储节点包括影子库和影子表,所述根据所述数据存储范围创建影子存储节点,包括以下步骤:
根据所述数据存储范围确定若干个生产库和若干个业务表;
根据所述生产库的结构配置创建相同结构的影子库,将所述生产库中的数据复制到所述影子库中,将所述生产库的库名加上前缀或者后缀作为所述影子库的库名;
根据所述业务表的结构配置在所述业务表所在的生产库中创建相同结构的影子表,将所述业务表的表名加上前缀或者后缀作为所述影子表的表名。
4.根据权利要求1所述的基于微服务架构的链路压测方法,其特征在于,所述压测组件包括控制拦截器和请求拦截器;
所述控制拦截器用于拦截压测请求,并将所述压测请求的染色标识写到线程变量中;
所述请求拦截器用于拦截所要发送的服务请求,将所述线程变量的染色标识写到所述服务请求的头部信息中。
5.根据权利要求4所述的基于微服务架构的链路压测方法,其特征在于,所述压测组件还包括数据隔离器;
所述数据隔离器用于根据所述线程变量的染色标识识别压测数据,将所述压测数据的主键修改为预设字段后将所述压测数据存储到影子存储节点中。
6.根据权利要求1所述的基于微服务架构的链路压测方法,其特征在于,所述基于微服务架构的链路压测方法还包括以下步骤:
根据所述链路数据确定调用外部通讯接口的调用对象;
为所述调用对象添加接口模拟组件,其中,所述接口模拟组件用于识别压测数据,并将所述压测数据的外部通讯接口调用替换为模拟接口调用。
7.根据权利要求1所述的基于微服务架构的链路压测方法,其特征在于,所述基于微服务架构的链路压测方法还包括以下步骤:
通过移动均值算法确定各个节点的性能数据的趋势变化曲线;
通过标准差算法确定各个节点的性能数据的波动范围;
根据性能数据的所述趋势变化曲线和所述波动范围进行链路的压测风险预警。
8.一种基于微服务架构的链路压测系统,其特征在于,包括:
第一模块,用于根据目标业务场景确定目标生产环境信息,其中,所述目标生产环境信息包括链路数据、业务流量和数据存储范围;
第二模块,用于根据所述业务流量确定压测流量,并为所述压测流量中的压测请求添加染色标识;
第三模块,用于根据所述数据存储范围创建影子存储节点,所述影子存储节点用于存储压测过程产生的压测数据;
第四模块,用于采用依赖管理工具,为所述链路数据所涉及的各个应用服务配置压测组件的依赖,其中,所述压测组件用于识别压测请求并根据压测请求中的染色标识进行消息传递和存储;
第五模块,用于根据所述压测流量和所述链路数据创建并运行压测脚本以对目标业务链路进行压测;
第六模块,用于通过分布式系统追踪工具,采集压测过程中各节点的性能数据,并根据所述性能数据确定压测结果。
9.一种电子设备,其特征在于,所述电子设备包括存储器、处理器、存储在所述存储器上并可在所述处理器上运行的程序以及用于实现所述处理器和所述存储器之间的连接通信的数据总线,所述程序被所述处理器执行时实现如权利要求1至7任一项所述的基于微服务架构的链路压测方法的步骤。
10.一种存储介质,所述存储介质为计算机可读存储介质,用于计算机可读存储,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1至7中任一项所述的基于微服务架构的链路压测方法的步骤。
CN202311873980.1A 2023-12-29 2023-12-29 基于微服务架构的链路压测方法、系统、设备及存储介质 Pending CN117914755A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311873980.1A CN117914755A (zh) 2023-12-29 2023-12-29 基于微服务架构的链路压测方法、系统、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311873980.1A CN117914755A (zh) 2023-12-29 2023-12-29 基于微服务架构的链路压测方法、系统、设备及存储介质

Publications (1)

Publication Number Publication Date
CN117914755A true CN117914755A (zh) 2024-04-19

Family

ID=90681177

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311873980.1A Pending CN117914755A (zh) 2023-12-29 2023-12-29 基于微服务架构的链路压测方法、系统、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117914755A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118337644A (zh) * 2024-06-17 2024-07-12 杭州宇信数字科技有限公司 一种跨数据中心的微服务管理的处理方法和装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118337644A (zh) * 2024-06-17 2024-07-12 杭州宇信数字科技有限公司 一种跨数据中心的微服务管理的处理方法和装置
CN118337644B (zh) * 2024-06-17 2024-08-27 杭州宇信数字科技有限公司 一种跨数据中心的微服务管理的处理方法和装置

Similar Documents

Publication Publication Date Title
USRE48681E1 (en) System and method for tracking web interactions with real time analytics
Cinque et al. Microservices monitoring with event logs and black box execution tracing
US10419499B2 (en) Method and system for application security evaluation
US10135936B1 (en) Systems and methods for web analytics testing and web development
US10178031B2 (en) Tracing with a workload distributor
KR102083766B1 (ko) 애플리케이션별 자원 사용량 정보의 제공 기법
CN109600280B (zh) 压力测试系统、方法、装置及计算机可读存储介质
CN117914755A (zh) 基于微服务架构的链路压测方法、系统、设备及存储介质
Ajienka et al. An empirical analysis of source code metrics and smart contract resource consumption
CN110442502A (zh) 一种埋点的方法、装置、设备及存储介质
CN116155771A (zh) 网络异常测试方法、装置、设备、存储介质和程序
JP2017516202A (ja) プロモーション状況データの監視方法、装置、デバイス及び非発揮性コンピューター記憶媒体
CN106067879A (zh) 信息的检测方法及装置
Wang et al. On the value of quality of service attributes for detecting bad design practices
CN115705190A (zh) 依赖程度的确定方法及装置
CN109214189B (zh) 识别程序漏洞的方法、装置、存储介质和电子设备
CN114895879B (zh) 管理系统设计方案确定方法、装置、设备及存储介质
CN110650063A (zh) 一种集中式的银行第三方软件仿真系统及方法
CN111158979A (zh) 服务的拨测方法、系统、装置及存储介质
CN114598680A (zh) 域名的管理方法、装置及存储介质
CN112306848B (zh) 微服务系统的架构视图生成方法及装置
CN112363870B (zh) 应用程序开发处理方法、装置、计算机设备和存储介质
CN110598419B (zh) 一种区块链客户端漏洞挖掘方法、装置、设备及存储介质
KR20100072515A (ko) 원격 서버 로그 분석 시스템 및 그 방법
CN115733828A (zh) 一种api参数的识别方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination