在开发过程中,经常遇到的事情就是抢占环境,或是某个特性的变更对其他业务有影响,阻塞了其他项目的联调等。
核心原因是服务没有隔离,这里的服务包括应用程序服务和中间件服务。
在一个调用链非常长的功能中,如果想修改其中的一个特性,并进行测试,而又不影响该环境的其他用户使用功能、特性,
例如:服务之间的调用关系链路: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标准环境)
第一步:Web服务标签路由切换
我们主要利用了nginx的map hash配置来区分,根据请求header中的X-Feature-Tag不同值,来区分不同的标签服务
流程:
第二步: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
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号