多环境下标签路由落地

目录

背景

在开发过程中,经常遇到的事情就是抢占环境,或是某个特性的变更对其他业务有影响,阻塞了其他项目的联调等。

核心原因是服务没有隔离,这里的服务包括应用程序服务和中间件服务。


我们的目标:同时可并行多项目开发

在一个调用链非常长的功能中,如果想修改其中的一个特性,并进行测试,而又不影响该环境的其他用户使用功能、特性,

例如:服务之间的调用关系链路:A->B->C→D

以上,三个项目同时进行,三个项目的标签分别是:Feature1、Feature2、Feature3

Feature1项目:涉及到B、C、D三个服务,所以,整体链路的数据流是:A(Daily标准环境)-》B(Feature1新环境B)-》C(Feature1新环境C)

-》D(Feature1新环境D)

Feature2项目:只涉及到A服务更新,所以,整体链路的数据流是:A(Feature2新环境A)-》B(Daily标准环境)-》C(Daily标准环境)-》D(Daily标准环境)

Feature3项目:只涉及到C服务更新,所以,整体链路的数据流是:A(Feature2新环境A)-》B(Daily标准环境)-》C(Feature3新环境C)-》D(Daily标准环境)

为了实现这个功能,我们解决了2个路由问题!

WEB服务路由 和 Dubbo服务路由?

解决WEB服务路由问题?

第一步:Web服务标签路由切换

我们主要利用了nginx的map hash配置来区分,根据请求header中的X-Feature-Tag不同值,来区分不同的标签服务

流程:


解决Dubbo服务路由的问题?

第二步:Dubbo服务路由标签切换

(1)引入frxs-ec-feature-1.0.0-RELEASE.jar包

(1)Feature tag上报流程

服务启动时JVM参数中添加启动参数,-Dfeature.tag=v1.1.1,为当前服务打上v1.1.1的标签

启动命令:java -Dfeature.tag=v1.1.1 -jar svcC.jar

开发环境:



(2)利用Dubbo的特性,分别对Dubbo的Router和Filter做了扩展了,进行对consumer服务和provider服务打标,意思就是把服务进行Tag标记

router扩展:com.frxs.ec.feature.router.CustomTagRouter

filter扩展:com.frxs.ec.feature.filter.CustomTagFilter

整体流程:

设想中的Daily环境:

当下部门正在构建开发的Daily环境,也就是想通过隔离的手段规避上述的问题,提升大家的开发效率。





展开阅读全文

页面更新:2024-04-22

标签:路由   标签   环境   数据流   特性   流程   背景   功能   标准   项目

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top