曾几何时,微服务是多么的流行。那时候整个程序员生态圈开口闭口就是微服务。
当时我面试过很多的应聘者,我问他们为什么要用微服务?他说微服务可以把大的模块拆成很多小的模块,方便团队分工;微服务可以让每个模块高可用、可伸缩,能够防止单点故障。
我说很好,那微服务有没有什么坏处?大部分的应聘者都摇摇头。
我当时在想,如果一个函数 a 明明可以在一个进程内调用函数 b,那为什么要把这两个函数放到不同的进程上呢?一个本地调用不比远程调用快的多吗?所以我根本就不认为微服务是个好技术。
关于微服务有助于团队分工的谬论,这不是经典的软件工程问题吗?软件工程发展了这么多年,不就是为了让模块松耦合,让大家能够分工吗?用不用微服、用不用把原本就在本进程内的通信这两个模块拆到不同进程内去,根本不影响团队分工啊!团队分工最重要的是划定模块的边界,定义模块之间的接口,这工作跟微服务有什么关系呢?
现在看来,微服务已经不提了,很多大公司也承认微服务错了。还好我从来没有相信过这条路,也从来没有要求团队走这条路,甚至要求团队不要走这条路。我始终坚信技术一定要经过深刻的分析,不要人云亦云。