引入微服务带来的一些问题

Posted 四猿外

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了引入微服务带来的一些问题相关的知识,希望对你有一定的参考价值。

微服务的引入还有各种各样的问题,包括:

1.额外引入的复杂性
微服务会带来各种各样的成本的提升,也会引入各种各样的技术问题。这些最终就会导致整体系统复杂性进一步的提高。当复杂性提高的时候,为了保证系统的稳定,就需要整体技术团队的靠谱,就需要技术人员的靠谱,就需要整体技术设施搭建的靠谱。在引入微服务之前,各位兄台麻烦扪心自问下,这些贵公司有吗?有这些团队、这些设施、这些资源吗?

2.分布式本身带来的成本
分布式本身就需要一整套完整的技术体系和设施去支撑整体分布式的建设。比如,以前单体项目只需要一个项目,直接人工上线就好了。现在呢,可能会出现几十个上百个项目,这些项目如果全靠人工去做,会彻底让团队人员疯掉。所以,就需要把整体发布,部署自动化起来。这里还仅仅是发布部署所需要的,还没有谈维护问题,用《征服》刘华强里的一句话说:”你有这个实力吗?”

三本资料,助你进大厂

3.维护和监控微服务所需要的 DevOps 团队
微服务本身需要维护和监控,以确保运行的稳定和可靠。在微服务的最佳实践里,是非常推荐搞 DevOps 的。我暂且不说 DevOps 需要的对人员水平的高要求,我就说 DevOps 本身所需要的工作态度和责任心问题,自己家的运维团队搭建是个什么鸟样子,运维成天忙死了再干嘛,谁还不清楚吗?整体运维的平均水准加上开发水平的要求,这个团队搭建下来要花多少钱?公司舍得这些投入吗?

4.微服务本身所需要的经验
微服务本身是很复杂的,从设计划分模块开始,就需要架构师必须对架构设计和微服务本身对应的 DDD 领域驱动设计非常有经验,能够恰到好处的划分出对应的模块。否则,一旦设计完毕,不巧把一些紧耦合的服务给硬是解耦成了不同的服务,那么,这个后果对整个技术团队甚至对整个项目团队都是灾难性的。同时,对于微服务的开发、维护、运行、保障以及运维,都需要技术团队成员要有很丰富的从业经验能迅速发现,定位,解决可能随时出现的问题才可以。如果技术问题不能及时解决,那整体系统的体验就可想而知了。但是,现在的经济环境,现在的公司技术人员构成,确定能有这些很丰富经验的人员来搞微服务吗?

5.链路测试的方法
我们上面提到过,为了快速追踪定位死锁或者共享资源的问题,微服务需要靠谱的调用链实现。那么,这就引出的新的问题:我们如何搞全链路测试?我们是不是还得搞一套合适的全链路测试工具才可以?这全链路测试工具开发又需要花多长时间,需要投入多少人力?测试人员的水平是不是也需要得到一定的保证?

6.微服务日志的爆炸
微服务本身有多个节点,这些节点为了自己的安全运行和维护,需要很多自己独有的日志。这些日志随着微服务的增多,也越来越多,你如何存?如何查?如何删?这些是不是都要考虑在内?

以上说的这些问题并不是否认微服务。

我只是砸给那些劝我没事儿就搞微服务的人。对于这些什么都不考虑,上来就说微服务的人,我认为都是非蠢既坏。

不管不顾现状,没事儿把微服务挂嘴边动辄怎么怎么样的人,我劝你悠着点。

三本资料,助你进大厂

以上是关于引入微服务带来的一些问题的主要内容,如果未能解决你的问题,请参考以下文章

架构设计之「 微服务入门 」

微服务架构的永恒话题:服务治理分布式事务

死磕微服务:分布式事务已成气候!

微服务架构之永恒话题:服务治理与分布式事务

微服务架构中分布式事务实现方案如何取舍

提起微服务架构,有两个永恒话题:服务治理分布式事务