单体与微服务区别

一、架构本质区别

  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 接口

相关推荐
JMchen12314 分钟前
Jetpack 内核实战(八):组件整合——DataStore + Room 构建离线优先架构
架构·room·datastore·组件整合·android 开发架构·jetpack 实战
ltl42 分钟前
AI 原生架构:LLM 时代的系统重构
架构
ltl44 分钟前
边缘计算架构:算力下沉的设计挑战
架构
JouYY2 小时前
大模型底层学习(三)-从零训练一个 BPE 分词器
架构·llm·agent
Dawson Zhu2 小时前
工业世界模型——基于AI Agent+数学仿真架构
人工智能·架构·agi
Wang's Blog2 小时前
AI Agent白手起家52: 从零搭建钉钉智能助手——资源准备与核心架构实现
人工智能·架构·钉钉
jufeng13072 小时前
【系列:手搓自主 AI Agent:Hermes 架构原理剖析 · 第 1 篇】
人工智能·python·架构·agent
制造业的搬运工2 小时前
智能窗帘PCB低功耗设计方案:架构要点与设计建议
人工智能·科技·架构·制造·pcb工艺
带娃的IT创业者3 小时前
DeepTutor:当 Agent-Native 架构撞上个性化学习的临界点
学习·架构·ai agent·大模型应用·个性化学习·教育技术·agent-native架构
啷里格啷5 小时前
Linux进程管理完全指南:从基础到云原生编排
后端·架构