单体与微服务区别

一、架构本质区别

  1. 单体架构

所有业务代码写在同一个 SpringBoot 项目、一个 Jar 包:用户、商品、订单、支付、文件上传全部耦合在一起,共享一个数据库。

• 部署:只打一个 jar,启动一个进程

• 调用:模块之间本地方法调用,直接 new 对象 / 注入 Bean

• 数据库:单库多表,所有业务共用一套库

  1. 微服务架构

按业务领域拆分成多个独立 SpringBoot 子项目(用户服务、订单服务、商品服务、网关等),每个服务独立工程、独立数据库、独立部署。

• 部署:每个服务单独打包独立运行,可单独扩容

• 调用:跨服务通过 HTTP/Feign 远程调用,走网络

• 数据库:分库隔离,订单库、用户库、商品库互不干扰

二、工程代码结构差异(重点) 单体项目结构 单模块工程,内部分包分层:controller/service/mapper/entity/common全部代码在一个模块,公共工具、业务、配置都在当前项目内部。

优点:结构简单,上手快;缺点:代码臃肿,百万行后维护灾难。

微服务聚合工程结构(Maven 多模块)

  1. 父工程(mall-parent):统一版本管理,不写业务

  2. 公共模块 mall-common:全局工具、统一返回、异常、MP 配置,所有服务依赖

  3. API 模块 mall-api:存放 Feign 远程调用接口、公共实体 DTO/VO,解决跨服务传参

  4. 网关服务 gateway:统一流量入口

  5. 多个独立业务微服务(user/order/product/pay)每个业务服务内部才是标准 SpringBoot 分层,互相隔离

三、优缺点总结

单体架构优点

  1. 开发简单,无复杂中间件

  2. 本地调用无网络损耗,性能好

  3. 部署简单,一个 jar 启动

  4. 排查问题简单,无分布式链路

  5. 入门学习成本低

单体架构缺点

  1. 代码耦合严重,后期维护成本爆炸

  2. 扩容浪费资源,只能整体扩容

  3. 发布风险高,小改动全量重启

  4. 数据库压力集中,多表竞争锁

  5. 大型团队协作冲突频繁

微服务架构优点

  1. 服务解耦,单一职责,易维护

  2. 故障隔离,单个服务宕机不影响整体

  3. 按需弹性扩容,节省服务器成本

  4. 独立迭代、单独发布,风险小

  5. 团队分模块并行开发,效率高

  6. 支持高并发、大数据量业务

微服务架构缺点

  1. 架构复杂,大量中间件学习成本高

  2. 存在分布式难题:分布式事务、分布式锁、接口幂等、超时重试

  3. 远程调用带来网络延迟,需要熔断限流保障稳定性

  4. 运维成本高:多服务、多数据库、多中间件部署维护

  5. 排查困难,需要链路追踪、分布式日志

  6. 开发工作量变大,需要封装公共模块、Feign 接口

相关推荐
念何架构之路9 小时前
beego总体架构与工程结构
java·架构·beego
fb_123459 小时前
OpenStack架构深度解析
架构·openstack
星期一研究室9 小时前
用视频与文件,给文档注入生命力
微服务·产品·设计
代码方舟10 小时前
零信任架构实战:基于天远车辆过户详版查询构建自动化车辆估值网关
运维·人工智能·架构·自动化
沈管家AI数字员工10 小时前
集团多组织AI怎么上?多子公司统一AI管理的架构与路径
人工智能·架构
算了吧956910 小时前
从“黑箱”到“透明”:答序科技如何用“诊断型”技术架构重构品牌AI可见度
人工智能·科技·架构
熊猫钓鱼>_>10 小时前
鸿蒙AI Agent新范式:从“对话式辅助”到“工程化代理”的Harness架构实战解析
人工智能·笔记·学习·华为·架构·harmonyos
南城以南溫暖如初14711 小时前
分享返现商城系统开发实战:技术架构与运营经验指南
java·spring boot·mysql·架构·vue·mybatis
数据技术说11 小时前
数据库慢了怎么查?从监控报警到找到根因的完整路径
数据库·架构
jianqiang.xue11 小时前
ESP-IDF保姆级入门11|FreeRTOS队列通信全解:生产者消费者+中断数据转发+多任务解耦,彻底搞定任务间交互
单片机·嵌入式硬件·物联网·架构·esp32