一种基于运行状态采样的自适应微服务运行优化系统技术方案

技术编号:32929762 阅读:14 留言:0更新日期:2022-04-07 12:20
本发明专利技术提供了一种基于运行时状态分析的微服务通信优化技术。微服务系统已经成为构建大型复杂应用的基础技术平台之一,其优点在于将模块化的信息处理单元进行封装,以服务网格的方式将各种应用功能进行交联与组合,实现面向企业和大型机构的应用系统。由于单点封装带来容错能力,提升了信息系统稳定性和开发的便捷。同时不同服务件往往采用HTTP网络通信,对数据密集型应用所引发的服务间通信,往往造成性能下降。针对上述问题,本项发明专利技术通过基于运行状态分析的方式,自适应调整服务间通信机制,包括将多个服务进行动态融合,从而避免跨网络节点和跨本机系统总线间通信造成的响应延迟问题,提升在构建基于微服务的大型数据密集性应用系统的性能。集性应用系统的性能。集性应用系统的性能。

【技术实现步骤摘要】
一种基于运行状态采样的自适应微服务运行优化系统


[0001]本专利技术属于涉及信息
,尤其是涉及一种基于运行状态采样的自适应微服务运行优化的方法,主要用于提升云计算和边缘计算复杂环境中基于多微服务协同运行的应用系统的运行性能,特别是降低通信延迟。

技术介绍

[0002]智慧园区和智慧城市等大规模人工智能应用场景的驱动下,云计算和边缘计算协同的方式已经成为处理具有不同特点的应用系统(数据密集、运算密集和通信密集)的运算环境。云计算满足多数据源、高计算压力需求应用,边缘计算2侧重于少量数据源但计算密集应用的需求。微服务1为提供应用系统构建提供了模块化标准,并具备高可用特性,作为构建大型应用系统的实现方式已经广泛落地。在落地微服务应用的云

边计算环境中,如何避免通信造成的性能瓶颈,是面向高吞吐数据处理能力所要解决的技术挑战。
[0003]本项专利技术通过以动态采样机制获取微服务通信状态和统计数据,并进行动态重构,实现基于即时编译4的动态调度的微服务通信优化技术。该技术通过计算动态采样信息,搜索最佳服务聚合方式,使具有高频通信的服务彼此间的通信成本降低,特别是将由通信介质导致服务间通信延迟降低,从而提升基于微服务应用的整体数据吞吐率。

技术实现思路

[0004]本专利技术提供了一种基于运行状态采样的自适应微服务运行优化,微服务调度器通过微服务运行过程中的信息,动态分析微服务通信特征并计算优化的微服务聚合策略,从而降低不必要的节点服务器间网络通信和节点服务器内的总线通信。/>[0005]为实现上述目的,本专利技术通过编译器静态分析技术3将微服务本身植入采样点,并向调度中心发送采样信息,由调度中心进行动态计算与规划,最终实现高效的服务重构(聚合),降低服务间通信延迟。整个优化与重构过程发生在基于微服务应用的运行过程中。本项专利技术适用于云

边协同环境,即计算效能、通信和存储I/O速率存在复杂配置的运行环境。
[0006]本项专利技术包含3部分:1.基于编译器技术的静态分析和采样代码植入;2. 通过采样代码获取的通信信息,在运行时分析基于微服务系统的运行状态,计算最佳通信策略;3.基于最佳通信策略进行动态重构,将可聚合的微服务通过动态编译重构,并通过调度系统将重构的微服务替换原有的微服务。
附图说明
[0007]图1微服务优化系统架构;图2基于价值模型来计算优化任务调度策略(即微服务的优化调配)的例子;图3服务聚合;图4系统流程图;图5效果流程图;
图6效果流程图。
具体实施方式
[0008]本项专利技术的实现方式包括静态代码分析与植入和运行时的通信状态分析、微服务重构与替换。静态代码分析与植入通过编译器插件分析微服务代码,并在涉及微服务间通信的代码(API)部分植入采样代码。微服务调度系统在运行时收集通信状态统计信息,为微服务制定重构策略,并通过在线代码重构,实现微服务聚合并将聚合后的微服务替换原有微服务,如图1所示。
[0009]基于编译器的采样代码植入通过编译器扫描微服务程序,并在每个微服务交互操作(调用其他微服务或被其他微服务调用)之前插入采样函数,如图1所示/采样函数每次被调用都会更新针对通信类型和地址的计数,如果计数达到阈值,则向调度中心发送统计信息,包括计数内容、参与通信的目标地址(或调用本服务的调用者地址)。
[0010]采样函数伪代码如下:type表示通信类型,dest_addr表示通信目的地址,size表示流量计数计数信息包括调用微服务间通信的次数和通信信息容量,触发向调度中心发送统计信息的条件也包含通信信息容量达到容量阈值。通信次数阈值和通信容量阈值均对应用某类通信和某个特定微服务,因此需要一个全局表来维护。这里通信类型由编译器分析得出,编译器通过反向追溯,判断参与通信的数据的来源,主要包括2种类型:CPU内存计算,GPU加速计算。
[0011]对于不同类型编程语言实现的微服务,可以通过不同类型编译器以基于源代码、中间代码或二进制代码的方式进行分析和代码植入。采样函数作为单独的函数库挂接于微服务实现中。语言类型分析与采样代码植入方式C/C++分析二进制文件并插入采样函数调用Java分析bytecode文件并插入采样函数调用Python分析源程序文件并插入采样函数调用
[0012]基于采样信息的微服务重构云

