【技术实现步骤摘要】
微服务的拆分方法、装置、设备及存储介质
本专利技术涉及计算机应用
,尤其涉及微服务的拆分方法、装置、设备及存储介质。
技术介绍
随着计算机应用技术的发展,为更好发挥资源的利用率及实现应用的快速部署,可将单体应用拆分为多个微服务。利用微服务提供对外的服务,各个微服务之间支持相互关联和访问,以实现整体应用的功能服务。现有微服务拆分方案中,单体应用微服务化通常是采用手动完成的,或者基于指令拆分完成的。以指令拆分为例,计算设备接收目标微服务的拆分指令,响应该拆分指令从单体应用的代码集合中拆分该拆分指令对应的目标代码,从而构成该目标微服务。在实践中发现,该拆分指令为研发人员对单体应用进行人工分析后而设计出的。因此,无论手动拆分还是指令拆分都需要人工参与,导致用户操作不便捷、人工成本较高、且微服务拆分的效率不高。
技术实现思路
本专利技术实施例公开了一种微服务的拆分方法、装置、设备及系统,能解决现有微服务拆分方案中存在的操作不便捷、人工成本较高及拆分效率不高等问题。第一方面,本专利技术实施例提供 ...
【技术保护点】
1.一种微服务的拆分方法,其特征在于,所述方法包括:/n基于应用的SQL语句,生成所述SQL语句查询的多个表之间的关联关系图;/n对所述关联关系图进行拆分,得到多个内部关联度更强的关系子图;/n针对每个所述关系子图,从所述应用的程序代码中查找所述关系子图对应的目标函数及所述目标函数相关的关联函数,并将查找的所述关系子图对应的目标函数及所述目标函数相关的关联函数作为一个微服务。/n
【技术特征摘要】
20190912 CN 20191086593781.一种微服务的拆分方法,其特征在于,所述方法包括:
基于应用的SQL语句,生成所述SQL语句查询的多个表之间的关联关系图;
对所述关联关系图进行拆分,得到多个内部关联度更强的关系子图;
针对每个所述关系子图,从所述应用的程序代码中查找所述关系子图对应的目标函数及所述目标函数相关的关联函数,并将查找的所述关系子图对应的目标函数及所述目标函数相关的关联函数作为一个微服务。
2.如权利要求1所述的方法,其特征在于,所述基于应用的SQL语句,生成所述SQL语句查询的多个表之间的关联关系图包括:
对所述应用的SQL语句进行语法分析,得到所述SQL语句对应的语法树结构,所述语法树结构包括至少一个树节点及树节点之间的连接权重,每个树节点用于表征所述SQL语句查询的表,所述树节点之间的连接权重为所述树节点对应SQL语句被执行的频次;
对所述语法树结构中的至少一个树节点及树节点之间的连接权重进行图形构造,得到所述SQL语句查询的多个表之间的关联关系图。
3.如权利要求1或2所述的方法,其特征在于,所述针对每个所述关系子图,从所述应用的程序代码中查找所述目标函数相关的关联函数包括:
对所述应用的程序代码进行分析,生成函数调用有向图,所述函数调用有向图中记录有所述应用的至少一个代码函数及所述代码函数之间的调用关系;
根据所述关系子图对应的目标函数,从所述函数调用有向图中查找与所述目标函数存在调用关系的代码函数,并确定为所述目标函数相关的关联函数。
4.如权利要求1至3任一项所述的方法,其特征在于,所述关联关系图中包括至少一个树节点及树节点之间的连接权重,所述对所述关联关系图进行拆分,得到多个内部关联度更强的关系子图包括:
按照高内聚低耦合原则,对所述关联关系图进行拆分,得到多个内部关联度更强的关系子图;其中,所述关系子图的内部关联度为所述关系子图中树节点之间的连接权重之和。
5.如权利要求1至3任一项所述的方法,其特征在于,所述对所述关联关系图进行拆分,得到多个内部关联度更强的关系子图包括:
按照预设约束条件,对所述关联关系图进行拆分,得到多个内部关联度更强的关系子图;其中,所述预设约束条件包括以下中的至少一项:所述关系子图中树节点的总数量大于或等于第一阈值、所述关联关系图中的孤立节点支持任意拆分到所述多个关系子图中的任一个、或所述关联关系图中的孤立节点支持独立拆分到一个关系子图。
6.如权利要求1至3任一项所述的方法,其特征在于,所述关联关系图中包括至少一个树节点及树节点之间的连接权重,所述对所述关联关系图进行拆分,得到多个内部关联度更强的关系子图包括:
获取第一树节点的第一邻居节点及所述第一邻居节点的第二邻居节点;其中,所述第一树节点为所述关联关系图中未被拆分的树节点,且所述第一树节点相关的连接权重之和大于第二树节点相关的连接权重之和,所述第二树节点为所述关联关系图中除所述第一树节点外的任一未被拆分的树节点;或者,所述第一树节点为所述第一树节点所在的关系子图对应栈中的任一树节点;
根据所述第一邻居节点的连接权重和所述第二邻居节点的连接权重,计算所述第一邻居节点的收益,并根据所述第一邻居节点的收益确定是否将所述第一邻居节点拆分到所述第一树节点所在的关系子图。
7.如权利要求6所述的方法,其特征在于,所述根据所述第一邻居节点的收益确定是否将所述第一邻居节点拆分到所述第一树节点所在的关系子图包括:
若所述第一邻居节点的收益大于或等于第二阈值,则确定将所述第一邻居节点拆分到所述第一树节点所在的关系子图;
若所述第一邻居节点的收益小于第二阈值,则确定不将所述第一邻居节点拆分到所述第一树节点所在的关系子图。
8.一种微服务...
【专利技术属性】
技术研发人员:何任高,王伟力,吴继敏,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。