一种可拆分部署可合并部署的微服务架构代码示例
在(小)公司或个人开发的过程中可能会遇到以下场景:
- 开发阶段如果微服务拆分很细,本机启动服务过多会带来调试困难和机器负载过重的情况
- 部署阶段由于不同客户需求不同(经费),工程要保证既可以以纯正微服务架构多机部署集群,又可以合并部署节省节省资源
那么本实例工程便以demo的形式示范如何开发一个可单独部署又可合并部署的架构模式,较为适合小规模项目和小厂采用,大家知道,在人数少或者资源紧张的情况下单体服务是最为经济和快速的,本Demo即可作为单体服务部署,也可作为微服务集群部署,无任何代码改动量!
工程采用Maven多模块形式,具体模块分工为如下:
- 以boot结尾的工程为启动运行工程,不掺杂任何业务逻辑和代码,打包时会打包成runnable jar。
- 以service结尾的工程为业务逻辑模块,不掺杂运行代码,打包时为普通jar包。
-
以微服务架构运行 -- 分别运行各个以boot结尾的项目完成项目启动
-
以单体架构运行 -- 运行以standalone结尾的项目完成项目启动
不论是个人,还是公司开发,在package命名上一定要有区分度,比方说sample-cooperater-service的package命名建议就以company.cooperater开始,虽然可合并部署,但是也要将其想象成一个独立服务来开发。这有几个好处,一是可以无需任何担心即可独立部署而无需担心依赖问题,二是合并部署时不会因spring的扫描而乱套。