一种全链路压测方法、装置及电子设备与流程
未命名
08-05
阅读:70
评论:0

1.本技术涉及网络运维技术领域,尤其涉及一种全链路压测方法、装置及电子设备。
背景技术:
2.在网络运维技术领域,容量压力测试是指:通过在既定的软硬件环境下,模拟软硬件系统所能达到的最大工作能力,以检测所开发的产品是否能够承载用户的访问需求。为了不影响正常的线上业务,相关技术提出,在线下构建模仿真实生产环境的压力测试(下文统称压测)环境,通过向该压测环境发送预设大小的模拟流量数据,不断测试该压测环境的最大工作负荷或者最大并发量,以获取仿真的压测结果。
3.但是,此种压测方法依赖于模拟流量数据,该模拟流量数据无法真实反映用户的真实流量分布,导致该压测结果可靠性较低。
技术实现要素:
4.有鉴于此,本技术实施例提供了一种全链路压测方法、装置及电子设备,以基于真实流量进行压力测试,提高全链路流量压力测试结果的可靠性。具体方案为:
5.第一方面,本技术实施例提供了一种全链路压测方法,其中,所述方法包括:
6.获取各真实流量数据携带的目的服务集群的地址信息,其中,各所述真实流量数据请求访问的目的服务集群隶属于同一目标产品;
7.根据预设路由修改规则,将各所述真实流量数据携带的目的服务集群的地址信息修改为目标压测服务集群的地址信息,其中,所述目的服务集群与所述目标压测服务集群为所述目标产品中独立的服务集群,所述目的服务集群的部署参数与所述目标压测服务集群的部署参数相同;
8.将所述目标压测服务集群的容量压测指标值,确定为目标压测结果。
9.结合第一方面,在第二种可能的实施例中,所述获取各真实流量数据携带的目的服务集群的地址信息包括:
10.接收各上游服务发送的服务实例请求消息,其中,所述服务实例请求消息携带有:所请求的服务实例的标识信息,所述服务实例的标识信息由预设名字服务工具预先基于运行所述服务实例的目的服务集群生成得到的;
11.基于各所述服务实例的标识信息,确定运行各所述服务实例的目的服务集群的地址信息。
12.结合第一方面的第二种可能的实施例,在第三种可能的实施例中,所述服务集群的地址信息包括:所述服务集群上运行的服务实例的ip地址信息,所述根据预设路由修改规则,将各所述真实流量携带的目的服务集群的地址信息修改为目标压测服务集群的地址信息,包括:
13.基于各所述服务实例请求消息携带的服务实例的原始标识信息,确定各所述服务实例的原始ip地址信息;
14.将各所述服务实例的原始ip地址信息修改为所述目标压测服务集群上运行的各服务实例的ip地址信息。
15.结合第一方面的第三种可能的实施例,在第四种可能的实施例中,将所述目标压测服务集群上运行的服务实例的ip地址信息发送至所述上游服务,以使得所述上游服务基于接收到的服务实例的ip地址信息访问所述目标压测服务集群。
16.结合第一方面,在第五种可能的实施例中,所述服务集群的部署参数包括:机器配置参数与服务参数,其中,所述机器配置参数包括硬件配置参数、系统配置参数,所述服务参数包括所述服务集群运行的目标服务实例数量。
17.第二方面,本技术实施例提供了一种全链路压测装置,其中,所述装置包括:
18.获取模块,用于获取各真实流量数据携带的目的服务集群的地址信息,其中,各所述真实流量数据请求访问的目的服务集群隶属于同一目标产品;
19.地址信息修改模块,用于根据预设路由修改规则,将各所述真实流量数据携带的目的服务集群的地址信息修改为目标压测服务集群的地址信息,其中,所述目的服务集群与所述目标压测服务集群为所述目标产品中独立的服务集群,所述目的服务集群的部署参数与所述目标压测服务集群的部署参数相同;
20.确定模块,用于将所述目标压测服务集群的容量压测指标值,确定为目标压测结果。
21.结合第二方面,在第二种可能的实施例中,所述获取模块具体用于:
22.接收各上游服务发送的服务实例请求消息,其中,所述服务实例请求消息携带有:所请求的服务实例的标识信息,所述服务实例的标识信息由预设名字服务工具预先基于运行所述服务实例的目的服务集群生成得到的;
23.基于各所述服务实例的标识信息,确定运行各所述服务实例的目的服务集群的地址信息;
24.所述服务集群的地址信息包括:所述服务集群上运行的服务实例的ip地址信息,所述地址信息修改模块具体用于:
25.基于各所述服务实例请求消息携带的服务实例的原始标识信息,确定各所述服务实例的原始ip地址信息;
26.将各所述服务实例的原始ip地址信息修改为所述目标压测服务集群上运行的各服务实例的ip地址信息;
27.信息发送模块,用于将所述目标压测服务集群上运行的服务实例的ip地址信息发送至所述上游服务,以使得所述上游服务基于接收到的服务实例的接入端口访问所述目标压测服务集群。
28.结合第二方面,在第三种可能的实施例中,所述服务集群的部署参数包括:机器配置参数与服务参数,其中,所述机器配置参数包括硬件配置参数、系统配置参数,所述服务参数包括所述服务集群运行的目标服务实例数量。
29.第三方面,本技术实施例提供了一种电子设备,其中,包括:
30.处理器;以及
31.存储程序的存储器,
32.其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行第
是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本技术中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
50.需要注意,本技术中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
51.在网络运维技术领域,为了保证产品开发上线后,开发的产品提供的业务、服务能够稳定支持用户的正常访问,通常在产品上线前或者上线后,对产品的软硬件系统进行容量压力测试,以在产品的软硬件系统无法支持用户的访问请求时,能够及时部署应对方案。
52.相关技术提出,在产品上线前,向该产品的软硬件环境发送预设大小的模拟流量数据,在产品的软硬件环境下,模拟该产品响应模拟流量数据访问所能达到的最大工作能力。或者,在产品上线后,通过构建与产品真实的软硬件系统一致的仿真软硬件系统,向该仿真软硬件系统发送预设大小的模拟流量数据,不断测试该产品软硬件系统响应模拟流量数据访问时所能达到的最大工作能力。此种,通过构造模拟流量数据对产品链路进行测试的方法常被称为构造流量式容量压测方法。
53.但是,由于构造的模拟流量数据是基于操作人员的实际经验或者预期构建的,无法真实反映用户的数量以及用户的访问分布情况。因此,基于该构造的模拟流量数据进行容量压测得到测压测结果往往与真实软硬件系统所承载的容量压测情况存在较大的差异,导致基于构造模拟流量进行压测得到的结果可参考性较差,可靠性较低。
54.有鉴于此,第一方面,本技术实施例提供了一种全链路压测方法,可应用于任一具备容量压测能力的电子设备,包括但不限于移动终端,个人计算机,服务器等等。在一种实际应用场景中,本技术实施例应用于流量数据传输过程中的任一中转节点,可以是路由设备,也可以是路由信息管理平台。在本技术实施例中,全链路是指支撑目标产品提供互联网服务的各条通信链路的总和,用户或者业务流通过各条通信链路可获取目标产品所提供的互联网服务。
55.如图1所示,本技术实施例所提供的全链路压测方法包括如下步骤:
56.s11、获取各真实流量数据携带的目的服务集群的地址信息;
57.其中,各真实流量数据请求访问的目的服务集群隶属于同一目标产品。
58.s12、根据预设路由修改规则,将各真实流量数据携带的目的服务集群的地址信息,修改为目标压测服务集群的地址信息;
59.其中,各目的服务集群与目标压测服务集群为该目标产品中独立的服务集群,目的服务集群的部署参数与目标压测服务集群的部署参数相同。
60.s13、将目标压测服务集群的容量压测指标值,确定为目标压测结果。
61.选用本技术实施例,通过将各真实流量所访问的各目的服务集群的地址信息统一修改至同一目标压测服务集群,由该目标压测服务集群来统一响应真实流量数据的服务请求,加上目标压测服务集群与各真实流量数据所访问的目的服务集群的部署参数相同。
62.如此,若该目标压测服务集群能够正常支持用户真实流量的访问,则其他各目的服务集群也可正常支持用户真实流量的访问。即基于真实的流量数据,通过该目标压测服
务集群的容量压测指标值,确定得到的目标压测结果能够更为真实反映出该目标产品中各服务集群应对真实流量访问时所能承载的容量压力,有效提高了目标产品的全链路压测结果的可靠性。
63.下文对上述步骤s11-s13进行详细说明:
64.在本技术中,流量数据是指用户通过通信技术手段使用互联网服务时所产生的数据,真实的流量数据是由真实用户通过通信技术手段使用互联网服务时所产生的数据。由于用户使用的通信技术手段、用户的使用习惯具有较大的随机性,因此真实流量数据的分布情况也相应具有一定的随机性,而传统的构造式流量是操作人员根据实际经验或者预期构造的模拟用户上网行为产生的流量数据,此类流量随机性较差。
65.如上所述,流量数据是指用户通过通信技术手段使用互联网服务时所产生的数据,根据不同的通信技术(或通信协议),流量数据可以是流量数据包,也可以是流量数据报文。由于流量数据是用户用于获取互联网服务产生的数据,故无论流量数据是数据包还是数据报文,所携带的信息中均需包括该流量数据访问的目的服务集群的相关信息。
66.在本技术实施例中,真实流量数据的来源可根据实际情况的不同而不同。示例性的,真实流量数据可以是来自目标产品外部的需求方产生的外部流量数据,包括域名流量、跨云流量。真实流量数据也可以是目标产品内部其他业务流程产生的内部流量,包括目标产品云系统产生的云内流量。
67.在本技术实施例中,服务集群的相关信息可以包括服务集群所属的目标产品标识,服务集群的标识信息,服务集群的地址信息,服务集群上运行的服务实例的标识信息。其中,服务集群的地址信息包括ip地址信息、接入端口信息、mac地址信息等等。基于此,在执行步骤s11时,获取各真实流量数据携带的目的服务集群的地址信息,可以是通过接收真实流量数据包或者真实流量数据报文,基于真实流量数据的传输协议,对接收到的真实流量数据包或者流量报文进行解析,获取该真实流量数据包中携带的目的服务集群的地址信息。
68.本技术旨在测试目标产品应对用户真实访问时,目标产品的软硬件系统的容量压力指标,故在执行步骤s11时,可通过预设的筛选规则,滤除不属于所测目标产品的其他真实流量数据,获取访问对象仅属于目标产品的真实数据。示例性的,在一种可能的实施例中,可基于预设目标产品标识信息,滤除携带的所属目标产品标识与该预设目标产品标识信息不符的真实流量数据。或者,在另一种可能的实施例中,基于目的服务集群
69.其中,目的服务集群隶属于同一目标产品,各目的服务集群可以被部署于同一物理机房中,也可以部署于不同的物理机房中。在一种可能的实施例中,可通过服务集群管理系统或者设备查询部署的物理机房、各物理机房中的各服务集群、各服务集群中的各服务器的实际部署状态。在另一种可能的实施例,可通过查询目标产品的日志记录,获取隶属于同一目标产品的各服务集群的实际部署状态。
70.在一种可能的实施例中,如图2所示,执行步骤s11时,可通过如下步骤实现:
71.s110、接收各上游服务发送的服务实例请求消息;
72.其中,服务实例请求消息携带有所请求的服务实例的标识信息,该服务实例的标识信息由预设名字服务工具预先基于运行该服务实例的目的服务集群生成得到的;
73.s111、基于各服务实例的标识信息,确定运行各服务实例的目的服务集群的地址
信息。
74.在本技术实施例中,以流量数据的流向,将流量数据的传输过程划分为上游过程、下游过程。其中,上游与下游之间是相对概念,二者之间的相对关系根据流量数据的流向确定得到。具体的,流量数据在传输过程中,流量数据的产生方为上游,流量数据最终访问的数据库或者服务器为下游。或者,在流量数据的中转过程中,流量数据的转出方为上游,流量数据的转入方为下游。
75.相应的,步骤s110中的上游服务是指上游产生数据流量请求的需求方,如个人移动终端、计算机等。本技术实施例将下游响应于该流量请求提供相应的服务的对象即为下游提供服务的对象,如数据库机房、服务器集群、服务器等。上游服务、下游提供服务的对象的具体表现形式可以根据实际场景的不同而不同,可以是拥有硬件结构的实体设备,也可以是软件系统,也可以是业务流。
76.示例性的,上游服务可以是产生真实流量数据的用户的个人终端设备,也可以是用户使用的应用程序。
77.在另一种可能的实施例中,若将流量数据中转过程中的一个目标节点作为执行主体,则上游服务可以是将该流量数据发送至目标节点的对象。示例性的,以流量数据中转过程中的一个数据库中的路由模块为目标节点,则上游服务可以是数据库中的流量接收模块。
78.在另一种可能的实施例中,从业务层面来看,针对用户产生的真实流量存在如下的业务流程:
79.流量解析业务—》流量管理业务
80.其中,流量解析业务用于对用户产生的真实流量数据进行路由路径解析,确定提供用户所需的服务的服务实例在目标机房中的具体路径。流量管理业务用于按照流量解析业务获取的路由路径,根据服务器的当前访问状态控制用户产生的真实流量数据的访问序列。
81.在此种情形下,流量解析业务即为上游服务,流量管理业务即为下游提供服务的对象。
82.由于真实流量用于获取目标产品所提供的互联网服务,且目标产品所提供的互联网服务在后端运行过程主要是以服务实例的形式进行运行。因此,上游服务所发送的服务实例请求消息即是真实流量数据本身。该服务实例消息用于请求目的服务集群运行该服务实例,以提供对应的互联网服务。
83.为了便于服务实例请求消息管理,在本技术实施例中,可通过预设名字服务工具(name service)工具(下文简称ns工具)响应于上游服务的服务注册请求以及发现上游服务的服务访问请求,对服务实例请求进行注册、授权、调度等等操作。
84.具体的,该ns工具预先根据设置的命名规则,为各类服务实例的相关信息分配标识信息,类似于分配名字,通过查询该服务实例的标识信息,可获取该服务实例标识信息对应的相关信息。其中,服务实例的相关信息包括但不限于:运行该服务实例的服务器的主机名、运行该服务实例的服务器的ip地址、该服务器所属的服务集群、该服务器所属的服务器机房、服务器允许该服务实例接入的端口信息、所属服务集群的标签tag、服务器的部署路径等等。
85.基于此,在本技术实施例中,可通过ns工具设置的命名规则为与目标产品有关的各类服务实例请求分配名字,根据所分配的名字可查询与目标服务实例有关的各类相关信息。
86.示例性的,假设目标产品a存在一个支付服务实例,该支付服务实例当前由服务集群zone1中的服务器运行,以向用户提供互联网支付服务。其中,若如下表1所示,若与该支付实例相关的信息包括:所属目标产品名称、服务实例名称、运行该服务实例的服务器名称、运行该服务实例的服务器的ip地址、允许该服务实例接入的端口信息、运行该服务实例的服务集群、该服务集群所属的机房、运行状态、运维人员等。
87.表1一种可能的服务实例相关信息示意表
88.在本技术实施例中,可通过预设ns工具基于预设的命名规则,为其中的一个或多个相关信息添加标识,并将所添加的标识信息发送给请求该服务实例的上游服务,以使得上游服务基于收到的标识信息生成流量数据包或者流量数据报文。选用本技术实施例,基于预设ns工具添加的标识信息,可便于后续基于添加的标识对服务实例,以及请求运行服务实例的服务实例请求消息进行管理。
89.例如,通过ns工具基于名称首字母以及对应的编号作为命名规则对服务实例的各相关信息添加标识信息。比如,通过ns工具为该支付服务实例所属的服务集群添加标识z1。并将该支付服务实例的标识信息告知上游服务,上游服务若请求目标产品a提供互联网支付服务时,可在发送的服务实例请求中添加服务集群标识z1,以标识该支付服务实例由服务集群zone1中的服务器运行,即标识该流量数据的目的服务集群为zone1。
90.基于上述分析,利用预设名字服务工具预先基于服务实例的相关信息生成得到的标识信息,会同步发送至上游服务,以便上游服务基于收到的标识信息生成服务实例请求消息。因此,在执行上述步骤s111时,可直接接收上游服务发送的服务实例请求消息进行解析,获取服务实例请求消息中携带的服务实例标识信息,基于该服务实例的标识信息,确定运行该服务实例的目的服务集群的地址信息。示例性的,在一种可能的实施例中,可以基于一个服务实例的一个标识信息,查询到与该标识信息对应的相关信息。即如上述支付服务实例的例子,基于z1可查询得到该支付服务实例在服务集群zone1中运行。
91.在另一种可能的实施例中,可以基于一个服务实例的一个标识信息,查询到与该服务实例相关的所有信息。比如,以上述服务集群zone1的标识信息为z1为例,即以该标识信息z1为索引依据,可查询到该支付服务实例如表1中的所有相关信息。
92.其中,在本技术实施例中,目的服务集群的地址信息可以是运行流量数据请求的服务实例的服务集群的标识信息。示例性的,如上述支付服务实例请求消息的例子中,目的
服务集群的地址信息可以是运行支付服务实例的服务集群标识信息z1。
93.在另一种可能的实施例中,由于服务实例实际上运行于目的服务集群中的目的服务器,因此,目的服务集群的地址信息可以是运行流量数据请求的服务实例的目的服务器的通信地址信息,可以包括目的服务器的ip地址,允许接入的接口信息等等。
94.在步骤s12中,目的服务集群与目标压测集群均为目标产品的不同服务集群,各自物理隔离。其中,目标压测集群与目的服务集群可以是位于同一物理机房中的不同服务集群,目标压测集群与目的服务集群也可以位于不同的物理机房中。在本技术中,服务集群为多个服务器集合的总称,机房为多个服务集群的集合的总称。因此,服务实例可以是运行在服务器上,宏观上看,服务实例也可以是运行于服务集群中,服务实例也可以是运行于机房中。
95.在本技术实施例中,目的服务集群的数量可以根据实际需求灵活选择,目标压测服务集群的数量可以为1,也可不为1,具体的数量也可以根据实际需求进行灵活选择,本技术不作严格限定。
96.在一种可能的应用场景中,针对运行目标产品的服务实例的后端服务器,可根据实际需求分别部署于两个不同的机房中,本技术将此种部署方式称为双活机房部署方式。示例性的,如图3所示,将目标产品的各运行服务实例的后端服务器,分别部署在机房hba与机房hbb中。其中,流量接收模块用于接收上游服务发送的服务实例请求消息,模块1至模块3为不同的服务集群,用于运行目标产品的各类服务实例。即本技术中的目的服务集群、目标压测服务集群对应机房中的各个服务集群。
97.在一种可能的应用场景中,可根据实际需求将运行目标产品的服务实例的后端服务器分别部署于多个机房中,此种部署方式称为多活机房部署方式。区别于单机房部署方案,双活机房或者多活机房增加了运行容量的资源,因此双活机房或者多活机房可承载的流量压力可以是两倍、三倍、四倍。
98.基于此,在实际应用场景中,为了节约运维成本,本技术实施例在双活机房部署方式的基础上,在同一机房内建立独立集群,即在每个机房中部署多个独立的服务集群,可基于服务集群的地址信息,对流量数据进行调度,可以实现在双活机房部署方式的基础上,应对两倍、三倍、四倍的流量压力,进而能够更好地应对因突发事件引发的流量压力激增的情形。
99.为了保证目标压测服务集群的容量压测指标可真实反映目标产品的软硬件系统各服务集群所承载的容量压力,在本技术实施例中,各独立服务集群所占用的资源量相同,具体体现在各独立服务集群的部署参数相同。如此,目标压测服务集群的容量若能承载上游服务发送的所有的真实流量数据,则该目标产品的其余各服务集群均可承载上游服务发送的所有的真实流量数据。
100.在一种可能的实施例中,服务集群的部署参数包括:机器配置参数与服务参数。其中,机器配置参数包括硬件配置参数、系统配置参数,服务参数包括该服务集群运行的目标服务实例的数量。
101.其中,机器配置参数主要是整个服务集群内所有机器的硬件配置参数与系统配置参数,其中硬件配置参数包括处理器、内存、硬盘等等硬件模块的参数,系统配置参数包括操作系统类型、操作系统版本等等。
102.在本技术实施例中,由于每个服务实例信息均可通过预设ns工具增加所属服务集群标识信息,因此,服务参数可基于服务集群标识信息确定,要求同一目标服务在各独立集群中的目标服务实例数量相同。示例性的,以支付服务为例,服务参数相同是指该支付服务对应的支付服务实例在各独立集群中运行的数量相同。
103.选用本技术实施例,由于各独立服务集群的部署参数相同,可保证目标压测服务集群的容量压测指标值能够真实反映该目标产品的全链路的容量压力情况。
104.基于本技术构造的双活机房部署方式,将双活机房中的一个独立服务集群作为目标压测服务集群,其余各独立服务集群作为上游服务请求的下游目的服务集群。在执行步骤s12时,通过将真实流量数据请求所携带的目的服务集群的地址信息,修改为目标压测服务集群的地址信息,可便于后续真实流量数据基于修改后的地址信息,访问目标压测服务集群。
105.基于上述步骤s110与步骤s111的相关描述可知,服务实例请求消息中携带有所请求的服务实例的标识信息,基于该服务实例的标识信息可以确定出运行该服务实例的目的服务集群的地址信息。结合上表1可知,服务集群的地址信息中包括服务集群上运行的服务实例的ip地址信息。基于此,在一种可能的实施例中,可如图4所示,上述步骤s12通过如下两个步骤实现:
106.s120、基于各服务实例请求消息携带的服务实例的原始标识信息,确定各服务实例的原始ip地址信息;
107.s121、将各服务实例的原始ip地址信息修改为目标压测服务集群上运行的各服务实例的ip地址信息。
108.其中,在步骤s120中,服务实例的原始ip地址信息是指:目标产品为该服务实例创建的原始的ip地址,该原始的ip地址属于目标产品硬件系统中运行该服务实例的原始服务集群的通信地址。在接入端口未发生改变时,携带该原始ip地址信息的服务实例请求消息会通过该ip地址信息传输至原始服务集群中。
109.同理,根据服务实例的目标压测服务集群的ip地址信息,该服务实例请求消息可被中转至目标压测服务集群对应的服务集群中。
110.如前述所言,服务实例的标识信息预先通过预设名字服务工具基于预设的命名规则生成得到的,在一种可能的实施例中,可通过查询服务实例的标识信息中的目的服务集群标识信息,确定出该服务实例所属的目的服务集群允许该服务实例接入的ip地址信息,作为原始ip地址信息。
111.在另一种可能的实施例中,服务实例请求消息中携带的原始标识信息是基于ip地址信息生成的,基于预设的命名规则,确定出原始标识信息对应的ip地址信息为原始ip地址信息。
112.在一种可能的实施例中,预设名字服务工具提供服务实例标识信息解析的功能,具体的,预设名字服务工具通过获取服务实例请求消息中携带的服务实例标识信息,查询标识信息生成记录,确定出该服务实例标识信息对应的服务实例的所有相关信息,其中,基于原始服务实例标识信息查到的ip地址信息即为原始ip地址信息。
113.在另一种可能的实施例中,可在预设名字服务工具的基础上,结合预设的命名规则,设计标识信息解析工具。借助预设的命名规则,查询标识信息对应的服务实例的所有信
息,进而确定出原始标识信息对应的原始ip地址信息。
114.在执行步骤s122时,可通过接收真实流量数据包或者流量数据报文后,解封装该流量数据包或者数据报文,得到携带的原始ip地址信息。通过预先设计的报文信息修改工具,将原始ip地址信息修改为目标压测服务集群的ip地址信息,然后基于修改后的ip地址信息对该修改后的服务实例请求实例进行二次封装,以使得该服务实例请求消息按照新修改的目标压测服务集群的ip地址信息中转至目标压测服务集群。
115.在另一种可能的实施例中,可通过将确定得到的目标压测服务集群的ip地址信息回传给上游服务,以使得上游服务基于收到的新的ip地址信息重新生成服务实例请求消息,并重发该服务实例请求消息。
116.在一种可能的实施例中,目标压测服务集群的ip地址信息可以通过预设名字服务工具确定得到。具体的,预设名字服务工具具备查询目标产品的各软硬件系统中各集群的运行状态信息,该运行状态信息包括运行各服务实例的集群的负载情况。基于此,在获取服务实例请求消息时,基于服务实例请求消息的标识信息,确定出服务实例运行于各服务集群中的具体的位置信息,包括目标压测服务集群中运行该服务实例的具体的服务器的ip地址信息以及ip地址信息,进而得到目标压测服务集群允许该服务实例请求消息接入的ip地址信息。
117.选用本技术实施例,通过将真实流量数据携带的目的服务集群的地址信息修改为目标压测服务集群的地址信息,使得真实流量从原本均匀承载真实流量数据的独立服务集群,统一收敛至同一目标压测服务集群中,进而便于根据该目标压测服务集群的容量压测指标,确定出目标产品当前的全链路的容量压力情况。
118.在执行步骤s13时,将目标压测服务集群的容量压测指标值,确定为目标压测结果,其中,目标压测结果包括:全链路服务的流量情况、工程可用情况、业务可用情况等等。可以体现在目标压测服务集群承载的最大并发量、目标压测服务集群的平均响应时间、内存资源占用率等等软硬件系统的承载压力指标值上。
119.具体的,执行步骤s13时,可以根据目标压测服务集群在单位时间内收发的流量数据总量,判断目标压测服务集群承载的最大并发量。可根据目标压测服务集群运行预设数量的服务实例时的响应时间均值,确定目标压测服务集群的平均响应时间。在实际应用场景中,目标压测服务集群的容量压测指标值可根据实际经验或者实际操作的便捷性灵活选择。
120.在一种可能的实施例中,可借助后端服务器集群的管理系统,实时监测目标压测服务集群的软硬件资源占用情况,以确定出目标压测服务集群的容量压测指标值。在一种可能的实施例中,若目标压测服务集群的容量压测指标值大于预设压测指标阈值,则输出告警提醒消息,以告知目标压测服务集群当前可承载的最大容量压测指标值,以便操作人员根据测试结果将目标压测服务集群上运行的服务实例调度至其他服务集群中,以使其他服务集群及时响应上游服务的服务实例请求。
121.本技术实施例步骤s13确定目标压测服务集群的容量压测指标值,还可借助现有的容量压测技术进行测量,具体测量过程可参考现有的压测技术,本技术不作具体赘述。
122.为了便于理解本技术实施例所提供的全链路压测方法,特结合一种可能的实际应用场景进行说明,具体流程如参考图5与图6所示的流程。
123.在实际应用场景中,通过双活机房部署方案将目标产品的后端服务器进行划分,划分为部署参数相同的各个独立服务集群。即如图5、图6所示,机房a与机房b中分别建立独立服务集群。其中,机房a中部署的独立集群为z1、z2,机房b中部署的独立集群为z1、z2。
124.在本技术实施例中,在目标服务器软件系统中部署预设名字服务工具,通过该预设名字服务工具进行服务注册、服务发现、授权管理、流量调度等操作。其中,该预设名字服务工具可支持各种开发语言、命令行输入。
125.具体的,如图6所示,该预设名字服务工具的具体逻辑架构由ns agent/ns server两个部分组成。其中,ns agent部署在每个服务及其上,在发现服务实例请求的场景中服务主动与ns server通信,同步获取服务实例的地址信息、ip地址信息、标识信息等等最新的服务实例的相关信息。ns server会存储最新的服务实例信息,并与ns agent保持周期性同步。
126.在图5所示的系统架构中,监控中心用于监测各服务集群的容量压测指标值是否正常,若容量压测指标值出现异常,将通知熔断中心进行紧急熔断处理,即控制异常的服务集群紧急关闭或者流量迁移,并将处理结果告知控制中心,由控制中心基于熔断处理结果将最新的服务集群的状态信息告知预设名字服务工具,以使得预设名字服务工具基于最新的服务集群的状态对接收到的流量进行调度。
127.具体的流量调度流程参考图6,包括如下步骤(其中,箭头连线中的数字代表步骤编号):
128.步骤1、上游服务向目标产品的预设名字服务工具中的ns agent发送服务实例请求消息,请求消息中携带有服务实例标识信息。基于该服务实例标识信息,可确定出运行该服务实例的目的服务集群的地址信息。示例性的,假设请求运行支付服务实例,该支付服务实例当前运行于机房b的z1服务集群中,则请求消息中携带了目的服务集群的标识信息z1。
129.步骤2、目标产品的预设名字服务工具中的ns agent收到请求后,向ns server发送状态查询请求消息,以获取服务实例的地址信息、ip地址信息、标识信息等等最新的服务实例的相关信息。示例性的,同样以支付服务实例为例,ns agent收到请求后,向ns server发送状态查询请求消息,以获取运行支付服务实例的各服务集群的地址信息、ip地址信息
130.步骤3、ns server请求目标产品的后端服务集群的路由管理设备,请求获取当前的路由规则信息。
131.步骤4、ns server接收路由管理设备回传的路由规则信息,以知晓运行服务实例的服务器的路由路径。
132.步骤5、ns server向服务实例变更工具发起请求,获取该服务对应的实例信息,其中该服务对应的实例信息指:服务当前对应的服务实例在后端服务集群中的具体运行情况,比如,支付服务对应的支付服务实例具体运行于哪些服务集群中。比如,可查询到目标压测服务集群为机房a的z1服务集群运行支付服务实例。
133.步骤6、服务实例变更工具回传服务对应的实例信息,该实例信息中包括了服务实例在各服务集群中的具体运行情况。
134.步骤7、ns server将收到的路由规则信息、服务对应的实例信息等信息汇总后回传至ns agent。
135.步骤8、ns agent回传目标压测服务集群中运行请求的服务实例的地址信息、ip地
址信息给上游服务。
136.步骤9、上游服务获取目标压测服务集群的地址信息、ip地址信息后向目标压测服务集群发送服务实例运行请求。示例性的,以上述支付服务实例的例子为例,上游服务获取到机房a中的z1的地址信息以及ip地址信息,将根据接收到的信息向机房a的z1服务集群发送请求。
137.选用本技术实施例,能够在原有路由规则的基础上,通过ns名字服务工具对真实流量数据进行路由修改,将各目的服务集群的访问流量数据调度至目标压测服务集群中,借助此种切流式的全链路容量压测方案,可直接借助目标压测服务集群的容量压测指标反映目标产品软硬件系统应对真实流量数据时的工作能力,使得得到的目标压测结果更具真实性,可靠性更高,能够为后续的流量控制提供更为精准的参考信息。
138.第二方面,本技术实施例提供了一种全链路压测装置,其中,如图7所示,该全链路压测装置700包括:
139.获取模块701,用于获取各真实流量数据携带的目的服务集群的地址信息,其中,各真实流量数据请求访问的目的服务集群隶属于同一目标产品;
140.地址信息修改模块702,用于根据预设路由修改规则,将各真实流量数据携带的目的服务集群的地址信息修改为目标压测服务集群的地址信息,其中,目的服务集群与目标压测服务集群为目标产品中独立的服务集群,目的服务集群的部署参数与目标压测服务集群的部署参数相同;
141.确定模块703,用于将目标压测服务集群的容量压测指标值,确定为目标压测结果。
142.在一种可能的实施例中,获取模块701具体用于:
143.接收各上游服务发送的服务实例请求消息,其中,服务实例请求消息携带有:所请求的服务实例的标识信息,所述服务实例的标识信息由预设名字服务工具预先基于运行所述服务实例的目的服务集群生成得到的;
144.基于各服务实例的标识信息,确定运行各服务实例的目的服务集群的地址信息。
145.在一种可能的实施例中,服务集群的地址信息包括服务集群上运行的服务实例的ip地址信息,该地址信息修改模块702具体用于:
146.基于各服务实例请求消息携带的服务实例的原始标识信息,确定各服务实例的原始ip地址信息;
147.将各服务实例的原始ip地址信息修改为目标压测服务集群上运行的各服务实例的ip地址信息。
148.在一种可能的实施例中,该全链路压测装置还包括:
149.信息发送模块704,用于将目标压测服务集群上运行的服务实例的接入端口发送至上游服务,以使得上游服务基于接收到的服务实例的接入端口访问目标压测服务集群。
150.在一种可能的实施例中,服务集群的部署参数包括:机器配置参数与服务参数,其中,机器配置参数包括硬件配置参数、系统配置参数,服务参数包括服务集群运行的服务实例数量;目标压测集群的容量压测指标值包括:目标压测集群承载的最大并发量、目标压测集群的平均响应时间。
151.本技术实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性
的目的,而并不是用于对这些消息或信息的范围进行限制。
152.第三方面,本技术示例性实施例还提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器。所述存储器存储有能够被所述至少一个处理器执行的计算机程序,所述计算机程序在被所述至少一个处理器执行时用于使所述电子设备执行根据本技术实施例的方法。
153.第四方面,本技术示例性实施例还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本技术实施例的方法。
154.本技术示例性实施例还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被计算机的处理器执行时用于使所述计算机执行根据本技术实施例的方法。
155.参考图8,现将描述可以作为本技术的服务器或客户端的电子设备800的结构框图,其是可以应用于本技术的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本技术的实现。
156.如图8所示,电子设备800包括计算单元801,其可以根据存储在只读存储器(rom)802中的计算机程序或者从存储单元808加载到随机访问存储器(ram)803中的计算机程序,来执行各种适当的动作和处理。在ram 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、rom 802以及ram 803通过总线804彼此相连。输入/输出(i/o)接口805也连接至总线804。
157.电子设备800中的多个部件连接至i/o接口805,包括:输入单元806、输出单元807、存储单元808以及通信单元809。输入单元806可以是能向电子设备800输入信息的任何类型的设备,输入单元806可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元807可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元804可以包括但不限于磁盘、光盘。通信单元809允许电子设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙tm设备、wifi设备、wimax设备、蜂窝通信设备和/或类似物。
158.计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理。例如,在一些实施例中,全链路压测方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由rom 802和/或通信单元809而被载入和/或安装到电子设备800上。在一些实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行全链路压测方法。
159.用于实施本技术的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
160.在本技术的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
161.如本技术使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
162.为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
163.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
164.计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
技术特征:
1.一种全链路压测方法,其特征在于,所述方法包括:获取各真实流量数据携带的目的服务集群的地址信息,其中,各所述真实流量数据请求访问的目的服务集群隶属于同一目标产品;根据预设路由修改规则,将各所述真实流量数据携带的目的服务集群的地址信息修改为目标压测服务集群的地址信息,其中,所述目的服务集群与所述目标压测服务集群为所述目标产品中独立的服务集群,所述目的服务集群的部署参数与所述目标压测服务集群的部署参数相同;将所述目标压测服务集群的容量压测指标值,确定为目标压测结果。2.根据权利要求1所述的方法,其特征在于,所述获取各真实流量数据携带的目的服务集群的地址信息包括:接收各上游服务发送的服务实例请求消息,其中,所述服务实例请求消息携带有:所请求的服务实例的标识信息,所述服务实例的标识信息由预设名字服务工具预先基于运行所述服务实例的目的服务集群生成得到的;基于各所述服务实例的标识信息,确定运行各所述服务实例的目的服务集群的地址信息。3.根据权利要求2所述的方法,其特征在于,所述服务集群的地址信息包括:所述服务集群上运行的服务实例的ip地址信息,所述根据预设路由修改规则,将各所述真实流量携带的目的服务集群的地址信息修改为目标压测服务集群的地址信息,包括:基于各所述服务实例请求消息携带的服务实例的原始标识信息,确定各所述服务实例的原始ip地址信息;将各所述服务实例的原始ip地址信息修改为所述目标压测服务集群上运行的各服务实例的ip地址信息。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:将所述目标压测服务集群上运行的服务实例的ip地址信息发送至所述上游服务,以使得所述上游服务基于接收到的服务实例的ip地址信息访问所述目标压测服务集群。5.根据权利要求1所述的方法,其特征在于,所述服务集群的部署参数包括:机器配置参数与服务参数,其中,所述机器配置参数包括硬件配置参数、系统配置参数,所述服务参数包括所述服务集群运行的目标服务实例数量。6.一种全链路压测装置,其特征在于,所述装置包括:获取模块,用于获取各真实流量数据携带的目的服务集群的地址信息,其中,各所述真实流量数据请求访问的目的服务集群隶属于同一目标产品;地址信息修改模块,用于根据预设路由修改规则,将各所述真实流量数据携带的目的服务集群的地址信息修改为目标压测服务集群的地址信息,其中,所述目的服务集群与所述目标压测服务集群为所述目标产品中独立的服务集群,所述目的服务集群的部署参数与所述目标压测服务集群的部署参数相同;确定模块,用于将所述目标压测服务集群的容量压测指标值,确定为目标压测结果。7.根据权利要求6所述的装置,其特征在于,所述获取模块具体用于:接收各上游服务发送的服务实例请求消息,其中,所述服务实例请求消息携带有:所请求的服务实例的标识信息,所述服务实例的标识信息由预设名字服务工具预先基于运行所
述服务实例的目的服务集群生成得到的;基于各所述服务实例的标识信息,确定运行各所述服务实例的目的服务集群的地址信息;所述服务集群的地址信息包括:所述服务集群上运行的服务实例的ip地址信息,所述地址信息修改模块具体用于:基于各所述服务实例请求消息携带的服务实例的原始标识信息,确定各所述服务实例的原始ip地址信息;将各所述服务实例的原始ip地址信息修改为所述目标压测服务集群上运行的各服务实例的ip地址信息;信息发送模块,用于将所述目标压测服务集群上运行的服务实例的ip地址信息发送至所述上游服务,以使得所述上游服务基于接收到的服务实例的接入端口访问所述目标压测服务集群。8.根据权利要求6所述的装置,其特征在于,所述服务集群的部署参数包括:机器配置参数与服务参数,其中,所述机器配置参数包括硬件配置参数、系统配置参数,所述服务参数包括所述服务集群运行的目标服务实例数量。9.一种电子设备,包括:处理器;以及存储程序的存储器,其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1-5中任一项所述的方法。10.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行根据权利要求1-5中任一项所述的方法。
技术总结
本申请实施例提供了一种全链路压测方法、装置及电子设备,其中,该方法包括:获取各真实流量数据携带的目的服务集群的地址信息,根据预设路由修改规则,将各真实流量携带的目的服务集群的地址信息修改为目标压测服务集群的地址信息,将目标压测服务集群的容量压测指标值,确定为目标压测结果。由于目标压测服务集群与目的服务集群相互独立,均属于同一目标产品且部署参数相同。故选用本申请实施例,通过将各真实流量所访问的各目的服务集群统一修改至同一目标压测服务集群,通过该目标压测服务集群的容量压测指标值,真实地反映出该目标产品各服务集群应对真实流量访问时所能承载的容量压力,有效提高了压测结果的可靠性。有效提高了压测结果的可靠性。有效提高了压测结果的可靠性。
技术研发人员:金云超 陈存利
受保护的技术使用者:度小满科技(北京)有限公司
技术研发日:2023.05.08
技术公布日:2023/8/4
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/