前沿科技网

微服务的灾难:折磨人的环境!

前沿科技网 3

微服务的灾难:折磨人的环境!

服务依赖

一般来讲,还有就是客位客户比较关心的问题:海关估价方式,在拆分为微服务后。经历一段时间的业务规模发展后,进口旧设备海关商检主要查什么,我们的服务都是具有比较多的依赖。像是:

一个服务依赖其他多个服务

我们发现业务初始依赖的是 ServiceA,哪些机械设备不能进口及交税的问题,结果跑了一段时间后。服务依赖越来越多,这些在伟益都能你给一一解决五金加工类:代理立式/卧式CNC加工机床、数控钻床、数控磨床、数控车床、冲床等二手设备。电子设备类:代理自动贴片机 、全自动IC邦定机、固晶机 ,还出现了更进一步依赖,电路板清洗机等旧电子设备的进口备案。塑料生产类:代理注塑机 、热熔机 、押出机 、花样机、 挤出机等塑料加工设备的国外中检。纺织设备类:我司代理高速喷气纺织机、摩擦纺纱机、气流纺纱机、 绣花机等二手纺织设备进口报关有着丰富的案例支持!生产线类:制造显示屏的生产线、制造涂料的生产线、组装生产线、喷涂生产线等二手生产线进口代理报关。下面就客户对旧设备进口比较关心的几个问题做下简单分析:二手设备进口报关,旧设备进口报关流程:准备旧设备进口资料—-从国外安排货运到码头-—在进口港,Service A 依赖 B、C,进行商检查货—-海关进口审核—海关现场查验核对—提货放行—陆运配送厂家。二手机械设备进口过程需要时间:安排中检,他们背后又调用了堆的服务。

同时 ServiceA 依赖的服务,2-4天。驳船,还存在跨业务组的情况,1—3个天。申报,也就是一个普通的业务调用,在单证和审价没有问题的情况下,可能关系到多个业务组的协调:

一次调用涉及 3 个业务组

虽然从图示来看,约3—7天。指定港口清关后内陆陆运配送至厂家,只有 3 个业务组。但,一个月前可是都是依赖自己。

说明小咸鱼作为业务组 A 的维护方,他所依赖的业务团队正在不断地增,家都在用力产生新的服务依赖。

假以时日,这个服务的依赖必然变的非常多(不过,小咸鱼并没有意识到这一点)。

环境

终于,在小咸鱼维护了一段时间后。这一个业务产品,成功走过了尝试期。他有了好几位新同事,在迭代的过程中,联调的诉求出现了。

小咸鱼麻利的利用组织里的公共环境搭建起了服务:

公共环境

小咸鱼辛辛苦苦的找了其他几个组,让家都往上面 Push 自己的服务,解决了这一个迭代的联调的问题。

但,好景不长。业务压力总是的,家都维护着复数的 f 分支。这时候就遇到了新问题:

不同业务组期望依赖不同

业务组A,期望依赖的是:

ServiceA:v0.1.0。

ServiceB:v0.2.0。

ServiceC:v0.3.0。

业务组B,期望依赖的是:

ServiceA:v1.1.0。

ServiceB:v1.2.0。

ServiceC:v1.3.0。

好家伙,在同一个集成环境中,家期望依赖的服务版本压根不一样。联调起来挺费劲,甚至存在一些风险。

例如:你在环境,联调时你以为你依赖的 ServiceB 的 v0.2.0 版本,跑的也好好的。结果其实其他业务在晚上把他更新为 v0.5.0 版本了,接口还是兼容的,但内在逻辑是变了的。当然,你也没有发现这个问题,因为是 “细微” 的修改。

但上到测试环境后,很快就会出现被测试同学打回来的情况。以此往来多了,你就会成为团队里质量不好的那一位 TOP1 了...

这问题怎么解决呢?

解决方案

针对微服务架构下的环境,核心还是要看公司内的基础设施的怎么样。

公共 dev 分支

若只是基础底蕴不够深厚,钞能力也不够的,一般会采取 dev 分支合并的方式。也就是在 ServiceA 上建立 dev 分支,专门用于集成环境。由同学配合脚本等,进行维护和应用。

虽然容易出现不同分支,影响到同一块的内容。但由于同一个 Service 一般会由 1~3 个人(小团队)经手维护,都坐在附近,基本可以控制冲突。

甚至有的小伙伴,为了谨慎起见。合并前会反向合并到自己 f 分支,再跑一遍自己的自动化接口测试,以确保正确。

当然,测试环境也是一样的问题。在业务迭代的过程中,常常有多个功能在同时,会拉多个分支。

如果、测试环境只有一套,就意味着要么团队内商量好时间。

轮流使用测试环境,要把不同功能的分支代码合到某个分支再统一解冲突,再联调和测试。

这个方案只能治标,但不能完全治本。

多泳道环境

说白了,可能还是需要多套环境来解决。当你期望是某一个泳道用来发布某一个特性分支时。对应的发布系统就会给其相关联的组件打上泳道标识,自然也就能知道依赖的是谁了。

如下图:

一个服务存在多个泳道

一般客户端会带上泳道标识的 Header,再透传下去。所有相关 Proxy 会根据 Header 内的标识进行选择。

考虑到有的服务在功能特性中并没有变更,因此会有 master 和功能泳道的区别,会再根据 Proxy 的规则进行选择。

当然在这块也可以结合服务发现的机制去做,具体看技术选型上的差距了。

总结

微服务化后,N 个服务如何联调,就是人员的一个头疼问题。而人一多,业务压力,很可能会出现一个服务同时多个分支并行的情况。

也就会导致、测试环境同一时间遇到这个烦人问题,我们可以通过公共分支,又或是多泳道的方式解决。

但两者都存在不同程度的缺点:

公共环境,需要公共分支,需要人为的一定介入。

多泳道环境,需要的基础设施较多,同时 MySQL、Redis 等公共介质也是一个问题,成本也是运维的一个考虑因素。

华为手机怎么p出云朵

小米手机太重怎么回事

怎么判断三星手机仿品

廊坊哪块有古董抵押卖

鉴定字画显微镜多少倍合格

翡翠真假怎么看价格

仿玉石怎么做啊好看

抖音开播没有直播模式

seo精准引流是什么软件

免责声明:文中图片均来源于网络,如有版权问题请联系我们进行删除!

标签:微服务 开发环境 泳道 测试环境 调用 咸鱼