一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种分布式全链路灰度发布方法及装置与流程

2022-06-11 18:05:09 来源:中国专利 TAG:


1.本发明涉及分布式系统技术领域,更具体地,涉及一种分布式全链路灰度发布方法及装置。


背景技术:

2.灰度发布是业界一种规避发布风险的有效的手段,通常可以蓝绿部署、滚动发布、灰度发布等几种方式实现。其中,蓝绿发布需要同时运行两个版本的应用,在原有应用不变的情况下,部署新版本的应用,然后等新的应用测试通过后,将流量切换到新版本。然而,蓝绿发布要求同时存在新旧两个应用,需要消耗两倍的资源,存在成本较高的问题。而滚动发布的发布过程中,分批次地将老版本原地升级为新版本,直到升级完成。滚动发布不会消耗额外的资源,但风险较高,一旦开始滚动升级,用户的流量就会流向新版本,而新版本并没有进行完整的测试,导致发布期间系统处于不稳定的状态。
3.目前的灰度发布技术要求先启动新版本应用,但是暂时不将用户的流量切换,而是先让测试人员对新版本在线上进行测试。待测试通过后,再逐步将用户流量切换到新版本。该方案在不增加成本的情况下,可以保证线上系统的稳定。然而目前的灰度发布只适合应用于单个节点,当分布式系统中存在多个链路节点时,需要针对每个节点分别进行配置,存在效率低的问题。且当无法找到匹配的节点时,容易导致大量请求失败,进一步对分布式系统中的容器造成雪崩现象。


技术实现要素:

