[发明专利]一种支持事务一致性的微服务动态更新方法有效
申请号: | 202110263875.0 | 申请日: | 2021-03-11 |
公开(公告)号: | CN113055465B | 公开(公告)日: | 2022-04-22 |
发明(设计)人: | 曹春;马晓星;王东宇 | 申请(专利权)人: | 南京大学 |
主分类号: | H04L67/51 | 分类号: | H04L67/51;H04L67/133;H04L41/082;H04L41/0893;H04L67/63;H04L67/56;G06F8/65;G06F8/71;G06F9/46 |
代理公司: | 南京知识律师事务所 32207 | 代理人: | 张苏沛 |
地址: | 210046 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 支持 事务 一致性 微服 动态 更新 方法 | ||
1.一种支持事务一致性的微服务动态更新方法,其特征在于,包括以下内容:
(1)通过流量代理管理服务请求
为整个微服务系统的用户请求入口和每一个微服务分别插入流量代理,流量代理拦截并接管用户请求,依据规则对请求进行转发并对请求进行事务管理;
(2)支持事务一致性的动态更新流程
支持对系统中的某个微服务进行动态更新,在部署系统中某个微服务的新版本上线时,流量代理将用户请求安全地导向新版本,完成新旧版本的切换,然后根据事务一致性原则在满足条件的情况下撤销旧版本,以完成对目标服务的动态更新;
所述支持事务一致性的动态更新流程包括:
步骤1,上线新版本:上线部署目标微服务的新版本,通过修改相关的路由规则,保证事务一致性,完成目标服务新旧版本的切换;
步骤2,撤销旧版本:发起撤销旧版本请求,及时完成旧版本服务实例的撤销,完成目标服务的动态更新;
所述撤销旧版本的流程包括:
步骤2.1,阻塞访问旧版本服务实例:当收到旧版本的撤销请求时,阻塞所有调用旧版本服务实例的新请求,即头信息中不存在相关版本信息的请求,而已经调用过旧版本服务的请求则允许通过;被阻塞的请求在调用方侧执行重试机制,重试的请求将依据更新后的路由规则,进而被转发到新版本的服务实例中,保证了不会再有新的分布式事务标识被旧版本服务实例的流量代理模块记录处理;
步骤2.2,同步集合:由前述可知,每个服务的流量代理模块都存在表示已调用过此实例的分布式事务标识集合,整个微服务系统入口的流量代理模块则存在标识已完成的分布式事务标识集合;利用所有旧版本服务实例中保存的集合L1,与整个微服务系统入口所保存的集合L2进行同步,得到的差集D,便代表所有调用过旧版本服务但还未返回结果的分布式事务标识集合;
步骤2.3,利用差集D完成旧版本的撤销:步骤1保证了L1集合不会继续增加,同时由于运行的分布式事务总会结束,因此当对应分布式事务结束时,将其标识从差集D中删除;差集D的内容将会不断减少,最终当差集D变为空集时,目标服务变为Free状态,表示不存在已调用过旧版本服务实例且还未结束的分布式事务,旧版本的服务实例可被安全地撤销;
步骤2.4,撤销旧版本服务实例,并对相关路由规则进行清理重置,删去依据头信息进行流量转发的相关条目,将所有流量默认转发往新版本的服务实例,最终完成动态更新,目标服务重新变为Normal状态,为下一次的动态更新操作提供初始条件。
2.根据权利要求1所述的支持事务一致性的微服务动态更新方法,其特征在于,所述插入流量代理,具体包括:
(1)为整个微服务系统的入口插入流量代理,一方面将系统的接口对外暴露出来供用户进行访问,对用户请求进行转发;另一方面,拦截所有的用户请求并添加跨多个微服务的分布式事务标识,对相关的分布式事务标识进行记录和管理;
(2)为每一个微服务插入流量代理,接管请求流量并依据相关的路由规则进行流量的转发,同时对相关的分布式事务标识进行记录和管理。
3.根据权利要求1所述的支持事务一致性的微服务动态更新方法,其特征在于,所述上线新版本的流程包括:
步骤1.1,上线部署目标微服务的新版本,并等待其就绪,若新版本部署未就绪则进行后续的更新步骤,系统将返回错误;
步骤1.2,添加新版本路由规则,优先依据头信息中的相关字段进行流量的转发;当服务实例完成处理响应请求时,会在头信息中添加相应的服务信息和版本信息,因此本次分布式事务的后续请求能够利用此头信息进行流量的转发;当前服务流量默认转发往旧版本,暂时还无请求被转发往新版本的服务实例;所述服务信息和版本信息为:x-version和s-v1;
步骤1.3,修改路由规则,将新流量默认转发往新版本,其余规则条目不变;对于任一分布式事务T,在新规则生效后对目标服务s发起请求,将包括如下几种情况:
①若分布式事务T在运行的过程中还未调用过目标服务s,则其请求头信息中将不包含和目标服务s相关的版本信息,依据我们修改过后的路由规则,分布式事务T对于目标服务s的请求将被转发往新版本;
②若分布式事务T在运行的过程已调用过目标服务s,则其请求头信息中必然包含了相关的版本信息,此时路由规则将优先依据此版本信息,将请求转发往同一版本的目标服务s。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110263875.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种大面积高精度绝缘子污秽分布评估方法
- 下一篇:一种自润滑型情趣用品