本发明专利技术实施例提供一种dubbo应用级全链路灰度实现方法,包括以下步骤:步骤一:用户通过消费端向生产端发送访问请求;步骤二:基于所述用户访问请求,通过分类算法对所述生产端的版本进行分类;步骤三:根据用户设置的tag和weight,从新旧版本中通过筛选算法对符合要求的版本进行筛选;步骤四:根据筛选出符合要求的版本,通过兼容算法确定用户所要访问的版本;步骤五:符合要求的用户对已确定所要访问的版本进行访问。本发明专利技术实施例通过dubbo灰度发布实现了由服务级别升级到应用级别,实现了新版本上线后流量可以自动彻底隔离,以及实现多版本兼容,并且满足副本动态扩容的需求。
【技术实现步骤摘要】
一种dubbo应用级全链路灰度实现方法及系统
本专利技术涉及计算机
,更具体地说,涉及到一种dubbo应用级全链路灰度实现方法及系统。
技术介绍
项目上线都是以应用级别粒度进行更新上线的,上线的新版本与旧版本需要通过隔离测试和新旧版本访问流量控制来实现灰度发布,dubbo2.6目前只能够实现服务级别的权重和路由控制,如果需要对整个应用权重和路由进行修改,目前只能采用循环所有服务的方式进行权重和路由添加修改,这样不仅低效而且存在循环出错的风险。dubbo2.6如果要实现新版本上线后暂时无流量进入,需要开发人员为每个服务权重设置默认值0来防止流量进入新版本,如果某个开发人员忘记了或者设置错误都将会导致流量进入新版本。而通过路由配置来实现隔离测试,如果服务发布到k8s等容器云中,需要等到服务启动后才能获取服务所在的服务器IP进行路由配置,而此时流量可能已经进入新版本。如上两种都会导致灰度发布生效时间过晚,导致流量随机进入新旧版本的不可控,无法起到新旧版本隔离,并且需要开发人员介入灰度发布流程中来,增加的开发人员的负担。服务链路调用在微服务架构中是普遍存在的,dubbo2.6目前还无法方便快速的做到在整个链路中实现应用新旧版本隔离测试。本
技术实现思路
为了克服现有技术的不足,本专利技术提供一种dubbo应用级全链路灰度实现方法用来解决灰度发布服务级别粒度无法满足整个应用的灰度功能要求、无法满足副本动态扩容和缩容以及新版本上线后无法做到流量自动隔离,防止流量进入新版本的问题。本专利技术解决其技术问题所采用的技术方案是:一种dubbo应用级全链路灰度实现方法,包括以下步骤:步骤一:用户通过消费端向生产端发送访问请求;步骤二:基于所述用户访问请求,通过分类算法对所述生产端的版本进行分类;步骤三:根据用户设置的tag和weight,从新旧版本中通过筛选算法对符合要求的版本进行筛选;步骤四:根据筛选出符合要求的版本,通过兼容算法确定用户所要访问的版本;步骤五:符合要求的用户对已确定所要访问的版本进行访问。具体地,通过分类算法对所述生产端的版本进行分类,所述步骤包括:根据所述生产端的版本类型,对版本类型进行分类处理;根据所述生产端的版本序号,定义新旧版本类型。具体地,所述步骤包括:当不存在所述tag和所述weight时,符合要求的用户默认访问旧版本;当同时存在所述tag和所述weight,所述tag不相同时选择tag路由算法;当同时存在所述tag和所述weight,所述tag相同时选择weight路由算法。具体地,通过兼容算法确定用户所要访问的版本,所述步骤包括:通过复用平台的随机确定出一个版本副本;通过一致性哈希确定出一个版本副本。具体地,通过兼容算法确定用户所要访问的版本,所述步骤包括:通过轮询法确定出一个版本副本;通过最小连接数算法确定出一个版本副本。一种dubbo应用级全链路灰度实现系统,所述系统包括:发送单元,用于用户通过消费端向生产端发送访问请求;分类单元,用于基于所述用户访问请求,通过分类算法对所述生产端的版本进行分类;筛选单元,用于根据用户设置的tag和weight,从新旧版本中通过筛选算法对符合要求的版本进行筛选;确定单元,用于根据筛选出符合要求的版本,通过兼容算法确定用户所要访问的版本;访问单元,用于符合要求的用户对已确定所要访问的版本进行访问。具体地,所述分类单元包括:分类子单元:用于根据所述生产端的版本类型,对版本类型进行分类处理;定义单元,用于根据所述生产端的版本序号,定义新旧版本类型。具体地,所述筛选单元包括:默认访问单元,用于当不存在所述tag和所述weight时,符合要求的用户默认访问旧版本;第一选择单元,用于当同时存在所述tag和所述weight,所述tag不相同时选择tag路由算法;第二选择单元,用于当同时存在所述tag和所述weight,所述tag相同时选择weight路由算法。具体地,所述确定单元包括:第一确定子单元,用于确定单元通过复用平台的随机最终确定出一个版本副本;第二确定子单元,用于通过一致性哈希最终确定出一个版本副本。具体地,所述确定单元包括:第三确定子单元,用于通过复用平台的随机最终确定出一个版本副本;第四确定子单元,用于通过一致性哈希最终确定出一个版本副本。本专利技术的有益效果是:通过dubbo灰度发布实现了由服务级别升级到应用级别,实现了新版本上线后流量可以自动彻底隔离,以及实现多版本兼容,并且满足副本动态扩容的需求。附图说明图1是一种dubbo应用级全链路灰度实现方法的流程示意图。图2是一种dubbo应用级全链路灰度实现系统的功能模块图。图3是一种dubbo应用级全链路灰度实现方法的另一流程示意图。图4是一种dubbo应用级全链路灰度实现方法的另一流程示意图。图5是一种dubbo应用级全链路灰度实现方法的另一流程示意图。图6是一种dubbo应用级全链路灰度实现方法的另一流程示意图。图7是一种dubbo应用级全链路灰度实现方法的另一流程示意图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。以下结合具体实施例对本专利技术的具体实现进行详细描述:实施例一:图1示出了本专利技术实施例一提供的一种dubbo应用级全链路灰度实现方法的实现流程,为了便于说明,仅示出了与本专利技术实施例相关的部分,详述如下:在步骤S101中:用户通过消费端向生产端发送访问请求;在本申请实施例中,消费端是面向dubbo服务的消费者,loadbalance的核心算法来获取具体的生产者进行消费,生产端是面向dubbo服务的生产者,通过环境变量来标注自己的版本排序信息,来实现启动后新旧版本流量隔离,这个是由部署平台来自动写入的,无需开发人员介入,用户通过消费端向生产端发送访问新版本的请求,以使得生产端响应消费端的请求,从而便于用户进入新版本进行测试。在步骤S102中:基于所述用户访问请求,通过分类算法对所述生产端的版本进行分类;在本申请实施例中,根据生产者的版本类型信息和版本序号信息,上述的版本类型和版本序号在项目发布时有发布平台自动定义,无需用户手动设置和判断,将生产者进行版本类型分类处理,并且根据版本序号进行新旧版本定义。具体地,通过分类算法对所述生产端的版本进行分类,所述步骤包括:根据所述生产端的版本类型,对版本类型进行分类处理;根据所述生产端的版本序号,定义新旧版本类型。在步骤S103中:根据用户设置的tag和weight本文档来自技高网...
【技术保护点】
1.一种dubbo应用级全链路灰度实现方法,其特征在于,包括以下步骤:/n步骤一:用户通过消费端向生产端发送访问请求;/n步骤二:基于所述用户访问请求,通过分类算法对所述生产端的版本进行分类;/n步骤三:根据用户设置的tag和weight,从新旧版本中通过筛选算法对符合要求的版本进行筛选;/n步骤四:根据筛选出符合要求的版本,通过兼容算法确定用户所要访问的版本;/n步骤五:符合要求的用户对已确定所要访问的版本进行访问。/n
【技术特征摘要】
1.一种dubbo应用级全链路灰度实现方法,其特征在于,包括以下步骤:
步骤一:用户通过消费端向生产端发送访问请求;
步骤二:基于所述用户访问请求,通过分类算法对所述生产端的版本进行分类;
步骤三:根据用户设置的tag和weight,从新旧版本中通过筛选算法对符合要求的版本进行筛选;
步骤四:根据筛选出符合要求的版本,通过兼容算法确定用户所要访问的版本;
步骤五:符合要求的用户对已确定所要访问的版本进行访问。
2.根据权利要求1所述的一种dubbo应用级全链路灰度实现方法,其特征在于,通过分类算法对所述生产端的版本进行分类,所述步骤包括:
根据所述生产端的版本类型,对版本类型进行分类处理;
根据所述生产端的版本序号,定义新旧版本类型。
3.根据权利要求2所述的一种dubbo应用级全链路灰度实现方法,其特征在于,从新旧版本中通过筛选算法对符合要求的版本进行筛选,所述步骤包括:
当不存在所述tag和所述weight时,符合要求的用户默认访问旧版本;
当同时存在所述tag和所述weight,所述tag不相同时选择tag路由算法;
当同时存在所述tag和所述weight,所述tag相同时选择weight路由算法。
4.根据权利要求3所述的一种dubbo应用级全链路灰度实现方法,其特征在于,通过兼容算法确定用户所要访问的版本,所述步骤包括:
通过复用平台的随机确定出一个版本副本;
通过一致性哈希确定出一个版本副本。
5.根据权利要求4所述的一种dubbo应用级全链路灰度实现方法,其特征在于,通过兼容算法确定用户所要访问的版本,所述步骤包括:
通过轮询法确定出一个版本副本;
通过最小连接数算法确定出一个版本副本。
6.一种dubbo...
【专利技术属性】
技术研发人员:黄志超,江有山,杨慧,郭倩,张海松,
申请(专利权)人:银盛支付服务股份有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。