边集群调度中心在收集到统计信息后计算在运行环境中的任意两个微服务a和b是否可以聚合,且聚合后是否可以正常运行。判别聚合a和b的算法CanAggregate(a,b) 如图6所示。
[0013],这里freq函数表示基于统计信息计算的a与b的交互频率,volume函数表示a与b之间的数据交互容量,r这里为介于0与1之间的数值,可根据经验设定,表示频率与数据量对聚合判断的影响因子。如果基于交互频率和数据量计算的交互成本cost大于给定阈值threshold,则可考虑a与b进行聚合。这里阈值也通过用户以经验值来确定。
[0014]AbleToExecute函数判别a与b聚合后是否可以正常运行,包括考察如下内容:1. a与b聚合后的CPU内存消耗是否可被a或b当前运行节点满足;2. a与b聚合后的网络带宽需求是否可被a或b当前运行节点满足;3. a与b聚合后的存储I/O带宽是否可被a或b当前运行节点满足;
4. a与b聚合后的GPU内存消耗是否可被a或b当前运行节点满足。
[0015]上述4条如果无法满足,则AbleToExecute返回false,即无法正常执行,a与b无法进行聚合。图3给出了通过服务聚合降低跨计算节点间网络通信的例子,服务A,D聚合,服务B,C聚合。
[0016]在确定a和b可以聚合后,通过动态重构(重编译)将两个微服务整合为同一微服务,如图4所示。实现方式如下列表:语言类型分析与采样代码植入方式C/C++将二进制文件封装函数库并整合为兼顾a与b服务接口的微服务Java将bytecode文件封装函数库并整合为兼顾a与b服务接口的微服务Python将源代码文件进行重构整合为兼顾a与b服务接口的微服务对于a与b之间的交互,将a与b之间交互的接口实现复制为基于本机IP的服务接口,即a与b之间通过本机TCP接口进行通信,避免远程数据访问。
[0017]对于提供源代码的微服务,重构算法需要进行如下2步深度优化:1. 将a与b之间基于网络传输的远程过程调用的交互改为本机的进程间交互(IPC)或进程内交互(函数库调用);2. 如果a与b分别应用GPU加速设备,则将a与b所调用的GPU代码或机器学习模型同时载入GPU内存,并修改GPU计算代码的输入输出,使其直接在GPU内存中进行数据交互,避免在本机进行总线数据传输。
[0018]微服务调度、替换对于在整个云

边计算集群中运行的微服务,进行可聚合分析、重构与调度,算法流程表示如图5所示。
[0019]该算法将在集群中运行的所有微服务进行两两聚合,直到无法在找到可聚合本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于运行状态采样的自适应微服务运行优化系统,其特征在于建立一种可根据分析微服务之间通信频率和数据量的数学模型,并通过该模型计算来判断是否可以将彼此通信的微服务进行聚合,以次提升运行效率、降低通信延迟。2.根据权利要求1所述的一种基于运行状态采样的自适应微服务运行优化系统,其特征在于通过对微服务程序进行静态分析来植入动态信息采样,可使其在运行时向调度中心发送通信相关信息,并以此作为分析决策的依据。3.根据权利要求1所述的一种基于运行状态采样的自适应微服务运行优化系统,其特征在于通过编译器对微服务程序进行二进制或中间代码级的分析和动态信息采样能力的植入,以供运行时进行特征采集。4.根据权利要求1所述的一种基于运行状态采样的自适应微服务运行优化系统,其特征在于其在微服务运行时采集通信频率与通信数据量信息,以供调度中心决策是否彼此通信的微服...

【专利技术属性】
技术研发人员:赵继胜
申请(专利权)人:上海孚典智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1