看完这个问题以及上面所有的讨论,我想提出一种全新的思路,大家可以一起讨论下。
首先,在微服务出现以前,大多数服务是以单体应用的形式存在的,后续由于各种原因(项目变大,需求变多等等)演变为微服务。单体应用有单体应用的优点与缺点,微服务也有微服务的优点和缺点。这两种模式的争论其实一直存在,正如 @
micean 说的,“从一个极端到另一个极端”,这句话一点不错。我觉得其实是有解决方案的,是不是可以在这两个“极端”中找一个平衡点呢?
记得 2023 年的时候,google 开源了一款软件,叫 service weaver ,他有一个口号,“以单体形式编码,以微服务形式部署”,他的这个思路非常新颖,主要想告诉大家的一点就是,编码的时候可以按照一个模块一个模块来开发,互相没有耦合,但是最终部署的时候可以选择是单体应用一起部署,或者是微服务分开部署。
其实,我们团队在这之前也一直在做这方面的探索,但是一直没有开源,直到 2025 年春节前,我们的项目也开源了,我们以 Java 为主,推出了一套插件化的开发框架,每一个模块都可以以插件进行开发,插件之间互相不感知,但是我们参考 OSGI 的思想(@ioufev ),做到了插件可以聚合成一个进程部署(单体应用形态),或者分开部署(微服务形态)。
如果做到了这一步,是不是可以解决楼主的问题呢?其实微服务并不是一个错误的方向,而是在技术的螺旋式上升演进过程中的一个关键点。
以下是我在知乎上回答的类似问题的回答:
https://www.zhihu.com/question/11654944781/answer/96580243167这个是我们这个插件化框架的社区地址:
https://github.com/ModelEngine-Group/fit-framework我们项目刚开源不久,欢迎来讨论单体应用和微服务之间的相关问题,如果有同学们喜欢,也可以给我们点个 Star ,鼓励一下我们,感谢~