4.本发明为克服上述现有技术中灰度发布在分布式系统中存在配置效率低、容错率低的缺陷,提出一种分布式全链路灰度发布方法,以及一种分布式全链路灰度发布系统。
5.为解决上述技术问题,本发明的技术方案如下:
6.一种分布式全链路灰度发布方法,包括以下步骤:对分布式部署的所有链路节点分别添加至少一个节点标签,并根据节点标签对每一个链路节点按照不同维度进行分组;向所述链路节点下发请求流量的标识规则和请求流量的路由规则;当链路节点接收到未染色的请求流量时,所述链路节点根据所述流量标识规则对接收的请求流量进行染色标记,即对请求流量标记相应的流量标签,然后根据请求流量的流量标签和请求流量的路由规则寻找匹配维度的其他链路节点;当所述链路节点接收到经过染色标记的请求流量时,所述链路节点根据其接收的请求流量的流量标签调用匹配的应用。
7.本技术方案中,采用标签路由的方式,结合服务框架实现对分布式系统中的用户流量精确地导向某些特定的节点或机器。其中,分布式系统中的链路节点添加有至少一个节点标签,所述节点标签作为松散的元数据,可以灵活地配置机器的分组。对于用户发出的请求流量,节点根据下发的配置对匹配的流量进行染色标记,即打上流量标签,且该流量流量标签会在整个链路中进行透传,当应用调用下游应用时,会根据当前请求流量的流量标签来寻找匹配的节点及应用,提高配置效率和容错率。
8.作为优选方案,所述链路节点根据所述流量标识规则对接收的请求流量进行染色标记时,根据http请求header中的user值判断,当user值为正常用户,则将请求流量染色标记为正常用户标签;当user值为测试用户,则将请求流量染色标记为测试用户标签。
9.作为优选方案,所述链路节点中的应用包括normal版本应用和/或gray版本应用。
10.作为优选方案,所述链路节点根据其接收的请求流量的流量标签调用匹配的应用时,包括以下步骤:当所述链路节点中包括normal版本应用和gray版本应用时,根据所述链路节点接收的请求流量的流量标签,对染色标记为正常用户的请求流量调用normal版本应用,对染色标记为测试用户的请求流量调用gray版本应用;当所述链路节点中仅包含normal版本应用时,对染色标记为正常用户的请求流量调用normal版本应用,对染色标记为测试用户的请求流量结束请求;当所述链路节点中仅包含gray版本应用时,对染色标记为正常用户和测试用户的请求流量调用gray版本应用。
11.作为优选方案,对所述链路节点添加的节点标签的维度包括环境、机器配置和组织架构部门。
12.作为优选方案,对所述链路节点添加节点标签时,包括以下一种或多种标识操作:采用在应用代码中硬编码指定、使用配置中心进行动态配置、通过环境变量进行配置和采用容器编排工具进行配置。
13.作为优选方案,还包括以下步骤:所述链路节点获取节点标签后向注册中心进行注册信息登记,所述注册信息包括链路节点所属机器ip和节点标签;所述链路节点根据注册中心存储的注册信息进行不同维度的分组。
14.进一步的,本发明提出一种基于分布式系统的流量路由装置,应用于分布式系统,所述分布式系统包括分布式部署的链路节点,所述链路节点内设置有normal版本应用和/或gray版本应用;所述流量路由装置包括节点标识模块和规则配置模块,其中,所述节点标识模块用于对所述链路节点标识有不同维度的节点标签,并对所述链路节点按照不同维度进行分组;所述规则配置模块用于向所述链路节点配置请求流量的标识规则和请求流量的路由规则。
15.本技术方案中,当所述链路节点接收到未染色的请求流量时,所述链路节点根据所述流量标识规则对接收的请求流量进行染色标记,然后根据请求流量的流量标签和请求流量的路由规则寻找匹配维度的其他链路节点;当所述链路节点接收到经过染色标记的请求流量时,所述链路节点根据其接收的请求流量的流量标签调用匹配的normal版本应用或gray版本应用。
16.作为优选方案,所述流量路由装置还包括注册中心,所述链路节点获取节点标签后向注册中心进行注册信息登记,所述注册信息包括链路节点所属机器ip和节点标签;所述链路节点根据注册中心存储的注册信息进行不同维度的分组。
17.作为优选方案,所述节点标识模块包括代码指定单元、动态配置单元、环境变量配置单元、容器编排单元中的至少一种,其中,所述代码指定单元用于在应用代码中通过硬编码指定链路节点添加节点标签;所述动态配置单元用于对链路节点的节点标签进行动态配置;所述环境变量配置单元用于通过环境变量对链路节点的节点标签进行配置;所述容器编排单元用于通过容器编排工具对链路节点的节点标签进行配置。
18.与现有技术相比,本发明技术方案的有益效果是:本发明采用标签路由的方式,结
合服务框架实现对分布式系统中的用户流量精确地导向某些特定的节点或机器,能够有效提高配置效率;对于用户发出的请求流量,节点根据下发的配置对匹配的流量进行染色标记,当应用调用下游应用时,会根据当前请求流量的流量标签来寻找匹配的节点及应用,能够有效提高流量路由的容错率。
附图说明
19.图1为实施例1的基于分布式系统的流量路由方法的流程图。
20.图2为实施例1的流量路由流向示意图。
21.图3为实施例2的基于分布式系统的流量路由方法的流程图。
22.图4为实施例2的链路节点注册登记的示意图。
23.图5为实施例2的链路节点规则配置的示意图。
24.图6为实施例2的链路节点中仅包含gray版本应用的流量路由示意图。
25.图7为实施例3的基于分布式系统的流量路由装置的架构图。
具体实施方式
26.附图仅用于示例性说明,不能理解为对本专利的限制;
27.为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
28.对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
29.下面结合附图和实施例对本发明的技术方案做进一步的说明。
30.实施例1
31.本实施例提出一种基于分布式系统的流量路由方法,如图1所示,为本实施例的基于分布式系统的流量路由方法的流程图。
32.本实施例提出的一种基于分布式系统的流量路由方法中,包括以下步骤:
33.s1、对分布式部署的所有链路节点分别添加至少一个节点标签,并根据节点标签对每一个链路节点按照不同维度进行分组。
34.s2、向所述链路节点下发请求流量的标识规则和请求流量的路由规则。
35.s3、当链路节点接收到未染色的请求流量时,所述链路节点根据所述流量标识规则对接收的请求流量进行染色标记,然后根据请求流量经过染色标记获得的流量标签和请求流量的路由规则寻找匹配维度的其他链路节点;
36.当所述链路节点接收到经过染色标记的请求流量时,所述链路节点根据其接收的请求流量的流量标签调用匹配的应用。
37.本实施例中,通过给分布式系统中的机器或链路节点添加节点标签,而节点标签作为松散的元数据,可以灵活地配置机器或链路节点的分组。
38.而在对请求流量进行染色标记的过程中,本实施例通过控制平面向链路节点下发规则,其中包括请求流量的标识规则和请求流量的路由规则,用于描述什么样的流量属于哪个组。链路节点根据配置的规则对匹配的流量进行染色标记,即打上流量标签,请求流量所标识的流量标签会在整个链路中进行透传。且在链路节点调用下游应用时,会根据当前
请求的流量标签来寻找匹配的节点。
39.在具体实施过程中,如图2所示,为本实施例的流量路由流向示意图。本实施例中的分布式系统部署有a、b、c三个链路节点,每个链路节点中包括normal版本应用和gray版本应用,其中normal版本应用为正常版本,供正常用户访问;gray版本应用为测试版本,供测试用户访问,当测试用户在线上完成测试,确认功能无误后再供正常用户访问。当链路节点a接收到用户发出的请求流量时,先判断当前请求流量是否染色,若未染色,则链路节点a根据下发的流量标识规则对接收的请求流量进行染色标记,然后根据请求流量经过染色标记获得的流量标签和下发的请求流量的路由规则寻找匹配维度的其他链路节点;若请求流量已经过染色标记,则链路节点a根据其接收的请求流量的流量标签调用匹配的应用。
40.具体的,若请求流量为正常用户发出的,则将该请求流量染色标记为正常用户标签,此时链路节点a将该请求流量路由至正常用户分组,并调用normal版本应用。若请求流量为测试用户发出的,则为灰度流量,将该请求流量染色标记为测试用户标签,此时链路节点a将该请求流量路由至灰度分组,并调用gray版本应用。
41.同时,当链路节点a已经对请求流量进行染色标记或识别,例如当请求流量的流量标签为正常用户,此时链路节点a将请求流量路由至链路节点b中的normal版本应用,且完成应用访问后,链路节点b将请求流量路由至链路节点c中的normal版本应用。这个负载均衡算法需要应用内的服务框架来统一实现,对业务逻辑是透明的。
42.本实施例适用于全链路分布式系统中,采用标签路由的方式,结合服务框架实现对分布式系统中的用户流量精确地导向某些特定的节点或机器。其中,分布式系统中的链路节点添加有至少一个节点标签,所述节点标签作为松散的元数据,可以灵活地配置机器的分组。对于用户发出的请求流量,节点根据下发的配置对匹配的请求流量进行染色标记,即对请求流量标记相应的流量标签,且该流量标签会在整个链路中进行透传,当应用调用下游应用时,会根据当前请求流量的流量标签来寻找匹配的节点及应用,提高配置效率和容错率。
43.实施例2
44.本实施例提出一种基于分布式系统的流量路由方法,如图3所示,为本实施例的基于分布式系统的流量路由方法的流程图。
45.本实施例提出的基于分布式系统的流量路由方法中,包括以下步骤:
46.s1、对分布式部署的所有链路节点分别添加至少一个节点标签,并根据节点标签对每一个链路节点按照不同维度进行分组。
47.本实施例中采用松散的元数据作为节点标签,用于对链路节点进行分组。对所述链路节点添加节点标签时,包括以下一种或多种标识操作:采用在应用代码中硬编码指定、使用配置中心进行动态配置、通过环境变量进行配置和采用容器编排工具进行配置。
48.采用上述标识操作时,链路节点能够实现链路节点自行添加节点标签,且在完成节点标签添加后,能够通过配置中心等进行动态调整配置。
49.本实施例考虑到分布式系统中的节点数量大,难以进行统一管理,且每个节点的分类、属性等节点标签仅有管理该节点的用户才清楚,因此通过链路节点自行添加节点标签,能够快速有效地对节点进行分类。
50.进一步的,所述链路节点获取节点标签后向注册中心进行注册信息登记,所述注
册信息包括链路节点所属机器ip和节点标签;所述链路节点根据注册中心存储的注册信息进行不同维度的分组。如图4所示,为本实施例的链路节点注册登记的示意图。
51.本实施例中对链路节点所添加的节点标签的维度包括环境、机器配置和组织架构部门。在对链路节点进行分组时,比如可以按照环境(开发、测试、生产)、机器配置(低配、中配、高频。cpu高、磁盘空间大、网络带宽大)、组织架构部门(技术部、销售部、产品部)对链路节点进行分组。
52.s2、向所述链路节点下发请求流量的标识规则和请求流量的路由规则。
53.本实施例中,所述请求流量的标识规则包括根据http请求header中的user值判断,当user值为正常用户,则将请求流量染色标记为正常用户标签;当user值为测试用户,则将请求流量染色标记为测试用户标签。如图5所示,为本实施例的链路节点规则配置的示意图。
54.所述请求流量的路由规则包括请求流量的流量-链路节点的标签规则,用于将标识为相应流量标签的请求流量路由至规则中存储且匹配的链路节点标签分组中。
55.在一具体实施过程中,由于链路节点添加有至少一个节点标签,即存在一个链路节点存在多个节点标签的情况,比如链路节点a可能同时属于“开发”、“低配”和“磁盘空间大”分组。则当规则配置为“xxx流量路由到开发分组”时,流量会进入链路节点a;当规则配置为“xxx流量路由到磁盘空间大分组”时,流量也会进入链路节点a。
56.s3、当链路节点接收到未染色的请求流量时,所述链路节点根据所述流量标识规则对接收的请求流量进行染色标记,然后根据请求流量经过染色标记获得的流量标签和请求流量的路由规则寻找匹配维度的其他链路节点;当所述链路节点接收到经过染色标记的请求流量时,所述链路节点根据其接收的请求流量的流量标签调用匹配的应用。
57.本实施例中,分布式部署的链路节点中的应用包括normal版本应用和/或gray版本应用。
58.在链路节点根据其接收的请求流量的流量标签调用匹配的应用时,包括以下步骤:
59.当所述链路节点中包括normal版本应用和gray版本应用时,根据所述链路节点接收的请求流量的流量标签,对染色标记为正常用户标签的请求流量调用normal版本应用,对染色标记为测试用户标签的请求流量调用gray版本应用;
60.当所述链路节点中仅包含normal版本应用时,对染色标记为正常用户标签的请求流量调用normal版本应用,对染色标记为测试用户标签的请求流量结束请求;
61.当所述链路节点中仅包含gray版本应用时,对染色标记为正常用户标签和测试用户标签的请求流量调用gray版本应用。
62.在一具体实施过程中,链路节点b有normal版本应用和gray版本应用,其中normal版本应用即为正常版本应用,供正常用户使用;gray版本应用是新上线的测试版本应用,需要测试人员在线上进行测试,确认功能无误后再让用户访问。
63.当链路节点b启动时,链路节点b能够获取环境节点标签,自动将链路节点b中的应用归类至某个逻辑分组。本实施例中有两个组,分别为normal组和gray组。同样,链路节点c也有normal版本应用和gray版本应用,分别归类为normal组和gray组。
64.正常用户和测试用户的请求流量都经过链路节点a。链路节点a从控制平面获取请
求流量的标识规则和请求流量的路由规则。链路节点a根据http请求header中的user值判断,如果user值为正常用户,则将请求流量染色标记为正常用户标签,并将该请求流量路由到normal组;如果user值为测试用户,则将请求流量染色标记为测试用户标签,然后路由到gray分组。
65.对于正常用户的请求流量,当链路节点a将流量请求路由至normal组中的链路节点b,此时链路节点b调用其normal版本应用,链路节点b将流量请求路由至normal组中的链路节点c时,链路节点c同样调用其normal版本应用。这个负载均衡算法需要应用内的服务框架来统一实现,对业务逻辑是透明的。
66.进一步的,当链路节点c没有normal组,即没有normal版本应用,只有gray版本应用时,按照传统路由流程,链路节点b找不到对应分组的链路节点c,将会调用失败,导致大量线上正常用户的请求处理失败。
67.在链路节点中仅包含gray版本应用的情况下,本实施例设置的路由规则为对染色为正常用户标签和测试用户标签的请求流量调用gray版本应用,避免请求失败。如图6所示,为本实施例链路节点中仅包含gray版本应用的流量路由示意图。而对于链路节点中仅包含normal版本应用的情况,相当于当前节点不存在待测应用,本实施例对染色为正常用户标签的请求流量调用normal版本应用,对染色为测试用户标签的流量请求结束请求。
68.当链路节点配置错误导致正常用户请求失败时,正常用户将无法请求,甚至会蔓延至所有节点,最后导致整个分布式系统故障。本实施例考虑到normal版本应用和gray版本应用之间只有微小的性能差异,对于无法找到匹配的节点的情况,进行降级保护,避免大量请求失败,提高可靠性。
69.实施例3
70.本实施例提出一种基于分布式系统的流量路由装置,应用实施例1或实施例2提出的基于分布式系统的流量路由方法。如图7所示,为本实施例的基于分布式系统的流量路由装置的架构图。
71.本实施例提出的基于分布式系统的流量路由装置,应用于分布式系统,所述分布式系统包括分布式部署的链路节点,所述链路节点内设置有normal版本应用和/或gray版本应用;所述流量路由装置包括节点标识模块和规则配置模块,其中,所述节点标识模块用于对所述链路节点标识有不同维度的节点标签,并对所述链路节点按照不同维度进行分组;所述规则配置模块用于向所述链路节点配置请求流量的标识规则和请求流量的路由规则。
72.本实施例中,流量路由装置还包括注册中心,所述链路节点获取节点标签后向注册中心进行注册信息登记,所述注册信息包括链路节点所属机器ip和节点标签;所述链路节点根据注册中心存储的注册信息进行不同维度的分组。
73.进一步的,本实施例中的节点标识模块包括代码指定单元、动态配置单元、环境变量配置单元、容器编排单元中的至少一种,其中,所述代码指定单元用于在应用代码中通过硬编码指定链路节点添加节点标签;所述动态配置单元用于对链路节点的节点标签进行动态配置;所述环境变量配置单元用于通过环境变量对链路节点的节点标签进行配置;所述容器编排单元用于通过容器编排工具对链路节点的节点标签进行配置。
74.在具体实施过程中,在链路节点启动时,流量路由装置中的节点标识模块对链路
节点标识有不同维度的节点标签,链路节点获取节点标签后向注册中心进行注册信息登记,同时节点标识模块根据链路节点的节点标签对链路节点按照不同维度进行分组。同时,规则配置模块向所述链路节点配置请求流量的标识规则和请求流量的路由规则。
75.其中,节点标识模块中的代码指定单元对链路节点在应用代码中通过硬编码指定链路节点添加节点标签;动态配置单元对链路节点的节点标签进行动态配置;环境变量配置单元通过环境变量对链路节点的节点标签进行配置;容器编排单元通过容器编排工具对链路节点的节点标签进行配置。
76.所有链路节点完成节点标签标识和规则配置后,链路节点对当前接收的请求流量进行判断:当所述链路节点接收到未染色的请求流量时,所述链路节点根据所述流量标识规则对接收的请求流量进行染色标记,然后根据请求流量经过染色标记获得的流量标签和请求流量的路由规则寻找匹配维度的其他链路节点;当所述链路节点接收到经过染色标记的请求流量时,所述链路节点根据其接收的请求流量的流量标签调用匹配的normal版本应用或gray版本应用。
77.相同或相似的标号对应相同或相似的部件;
78.附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;
79.显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献