微服务介绍:单体架构发展到微服务架构 📅 发布时间:2026/8/28 7:39:14 👁 浏览次数: 单体架构与微服务架构对比Spring Cloud 微服务入门指南—1.1 什么是单体架构单体架构Monolithic Architecture是指把应用的所有功能模块全部打进同一个程序里部署后跑在同一个进程中的架构模式。它是传统软件开发中最常见、最基础的架构形态。## 1.2 单体架构优缺点单体架构的优点优点说明开发简单直观代码都在一个工程里不用处理分布式问题IDE 友好、调试方便小团队能快速启动部署方便快捷打一个 WAR/JAR 包即可发布不需要容器编排和服务编排测试容易集成端到端测试起一个应用就行不用为服务间依赖做一堆 mock集成测试覆盖率高性能开销小模块间是进程内调用没有网络和序列化开销响应延迟低技术栈统一团队只学一套技术体系培训和招人成本低事务一致性简单本地事务就能保证数据一致不用碰分布式事务单体架构的缺点缺点说明代码高度耦合功能一多模块边界就模糊改一处牵全身维护成本涨得很快扩展困难只能整个应用一起扩容没法单独给某个高负载模块扩容资源利用率低技术栈受限全局一套选型想给某个模块换技术很难新技术的采用受制于历史包袱部署影响面大改一处就要全量发布风险高一次发布可能让整个系统不可用启动越来越慢代码膨胀后启动时间从几秒涨到几分钟开发体验和弹性伸缩都受影响团队协作困难多团队改同一个代码库冲突频繁合并和发布的协调成本很高单点故障风险任何一个模块的内存泄漏或异常都可能拖垮整个进程故障隔离能力弱技术债务累积改不动、不敢改的模块越来越多架构腐化加剧新人上手门槛持续升高二、微服务架构上面介绍了单体架构这时候就要引入微服务架构了。2.1 什么是微服务架构微服务架构Microservices Architecture是把单一应用拆成一组小型、独立部署的服务的架构风格。每个服务围绕一个明确的业务能力构建跑在自己的进程里服务间通过轻量级通信机制如 HTTP/REST、消息队列协作。简单来说单体架构就像是把一堆药材堆在一起而微服务架构则是把这堆药材按功效做了分类。2.2 单体架构 与 微服务架构对比对比维度单体架构微服务架构架构理念一个应用包含一切每个服务做好一件事通信机制进程内方法调用零网络开销网络远程调用存在序列化与网络开销数据管理共享单一数据库每服务独享数据库数据边界清晰部署粒度全量构建全量部署单服务独立构建独立部署扩展能力整体复制无法精准扩容按服务负载独立扩缩容故障隔离弱一处异常全盘崩溃强故障可隔离在单个服务运维复杂度低一套部署一套监控高需服务治理、分布式监控、容器编排适用阶段项目初期、小型应用、团队≤10人业务复杂、团队规模化、需快速迭代选型建议架构选型没有绝对优劣关键是匹配业务阶段。项目初期优先用单体架构快速验证业务模式当业务复杂度上升再逐步向微服务演进。盲目提前微服务化只会带来不必要的复杂度。2.3 微服务架构优缺点微服务解决了单体的扩展瓶颈但也引入了分布式系统固有的复杂度。要不要上微服务需要把好处和代价都看明白。微服务架构的优点优点说明独立部署与交付每个服务能独立构建、测试、部署发布周期从周级缩短到天级甚至小时级CI/CD 友好弹性扩展可以只给某个高负载服务单独扩容资源利用率高成本可控故障隔离单个服务故障不会拖垮全局配合熔断降级能做到优雅降级而不是雪崩技术演进灵活单个服务能独立重构、升级甚至重写技术债务可控、迭代灵活可复用与可组合服务以 API 暴露能力可被多个前端或第三方复用沉淀企业能力中心微服务架构的缺点缺点说明分布式复杂性网络不可靠、调用可能超时、服务可能宕机要处理重试、幂等、超时、降级等难题运维成本高服务从 1 个变成 N 个需要容器编排K8s、配置中心、服务网格、全链路监控等基础设施支撑数据一致性难跨服务事务无法用本地 ACID 保证要引入 Saga、TCC、消息最终一致性等分布式事务方案服务通信开销网络调用带来序列化/反序列化和网络延迟开销对时延敏感场景要专门优化调试与排障困难一个请求跨多个服务传统单机调试失灵要依赖分布式链路追踪如 Sleuth/Zipkin定位问题接口契约管理服务间 API 变更需版本管理和兼容性控制否则容易引发调用方故障测试复杂度高端到端测试要编排多服务依赖环境搭建和 mock 成本明显上升安全边界扩大服务间网络通信带来新的攻击面需要服务间鉴权与 mTLS 等机制2.4 微服务拆分拆分是微服务落地最核心也最难的环节。拆得好系统清晰好维护拆得不好服务是拆了但耦合还在。拆分原则拆分的第一原则是围绕业务能力拆而不是按技术分层拆。按技术分层拆的意思是把用户接口数据访问这些技术层单独拆成服务这样做每个业务变更都要横跨多个服务协作服务自治就名存实亡了。而拆分方式也主要分为按模块纵向拆分和抽取公共模块横向拆分。拆分时还要注意以下原则高内聚低耦合经常一起变更的功能放进同一个服务跨服务调用越少越好。单一职责一个服务对应一个明确的业务能力避免大而全。独立数据所有权拆服务的同时把数据边界划好每个服务独占自己的数据存储禁止别的服务直接连它的数据库表。三、Spring Cloud前面主要介绍微服务相关的概念接下来将简单介绍微服务项目中常见的一个微服务架构——Spring CloudSpring Cloud 是什么Spring Cloud是基于 Spring Boot 构建的、面向微服务架构的一站式治理框架可以理解成微服务架构的基础设施全家桶服务注册发现、配置管理、API 网关、负载均衡、熔断降级、分布式链路追踪都有对应的组件。有个很形象的区分Spring Boot 解决单个微服务怎么快速构建Spring Cloud 解决多个微服务怎么协作治理。而且 Spring Cloud 本身是一套规范和抽象底层实现可以替换——比如服务注册发现既可以用 Netflix 的 Eureka也可以用阿里的 NacosSpring Cloud 定义统一接口具体实现由各家提供。它的核心价值是你不用从零搭建分布式基础设施靠注解和自动配置就能快速接入服务治理能力把精力放在业务逻辑本身。