路由收敛时间的确定方法及装置转让专利
申请号 : CN202111195418.9
文献号 : CN113645102B
文献日 : 2022-02-08
发明人 : 程玲霞 , 卢龙飞 , 黄敏 , 李钦弟
申请人 : 腾讯科技(深圳)有限公司
摘要 :
权利要求 :
1.一种路由收敛时间的确定方法,其特征在于,所述方法包括:获取目标应用程序对应的服务集群,所述服务集群包含至少两个服务,每个所述服务对应至少一个服务实例;
在所述目标应用程序存在运行的服务实例时,记录初始时间并采集与各所述服务实例对应的路由变化信息;
其中,所述路由变化信息包括:由所述服务实例的状态切换所导致的所述服务集群对应的路由数量的变化信息;
基于所述路由变化信息,确定所述服务集群对应的路由收敛条件得到满足时,记录截止时间;
基于所述初始时间及所述截止时间,确定与所述服务集群对应的路由收敛时间。
2.根据权利要求1所述的方法,其特征在于,在所述采集与各所述服务实例对应的路由变化信息之前,所述方法还包括:监听所述服务集群中各所述服务实例的状态切换事件;
当监听到指示存在状态切换服务实例的状态切换事件时,更新所述服务集群对应的路由变化信息。
3.根据权利要求2所述的方法,其特征在于,所述当监听到指示存在状态切换服务实例的状态切换事件时,更新所述服务集群对应的路由变化信息,包括:当所述状态切换事件所对应服务实例的状态由未运行状态切换为启动状态时,在所述路由变化信息中增加相应服务实例的路由信息;
当所述状态切换事件所对应服务实例的状态由运行状态切换为停止状态时,在所述路由变化信息中删除相应服务实例的路由信息。
4.根据权利要求1所述的方法,其特征在于,所述采集与各所述服务实例对应的路由变化信息,包括:
获取信息采集周期,所述信息采集周期用于表征相邻两次对所述路由变化信息进行采集处理的时间间隔;
基于所述信息采集周期,周期性对各所述服务实例对应的路由变化信息进行采集,得到各所述服务实例对应的路由变化信息。
5.根据权利要求4所述的方法,其特征在于,所述周期性对各所述服务实例对应的路由变化信息进行采集,得到各所述服务实例对应的路由变化信息,包括:接收各所述服务实例周期性上报的路由变化信息,所述路由变化信息由所述服务实例调用自身的信息上报子程序所上报;
将所述路由变化信息存储到数据存储区域。
6.根据权利要求1所述的方法,其特征在于,所述获取目标应用程序对应的服务集群之后,所述方法还包括:
构建与各所述服务的实例相对应的实例副本,所述实例副本具有信息上报功能;
将所述实例副本作为与所述服务相对应的服务实例。
7.根据权利要求1所述的方法,其特征在于,所述路由收敛条件包括:所述服务集群对应的路由数量达到目标路由数量,所述基于所述路由变化信息,确定所述服务集群对应的路由收敛条件得到满足时,记录截止时间,包括:
获取所述服务集群对应的目标路由数量;
解析所述路由变化信息,得到所述服务集群当前的路由数量;
确定当前的所述路由数量达到所述目标路由数量时的时间点,将所述时间点作为截止时间进行记录。
8.根据权利要求1所述的方法,其特征在于,所述基于所述初始时间及所述截止时间,确定与所述服务集群对应的路由收敛时间,包括:确定所述截止时间与所述初始时间之间的时间差值,将所述时间差值作为所述服务集群对应的路由收敛时间。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:生成并输出所述目标应用程序的路由关系报告;
其中,所述路由关系报告用于指示,所述服务集群对应的路由数量与所述路由收敛时间之间的关系。
10.一种路由收敛时间的确定装置,其特征在于,所述装置包括:获取模块,用于获取目标应用程序对应的服务集群,所述服务集群包含至少两个服务,每个所述服务对应至少一个服务实例;
采集模块,用于在所述目标应用程序存在运行的服务实例时,记录初始时间并采集与各所述服务实例对应的路由变化信息,其中,所述路由变化信息包括:由所述服务实例的状态切换所导致的所述服务集群对应的路由数量的变化信息;
分析模块,用于基于所述路由变化信息,确定所述服务集群对应的路由收敛条件得到满足时,记录截止时间;
确定模块,用于基于所述初始时间及所述截止时间,确定与所述服务集群对应的路由收敛时间。
说明书 :
路由收敛时间的确定方法及装置
技术领域
背景技术
为多个甚至数十个的支持微服务。随着互联网领域的不断发展,微服务化应用越来越广泛,
分布式微服务结构对应的服务集群的规模越来越复杂。针对大规模服务集群对应的路由收
敛时间测试需求,越来越多。
容易造成较大的性能干扰,最终测试结果与真实结果之间存在较大的误差。
发明内容
的状态切换所导致的所述服务集群对应的路由数量的变化信息;
敛条件时所确定的截止时间,然后根据初始时间和截止时间确定服务集群对应的路由收敛
时间。如此,能够提高确定服务集群对应的路由收敛时间的准确性。
附图说明
具体实施方式
做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
的情况下相互结合。
序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使
这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
不是旨在限制本申请。
级网络代理阵列的形式实现,这些代理与应用程序代码部署在一起,对应用程序来说无需
感知代理的存在。
通过重新计算路由而发现替代路由的行为。通过路由收敛可以使路由域中所有路由器对当
前的网络结构和路由转发达成一致的状态。
由器中所需要的时间。
存,导出,保存)成文件。因为程序在计算机中运行时,在内存、中央处理器等设备上的数据
都是动态的(或者说是易失的),也就是说数据使用完或者发生异常就会丢掉。如果想得到
某些时刻的数据(有可能是调试程序缺陷或者收集某些信息),就要把数据转储(dump)为静
态(如文件)的形式。否则,这些数据将永远无法获得。
是有效的拆分应用,实现敏捷开发和部署。
息,这种大量集中写磁盘瞬间操作,对于服务集群起服或者停服操作造成较大的性能干扰;
外部转存工具的操作不是实时的存在时延,导致最终测试结果存在很大的误差。
盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游
戏设备)、智能语音交互设备、智能家电、车载终端等各种类型的用户终端,也可以实施为服
务器。下面,将说明设备实施为服务器时的示例性应用。
示出了终端400‑1和终端400‑2)通过网络300连接服务器200,网络300可以是广域网或者局
域网,又或者是二者的组合。
储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(CDN,Content
Delivery Network)、以及大数据和人工智能平台等基础云计算服务的云服务器。在另一些
实施例中,本申请实施例提供的路由收敛时间的确定方法或装置中,所涉及的目标应用程
序对应的服务集群可以包含至少两个服务,每个服务可以对应至少一个服务实例,每个服
务在服务集群对应的各服务器上可以包含多个服务实例(如针对同一个服务的多个不同版
本的服务实例),各服务实例可独立的运行在不同的服务器上,服务集群所涉及的多个服务
器可以组成区块链,而各服务器为区块链上的节点。
务器可以通过有线或无线通信方式进行直接或间接地连接,本发明实施例中不做限制。
服务实例;在目标应用程序存在运行的服务实例时,记录初始时间并采集与各服务实例对
应的路由变化信息;其中,路由变化信息包括:由服务实例的状态切换所导致的服务集群对
应的路由数量的变化信息;基于路由变化信息,确定服务集群对应的路由收敛条件得到满
足时,记录截止时间;基于初始时间及所述截止时间,确定与服务集群对应的路由收敛时
间。
集群的路由收敛时间进行测试,基于对包含目标应用程序的程序唯一标识以及目标路由数
量的选择操作,触发针对服务集群的路由收敛时间测试指令,测试客户端响应于测试指令,
发送针对目标应用程序对应服务集群的路由收敛时间的测试请求至服务器;服务器从测试
请求中解析出包含目标应用程序的程序唯一标识以及目标路由数量后,获取目标应用程序
对应的服务集群,服务集群包含至少两个服务,每个服务对应至少一个服务实例;在目标应
用程序存在运行的服务实例时,记录初始时间并采集与各服务实例对应的路由变化信息;
其中,路由变化信息包括:由服务实例的状态切换所导致的服务集群对应的路由数量的变
化信息;基于路由变化信息,确定服务集群对应的路由收敛条件得到满足时,记录截止时
间;基于初始时间及所述截止时间,确定与服务集群对应的路由收敛时间,并将路由收敛时
间返回至测试客户端,测试客户端呈现针对目标应用程序对应服务集群的路由收敛时间。
电子设备500可以实施为图1中的服务器,以电子设备为图1所示的服务器200为例,对实施
本申请实施例的路由收敛时间的确定方法的电子设备进行说明。图2所示的电子设备500包
括:至少一个处理器510、存储器550、至少一个网络接口520和用户接口530。电子设备500中
的各个组件通过总线系统540耦合在一起。可理解,总线系统540用于实现这些组件之间的
连接通信。总线系统540除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
但是为了清楚说明起见,在图2中将各种总线都标为总线系统540。
晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理
器等。
括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输
入按钮和控件。
一个或多个存储设备。
以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器550旨在
包括任意适合类型的存储器。
Universal Serial Bus)等;
接口);
件等形式的软件,包括以下软件模块:获取模块5551、采集模块5552、分析模块5553以及确
定模块5554,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步
拆分。将在下文中说明各个模块的功能。
处理器形式的处理器,其被编程以执行本申请实施例提供的路由收敛时间的确定方法,例
如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,
Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable
Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场
可编程门阵列(FPGA,Field‑Programmable Gate Array)或其他电子元件。
器协同实施。以服务器实施为例,参见图3,图3是本申请实施例提供的路由收敛时间的确定
方法的流程示意图,将结合图3示出的步骤进行说明。
达到目标路由数量的所需的时间。
表可以以数据表的形式存储在数据库中的,也可以是以文件格式存储在各服务实例对应的
本地存储区域。另外,各服务实例还以包括用于进行信息上报的信息上报子服务(子程序),
如此,测试系统可以接收各服务实例通过调用自身的信息上报子服务上传的自身信息记录
表中的路由变化信息。同时,由于目标应用程序对应的服务集群所处的真实环境中,各服务
对应的服务实例并不具有信息上报功能。基于此,在一些实施例中,在测试目标应用程序对
应服务集群的路由收敛时间的应用场景中,为了不影响目标应用程序的正常执行,同时各
服务实例又能实现信息上报功能,通常会通过构建实例副本的方式确定待测试服务集群中
各服务的服务实例,具体实现方式为:构建与目标应用程序对应的服务集群中各服务的实
例相对应的实例副本,将构建的实例副本作为与服务相对应的服务实例,其中,实例副本具
有信息上报功能。可以理解的是,测试程序获取的各服务所对应的服务实例实际上是各服
务的实例的实例副本,且实例副本具有信息上报功能,能够实现路由变化信息的上报功能。
用程序标识,构建目标应用程序对应的服务集群副本(编号1),服务集群‑副本中包含目标
应用程序的全部服务实例,但是基于真实环境的服务实例进行升级,以图中服务实例1(编
号1‑1)为例,升级的服务实例1中还包括应用于记录集群路由变化信息的信息记录表,以及
用于上报路由变化信息的信息上报子服务。测试程序通过实时监控测试环境中的目标应用
程序的服务集群‑副本中的各服务实例,并接收各服务实例通过自身的信息上报子服务上
报的路由变化信息,通过对上报的路由变化信息进行统计分析,确定测试环境中的路由收
敛时间与真实环境下路由收敛时间的一致性。预测路由收敛时间与真实路由收敛时间误差
越小,说明测试程序的预测结果越精确,预测效果越好。
个模拟游戏应用程序A各服务的功能模块,通过模拟功能模块构建各服务对应的服务副本,
各服务实例副本可记作recv_server。
程序对应的程序标识、信息采集周期以及目标路由数量。其中,目标路由数量是用于指示测
试应用程序对应的服务集群的路由收敛时间时,需要启动的服务实例的数量(或称路由的
数量)。
用程序A对应的服务集群的路由收敛时间的测试请求,测试参数至少包括游戏应用程序A的
程序标识、路由收敛时需要到的目标路由数量2000。
服务集群对应的路由数量的变化信息。
单个顺序启动,也可以是批量启动预设数量的服务实例(如单次批量启动100个服务实例)。
当服务集群中的第一个服务实例启动时,记录第一个服务实例的启动时间,作为整个服务
集群中路由信息发生变化的初始时间。需要说明的是,路由变化信息包括由服务实例的状
态切换所导致的服务集群对应的路由数量的变化信息。其中,服务实例的状态切换包括服
务实例的状态由未运行状态切换为启动状态,或者服务实例的状态由运行状态切换为停止
状态。
务实例的服务上线(online)事件时,会接收到由其他服务实例发送的服务上线通知消息,
消息的形式可以是文本格式,如“我是服务实例a,在b时间上线了”,或者当监听到服务集群
中存在服务实例对应的服务下线(offline)事件时,会接收到由其他服务实例发送的服务
下线通知消息,如“我是服务实例c,在d时间下线了”。
记录表中。如此,服务实例可以通过全量路由信息,发现服务集群中当前所有处于启动状态
服务实例。
路由变化信息。可以通过以下方式实现对状态切换事件的监听:监听服务集群中各服务实
例的状态切换事件;当监听到指示存在状态切换服务实例的状态切换事件时,更新服务集
群对应的路由变化信息。
实例是从未运行状态切换至启动状态时,会向服务集群内的其他服务实例广播服务上线通
知消息。常见的服务上线通知消息的形式可以为{recv_server_id对应的服务实例在
online_time时间上线了},其中,recv_server_id是对应服务实例的实例标识,实例标识是
用于唯一标识服务实例的,online_time是对应服务实例的上线时间对应的时间戳。例如
“5419103625794060571对应的服务实例,在1618824337016时间上线了”。其他服务实例基
于服务集群内广播的上线通知消息,能够发现服务实例已上线。
从运行状态切换至停止状态时,会向服务集群内的其他服务实例广播服务下线(离线)通知
消息。常见的服务下线通知消息的形式可以为{recv_server_id对应的服务实例在
offline_time时间上线了},其中,recv_server_id是对应服务实例的实例标识,实例标识
是用于唯一标识服务实例的,offline_time是对应服务实例的服务下线时间对应的时间
戳。例如“5419103625794060571对应的服务实例,在1418524315178时间下线了”。其他服务
实例基于服务集群内广播的服务下线通知消息,能够发现服务实例已下线。
由未运行状态切换为启动状态时,在路由变化信息中增加相应服务实例的路由信息;当状
态切换事件所对应服务实例的状态由运行状态切换为停止状态时,在路由变化信息中删除
相应服务实例的路由信息。
采集周期,周期性对各服务实例对应的路由变化信息进行采集,得到各服务实例对应的路
由变化信息。
服务实例自身的信息上报子服务通过上报端口,将路由变化信息上报至测试程序预先设置
的信息存储区域。
示输出的路由变化信息所归属的服务实例的唯一标识,在实际应用中,可以使用local_svc
和local_ud共同表示一个服务实例。属性remote_svc表示与local_svc指代的服务实例具
有交互关系的远端服务实例的名称,属性remote_ud表示remote_svc指代的服务实例的唯
一标识。由于各服务实例自身具有路由变化信息记录表,所以在本申请实施例中local_svc
与remote_svc的值可以相同,local_ud与remote_ud的值可以相同。cmd表示服务实例的状
态切换,cmd=“online”表示local_svc对应的服务实例上线了,属性trigger表示触发的事
件类型,trigger=“notify”表示触发通知事件(如服务上线通知、服务下线通知),trigger=
“fetch_all_route”表示触发获取服务集群对应的全量路由信息事件。图中编号R1行,表示
local_svc对应的服务实例在1618824337016时间戳对应的时间创建;编号R2行,表示服务
实例上线的时间点;编号R3行表示local_svc服务实现发现的服务集群中服务实例的数量
为1,也就是整个服务集群中存在运行的服务实例的初始时间;编号R4行表示服务实例启动
完成;编号R5行表示服务实例启动是否成功的回调信息,bendmark_startup_code=0时表示
服务实例启动成功;编号R6行表示服务实例启动成功后,触发获取服务集群中全量路由信
息的事件;编号R7行表示拉取服务集群中全量路由信息后,R1行启动的服务实例能够发现
的服务集群中的所有处于运行状态的服务实例的个数(可就是服务集群中的路由数量)。编
号R8行表示,服务集群广播其他服务实例的上线通知,R1行启动的服务实例接收到该通知
信息,更新自身的路由记录表,此时R1行启动的服务实例能够发现的路由数量由R7行中的
996,变更为R9行的997,后续各行表示含义与编号R1至R9类似。
例的状态切换为例,待启动的单个服务实例记作recv_server_N,测试程序启动后,监听各
服务实例的状态切换事件。在服务集群中注册服务实例recv_server_N,服务实例注册成功
后,启动服务实例recv_server_N,服务实例启动成功后,触发服务集群对应的状态切换事
件,状态切换事件触发之后,会向服务集群中的其他服务实例,广播服务实例recv_server_
N对应的服务上线通知消息,通知消息形式如“23419103625794674对应的服务实例,在
1458824337016时间上线了”。其他服务实例基于服务集群内广播的服务上线通知消息,能
够发现服务实例recv_server_N已上线。然后,服务实例recv_server_N自动获取服务集群
中的全量路由信息,并将全量路由信息记录在recv_server_N对应的信息记录表中,如此,
服务实例recv_server_N可以发现服务集群中所有处于启动状态服务实例。在服务实例
recv_server_N运行的过程中,监听到服务集群广播的服务上线或服务下线通知消息后,服
务实例recv_server_N更新自身的路由信息记录表。并每隔一个信息采集周期(如5s)保存
一次路由变化信息。
存储区域可以是本地文件,也可以是数据库,另外,数据存储区域可以和测试程序共享一台
服务器,也可以是其他服务器。测试程序对应的数据存储区域获取服务集群的路由变化信
息可以通过以下方式:测试程序中的数据存储区域周期性的接收各服务实例上报的路由变
化信息,路由变化信息由服务实例调用自身的信息上报子程序所上报;并将路由变化信息
存储到数据存储区域。
SecureSocket Layer)的方式,周期性的将路由变化信息,通过数据中心监听的信息上报端
口,传输至数据中心。参见图4,各服务实例通过自身的信息上报子程序,周期性的将自身的
路由变化信息通过上报端口(编号2)上报至信息存储区域(编号3)进行保存。这里,信息上
报子服务是根据预设的信息上报周期,定期上报,如信息上报周期设置为5秒,信息上报子
服务每隔5秒将服务实例自身信息记录表中的路由信息通过上报端口,上报至信息存储区
域(即测试程序的数据中心每隔5秒接收一次服务集群对应的路由变化信息)。对于各服务
实例进行信息上报的具体方式可以是:获取信息上报周期,信息上报周期用于表征相邻两
次对路由变化信息进行信息上报处理的时间间隔;获取并启动自身对应的信息上报子程
序;基于信息上报周期,通过信息上报子程序,周期性的将路由变化信息上报至数据存储区
域。
的时候,都会启动图中的代码实现自身路由变化信息的上报,信息程序的输入是各服务实
例经过上述步骤201至207得到的路由变化信息统计文件,每次读取一个统计周期的数据,
然后发到数据中心监听的HTTP端口,进行数据上报。图中编号C1定义了一个用于信息少报
的结构体类型的变量BenchmarkHandler,包括reader类型的指针变量*bufio_Reader,以及
用于表示字节数组的自定义的数据类型;编号C2定义了信息上报函数ServeHTTP,用于按行
读取统计文件中的路由变化信息,并输出日志文件;编号C3定义了信息上报程序中的全局
变量,字符串(string)类型的MetricFile表示目标统计文件,整数(int)类型的Port表示数
据中心监听的HTTP端口号(上报端口);编号C4是用于初始化全局变量的初始化函数
(init);编号C5表示信息上报子程序的程序入口(main),测试程序调用信息上报程序入口
函数实现信息上报功能。
行说明。
相等,当当前路由数量不等于目标路由数量时,测试程序需要继续周期性的解析信息存储
区域的路由变化信息,直至服务集群当前的路由数量与目标路由数量一致。
各服务实例均能够发现目标路由数量个服务实例。
状态的服务实例。
以下方式实现计算路由收敛时间的方式:确定截止时间与初始时间之间的时间差值,将时
间差值作为服务集群对应的路由收敛时间。
群对应的路由收敛时间,可记作T_end‑T_sart。
系。
序还可以提供针对路由关系报告的可视化查看界面,提升用户测试体验。
期性的将路由变化信息上报到数据中心,并对数据中心的路由变化信息进行统计分析。如
此,路由变化信息能够主动上报,具备实时性,减少测试误差;不需要调用外部转存工具集
中转存数据,对目标应用程序对应的服务集群中路由收敛过程中没有性能干扰;且数据中
心汇聚了服务集群中每个服务实例上报的路由变化信息,便于持续观察整个服务集群路由
变化情况并动态计算出服务集群的路由收敛时间,另外,针对在不同规模的服务集群在不
同业务场景的路由收敛时间的测试准确性,有利于对目标应用程序的推广和使用。
实施。结合图9示出的步骤进行说明。
操作界面,触发确定服务集群的路由收敛时间的测试指令,测试客户端响应于测试指令,获
取用户设置的测试参数,向服务器上部署的测试程序发送包含测试参数的测试请求。
测试参数:目标应用程序(编号1)用于指示需要确定路由收敛时间的目标应用程序,进而确
定目标应用程序对应的服务集群;目标路由数量(编号2)用于指示确定路由收敛时间时,服
务集群中各服务实例能够发现的路由数量;信息采集周期(编号3)用于指示路由变化信息
采集时间间隔;信息上报端口(编号4)用于指示测试程序所监听的信息上报端口。参数信息
设置完整后,触发确定路由收敛时间的测试指令。
作,向服务器发送携带测试参数P的测试请求至服务器。
路由变化信息,并通过信息上报端口1011接收各服务实例上报的路由变化信息。
间。
息。
关系报告下载API接口,以便于其他应用通过下载API接口获取相应的路由关系报告。
行可视化展示,通过可视化展示界面,可以直接分析得出服务集群对应的路由数量与路由
收敛时间之间的关系。
期性的将路由变化信息上报到数据中心,并对数据中心的路由变化信息进行统计分析。如
此,路由变化信息能够主动上报,具备实时性,减少测试误差;不需要调用外部转存工具集
中转存数据,对目标应用程序对应的服务集群中路由收敛过程中没有性能干扰;且数据中
心汇聚了服务集群中每个服务实例上报的路由变化信息,便于持续观察整个服务集群路由
变化情况并动态计算出服务集群的路由收敛时间。
时间点A1,依次对当前集群所有实例进行同样的操作,分别记录A1到AN的所有时间,然后计
算其中最早的时间与最晚的时间差。以下对实现步骤简要说明:记录集群预期启动的所有
实例数量N,N>1且N为整数;在服务集群中每个实例进程启动前,启动一个脚本循环调用工
具,dump当前节点的全量路由;每个节点dump完路由后判断路由数量是否等于N,等于则记
录当前的时间点A1;所有的节点的都达到了预期的全量路由数量,汇总时间A1‑AN;计算A1‑
AN中的时间差。
服这个资源消耗比较大的瞬间造成比较大的性能干扰;dump的工具并不是实时操作,会存
在秒级别的时延,导致最终测试结果存在很大的误差;大规模的集群路由收敛时间测试,分
布在各个机器上面的时间点数据不利于最终结果的统计分析。
服务实例(记作recv_server)实时输出路由变化相关的统计信息到统计文件(metrics文
件);阶段二是由信息上报(记作benchmark_reporter)进程实时读取metrics信息然后发给
数据中心;阶段三主要在数据中心的汇总数据基础上面进行统计分析,动态得出每个路由
收敛测试场景的路由收敛时间。
步骤401,测试程序启动,初始化服务进程;步骤402,实时监听服务集群中的事件回调消息,
其中,事件回调消息,包括402a服务实例上线时触发的事件回调以及402b服务实例下线时
触触发的事件回调;步骤403,创建服务实例,并在服务集群中注册服务实例;步骤404,服务
实例注册成功后,启动服务实例;步骤405,服务实例启动成功后,获取服务集群中的全量路
由信息;步骤406,根据服务集群返回的回调信息,执行更新操作,更新路由信息;步骤407,
获取运行间隔,即信息采集周期;步骤408,根据监听的回调时间,判断路由信息是否发生变
化;步骤409,根据运行间隔,周期性的输出路由变化信息;步骤410,执行退出操作。
的实例集合变量,记作instance_set,变量类型可以是结构体形式。测试程序初始化后,会
实时监听游戏应用对应的服务网格系统的回调消息,然后再创建服务实例,向游戏应用对
应的服务网格系统进行服务注册,服务实例注册成功后,继续启动服务实例,以便于服务网
格系统中的其它实例能够发现当前启动的服务实例,若上述操作过程中有任何失败,都会
直接执行退出操作,输出“服务实例的路由数量为‑1”的统计信息,此时,服务实例的路由数
量为‑1,表示服务实例进程启动失败退出。
和时间到统计数据(metrics)中,在服务实例进程运行的过程中会持续调用更新(Update)
操作去获取消息,且每隔一个信息采集周期(如,图中所示的5s)进行一次路由统计数据输
出。
件回调收到其它服务实例的服务上线(online)消息,会在当前服务实例的instance_set中
增加这条记录,当事件回调收到其它服务实例的服务下线(offline)消息,会在当前服务实
例的instance_set中删除这条记录。
实例上线的时间点;编号R3行表示服务实例发现的服务集群中服务实例的数量为1,也就是
整个服务集群中存在运行的服务实例的初始时间;编号R4行表示服务实例启动完成;编号
R5行表示服务实例启动是否成功的回调信息,bendmark_startup_code=0时表示服务实例
启动成功;编号R6行表示服务实例启动成功后,触发获取服务集群中全量路由信息
(trigger=“notify”)的事件;编号R7行表示拉取服务集群中全量路由信息后,服务集群中
的路由数量。编号R8行表示,服务集群广播服务实例的上线通知,服务实例接收到该通知信
息,更新自身的路由信息,此时服务实例能够发现的路由数量由R7行中的996,变更为R9行
的997,后续各行表示含义与编号R1至R9类似。
benchmark_reporter,上报程序的输入是第一阶段中recv_server进程所输出的metrics统
计文件,每次读取一个统计周期的数据,然后发到数据中心监听的HTTP端口(图7中所示的
10001端口),进行数据上报。
中路由收敛时间的实现过程如下:步骤501,测试程序获取初始路由数量以及设置的预期路
由数量;步骤502,从数据中心获取各服务实例上报的统计数据;步骤503,解析统计数据,获
取路由数量不等于初始路由数量的服务实例数量大于1时的时间点,作为路由变化初始时
间,记作T_start;步骤504,解析统计数据,获取路由数量等于预期路由数量的服务实例数
量等于预期路由数量的时间点,作为路由变化截止时间,记作T_end;步骤505,根据路由变
化初始时间以及路由变化截止时间,计算路由收敛时间。
量路由数量A(服务集群同步成功时的目标路由数量),测试程序循环从数据中心中获取路
由变化统计数据,当获取到当前集群中全量路由数量不等于S的服务实例数量大于1时,表
示服务集群中路由数量开始进行变化,记录下当前的变化的时间点记作T_start,继续循环
获取路由变化信息,当服务集群中的当前路由数量等于预期路由数量A的服务实例数量时,
表示服务集群的路由已经收敛(即服务集群同步成功),记录下当前的时间点T_end,计算T_
end以及T_start两个时间点的时间差值作为服务集群对应的路由变化收敛时间。
敛能力如下:参见图14A,图14A是本申请实施例提供的服务集群起服路由开始变化时间点
示意图,图中服务集群起服路由开始变化时间点(T_start)是2021‑03‑29 16:00:00.090
(图中编号A‑1),即在编号A‑1指示的时间点,服务集群中存在正常启动的服务实例。
2021‑03‑29 16:00:05.820(图中编号B‑1),结合图14A中的编号A‑1表示的服务集群起服路
由开始变化时间点T_start,可以得到3000节点同时启动,整个服务集群同步成功时间:T_
end ‑T_start = 5730ms。另外,根据实际测试(图中未示出),3000节点启动后,再停止一个
服务实例,整个服务集群同步成功时间:270ms;3000节点启动后,再批量启动200节点同时
上线,整个服务集群同步成功时间:2880ms;3200节点启动后,再批量停止200节点同时下
线,整个服务集群同步成功时间:2600ms。
启动一个新的实例,达到3001个节点,整个服务集群同步成功时间:510ms。
计路由变化信息时,通过信息上报的方式,不需要再在路由变化过程中持续调用系统工具
集中转存全量路由,减少对用户服务的影响;另外所有路由变化数据都可以在数据中心持
续观察,便于统计分析,动态测算路由收敛时间。
置555中的软件模块可以包括:
实例的状态切换所导致的所述服务集群对应的路由数量的变化信息;
群对应的路由变化信息。
息;当所述状态切换事件所对应服务实例的状态由运行状态切换为停止状态时,在所述路
由变化信息中删除相应服务实例的路由信息。
周期性对各所述服务实例对应的路由变化信息进行采集,得到各所述服务实例对应的路由
变化信息。
路由变化信息存储到数据存储区域。
例。
信息,得到所述服务集群当前的路由数量;确定当前的所述路由数量达到所述目标路由数
量时的时间点,将所述时间点作为截止时间进行记录。
时间之间的关系。
理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机
设备执行本申请实施例上述的路由收敛时间的确定方法。
敛时间的确定方法,例如,如图3示出的路由收敛时间的确定方法。
各种设备。
可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在
计算环境中使用的其它单元。
Markup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件
中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
上执行。
差;且对系统路由收敛过程中没有性能干扰;数据中心汇聚了集群中每个节点全量路由持
续上报数据,便于持续观察整个服务集群路由变化情况并动态计算出路由收敛时间。
内。