一种一致性微服务在线更新方法及装置制造方法及图纸

技术编号:35350831 阅读:26 留言:0更新日期:2022-10-26 12:18
本发明专利技术涉及一种一致性微服务在线更新方法及装置。该方法及装置利用边车模式在服务pod注入流量劫持sidecar,利用sidecar实现非侵入式跨服务追踪,对流量链路进行标注。本发明专利技术通过边车模式的启发提出一种非侵入式,用户无感的跨服务追踪方案,对服务进行实时监控,快速定位异常服务,利用边车模式实现非侵入式跨服务链路追踪。跨服务链路追踪。跨服务链路追踪。

【技术实现步骤摘要】
一种一致性微服务在线更新方法及装置


[0001]本专利技术涉及一种一致性微服务在线更新方法及装置。

技术介绍

[0002]随着应用架构的演进,微服务架构已经大面积取代了传统单体单一架构。与传统单体应用架构相比,微服务架构有很多优点,比如比单一服务的复杂度大幅降低,易于开发且可单独部署,各部分服务之间可根据自身需要灵活选型,使用最合适的技术实现,按需收缩扩容,较单体架构提供了高扩展性,具有服务间的高度解耦等等优点。但
没有银弹,微服务架构的应用分散成数个服务,定位故障非常复杂,数量众多的服务中,一个服务故障的影响也随之增加,进而影响整个系统。并且在微服务动态更新中,可能出现服务调用间的版本不匹配问题,即一致性的要求。
[0003]微服务架构由单体架构演化而来,将应用程序划分为相互连接的数个微服务,各服务相互独立,子系统独立开发,独立测试,独立部署,完成各自的功能,做到了服务解耦。微服务架构自诞生以来,随移动互联发展迅速崛起,各公司平台大量使用微服务架构,微服务架构一个重要特点就是需要快速迭代,快速响应需求和新功能。而单体架构已无法适应快速变化的业务扩张速度。但在微服务架构的众多优点之外,系统的维护难度也增加许多。应用由数个微服务组成,不同服务由不同技术语言完成,微服务间数据交互通过远程调用不同的数据库完成。在微服务架构中,流量难以管理,请求经过很多服务,调用关系错综复杂,难以对系统异常进行定位,跨服务事务追踪成为了微服务架构的痛点。同时为了快速迭代,微服务架构需要满足快速变化的业务发展,那么如何在动态更新中保证微服务一致性也成为了一个棘手的问题。
[0004]跨服务事务追踪是目前流行的解决方案之一。在微服务架构下,一个请求往往涉及多个服务调用,通过链路追踪每个请求的调用链,记录链路上的服务名称,服务状态,标签等信息,并结合可视化界面等。在微服务在线更新过程中,服务状态的变化也可以通过跨服务事务追踪快速定位,利用反射机制和流量回滚快速解决异常服务,解决性能瓶颈和一致性问题等。
[0005]Google公司在“Dapper,a Large

Scale Distributed Systems Tracing Infra

structure”论文中提出了一种大型侵入式微服务追踪架构。该方法分为三个核心步骤:数据采集,数据存储和查询展示,以此判断链路中的异常服务。虽然该方法能够对异常进行检测和定位,但是由于其数据采集过程需要侵入不同服务代码进行埋点,对于复杂的微服务架构系统,不同链路追踪API也互不兼容,带来的代码修改量和开销将会非常巨大。
[0006]微服务架构通常由数量众多的服务组成,服务调用关系错综复杂,每个服务相对独立进行部署在不同数据中心,不同服务器上。并且不同服务可能由不同的开发人员使用不同的语言技术完成,通常一个应用由多个微服务构成,在整个系统中,流量在各服务之间辗转传递,现有的微服务更新方案往往只追求可用性而忽略了一致性的保证,当服务间调用因更新导致版本不匹配,便会出现系统异常,而出现异常时难以快速追踪定位。

技术实现思路

