微服务的灾难-技术栈

栏目: Java · 发布时间: 5年前

微服务的布道师们特别喜欢鼓吹一个观点:拆分微服务之后,我们可以随意地对小模块进行重构,选择最合适的技术栈,并且如果写失败了随时对这个模块拿其它语言进行重写。这一点被大多数布道师当作微服务的重点优势。

但是布道师们有意地把这样做所带来的问题忽略了,或者更恶意的是,他们明知道有问题,但是不说?啊哈哈。

一个公司业务上有多种语言的话,理论上可以吸引到各种“语言的人才”。这确实不假,并且可以提供给各种语言大佬一个互相掐架的优秀竞技场,只要干掉对手(其它语言的大佬)了,我就可以扩张团队,让团队把所有其它语言的模块用我们擅长的语言重写一遍,善哉善哉。小伙子们一年的事情就都安排上了。

但是显然这种说辞是有问题的。在现行的微服务架构下,除了业务本身的研发人力投入之外,在业务之外的支持系统的研发工作也有很大的工作量,比如典型的,服务发现,熔断,优雅重启,存储系统 client,消息队列 client,缓存 client,配置系统 client 等等。。各种周边系统版本依次叠代下来,那可能也是几百上千人一两年的工作。为什么会带来这么多的工作量?其中很大一部分就是因为语言和技术栈混乱造成的。比如一个公司的技术栈能够统一到 java 的话,那没什么说的,大家都用 Spring Cloud 全家桶或者 Dubbo 全家桶就可以了。但是你们既有 java 又有 Go 又有 PHP 又有 C++ 又有 NodeJS 又有 Rust,这样显然就很难在众多神仙中达成一致。比如你想要选用 java 的 Spring Cloud 生态,但是这里面的服务发现或者配置系统并没有打算对其它语言进行支持,即使支持可能也支持地不全面。一旦支持不全面,公司内的轮子党们一定会跳出来,强行给你找出几十个缺点,一杆子打回去,最终得到一定要自己造这些轮子的结论。

好家伙,五种语言八种框架,一个服务发现的 client 轮子造五遍都能算少的了。目前开源界的趋势是将那些和业务无关的非功能性需求从模块中剥离出来,比如 service mesh 就是很好的尝试,只不过现阶段用过的都说坑。说好的那都是不怀好意,拉人入坑。对于研发人员来说,一个轮子造五遍真的没什么意思,可能也就是熟悉了五种语言的语法,并且写出了五种风格各异的 bug。只不过满足了部分中层管理老板的人员扩张野心。

语言和框架太多,对于公司来说显然是灾难。比如常见的公司组织架构调整,业务技术部门进行重组,不同部门的系统一般会进行暴力交接。这里说的“暴力”的意思是,不管你能不能接得下来,反正我是给你了。之后的维护也别来找我,甚至连简单的问答可能原部门都不一定愿意做。虽然公司对 程序员 的要求是可以随意地在不同语言技术栈之间切换,但程序员一般都有自己执著的美学偏好。让 java 程序员写 Go,往往是会翻车的。大多数 java 程序员在语言内的生态足够好,能满足几乎所有需求时,没有任何意愿去学习一门新语言。这是天然的抗拒心理,可以理解。我们这里已经有无数的案例表明,java 程序员转 Go,在写不满三个月的时间内就会离职 2333。就算不说 java,国内的 php 专家们也是不愿意写 Go 的,那些 PHP 大佬们哪怕在 swoole 之类的框架中重新实现一套 goroutine,也不愿意直接去写更原生的 Go 语言,因为用别人的东西体现不出轮子哥的价值啊。

对于一个公司来说,不应该听信那些微服务布道师的谎言,任由公司内的技术栈随意分裂。最终在公司调整或者变化的时刻才发现积重难返。在这一点上,我一直很羡慕国内的 b 站。他们很早地就把技术栈进行了统一。而其它那些几千甚至上万研发的“大公司”,大多都没有做到这一点。


以上所述就是小编给大家介绍的《微服务的灾难-技术栈》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

看见未来

看见未来

余晨 / 浙江大学出版社 / 2015-4-15 / 59.00元

【内容简介】 这是互联网群星闪耀的时代,巨人们用最尖端的技术和自成体系的哲学改变着我们的生活,甚至影响了整个世界和人类的历史进程。在这个时代,没有人可以避开互联网的渗透。互联网早已不是简单的技术变革,人们正试图赋予其精神和内涵,以期互联网能更好地为人类所用。 本书中作者 面对面地采访了包括马克·扎克伯格、埃隆·马斯克、杨致远、凯文·凯利、克里斯·安德森、罗伯特·希勒、迈克尔·莫瑞茨、凯......一起来看看 《看见未来》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器