[0007]本专利技术实施例提供了一种一致性微服务在线更新方法及装置,以至少解决当服务间调用因更新导致版本不匹配出现异常时难以快速追踪定位的技术问题。
[0008]根据本专利技术的一实施例,提供了一种一致性微服务在线更新方法,包括以下步骤:
[0009]S100:利用边车模式在服务pod注入流量劫持sidecar;
[0010]S200:利用sidecar实现非侵入式跨服务追踪,对流量链路进行标注。
[0011]进一步地,方法还包括:
[0012]S300:微服务在线更新中,对流量异常链路服务快速定位,将流量导向正确版本;
[0013]S400:异常服务状态改变,结束调用服务,删除旧版本实例。
[0014]进一步地,步骤S100包括:
[0015]Pod收到外部请求p1,流量由sidecar接管,并将请求中的traceID与标签记录在sidecar内部的映射表中,之后将发送p2请求至应用;
[0016]应用收到p2,通过跨服务链路追踪的轻量SDK将请求中的traceID和标签自动化传递至p3;
[0017]sidecar收到应用发过来的p3请求,并从映射表中查询对应的traceID和标签,添加至p4;
[0018]出流量p4发送至下一个pod的sidecar中,实现微服务系统链路标记。
[0019]进一步地,方法具体包括:
[0020]利用边车模式向所有服务pod注入sidecar,初始化系统通信,实现跨服务链路追踪;
[0021]微服务系统无异常事务状态,准备就绪开始在线更新;
[0022]改变服务间的路由规则,流量按比例导向不同版本,并实时观测一致性问题;
[0023]所有不满足一致性的服务通过反射机制,在运行时标记为异常服务状态;
[0024]等待所有异常状态事务结束,此时没有流量流向旧版本,删除旧版本实例。
[0025]进一步地,方法具体还包括:将异常服务状态改为正常,恢复路由规则,流量已全部导向新版本,完成此次微服务在线更新。
[0026]进一步地,当观测出现版本不匹配、破坏事务一致性等问题,根据跨服务链路追踪traceID迅速定位异常服务及调用链,将此服务流量导向匹配版本,快速完成版本回滚。
[0027]根据本专利技术的另一实施例,提供了一种一致性微服务在线更新装置,包括:
[0028]注入单元,用于利用边车模式在服务pod注入流量劫持sidecar;
[0029]标注单元,用于利用sidecar实现非侵入式跨服务追踪,对流量链路进行标注。
[0030]进一步地,装置还包括:
[0031]定位单元,用于微服务在线更新中,对流量异常链路服务快速定位,将流量导向正确版本;
[0032]删除单元,用于异常服务状态改变,结束调用服务,删除旧版本实例。
[0033]一种处理器,处理器用于运行程序,其中,程序运行时执行上述任意一项的一致性微服务在线更新方法。
[0034]一种处理器,处理器用于运行程序,其中,程序运行时执行上述任意一项的一致性微服务在线更新方法。
[0035]本专利技术实施例中的一致性微服务在线更新方法及装置,利用边车模式在服务pod注入流量劫持sidecar,利用sidecar实现非侵入式跨服务追踪,对流量链路进行标注。本专利技术通过边车模式的启发提出一种非侵入式,用户无感的跨服务追踪方案,对服务进行实时监控,快速定位异常服务,利用边车模式实现非侵入式跨服务链路追踪。
附图说明
[0036]此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:
[0037]图1为本专利技术一致性微服务在线更新方法的流程图;本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种一致性微服务在线更新方法,其特征在于,包括以下步骤:S100:利用边车模式在服务pod注入流量劫持sidecar;S200:利用sidecar实现非侵入式跨服务追踪,对流量链路进行标注。2.根据权利要求1所述的一致性微服务在线更新方法,其特征在于,所述方法还包括:S300:微服务在线更新中,对流量异常链路服务快速定位,将流量导向正确版本;S400:异常服务状态改变,结束调用服务,删除旧版本实例。3.根据权利要求1所述的一致性微服务在线更新方法,其特征在于,步骤S100包括:Pod收到外部请求p1,流量由sidecar接管,并将请求中的traceID与标签记录在sidecar内部的映射表中,之后将发送p2请求至应用;应用收到p2,通过跨服务链路追踪的轻量SDK将请求中的traceID和标签自动化传递至p3;sidecar收到应用发过来的p3请求,并从映射表中查询对应的traceID和标签,添加至p4;出流量p4发送至下一个pod的sidecar中,实现微服务系统链路标记。4.根据权利要求2所述的一致性微服务在线更新方法,其特征在于,所述方法具体包括:利用边车模式向所有服务pod注入sidecar,初始化系统通信,实现跨服务链路追踪;微服务系统无异常事务状态,准备就绪开始在线更新;改变服务间的路由规则,流量按比例导向不同版本,并实时观测一致性问题;所有不满...

【专利技术属性】
技术研发人员:叶可江高瑞鸿须成忠
申请(专利权)人:中国科学院深圳先进技术研究院
类型:发明
国别省市:

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

1