Spring Cloud 微服务架构概述
传统应用的演进
在早期的企业级 Java 开发中,SSM 等技术框架是主流选择。大多数项目以单体应用(Monolith)的形式交付,例如一个进销存系统通常打包为一个 WAR 包部署在 Tomcat 上。随着业务模块的增加,这个 WAR 包会不断膨胀,包含库存、销售、会员、报表等所有功能。

这种架构存在明显隐患:任何一个模块的 Bug 都可能导致整个系统宕机。曾经有客户在高峰期导出大量数据时,导致前台销售瘫痪。维护成本极高,且风险巨大,我们需要更本质的架构变革。
针对单体应用的问题,架构开始向 SOA(面向服务架构)演进。我们将模块划分为独立的服务单元,引入数据库读写分离,并加入企业服务总线(ESB)来降低耦合度。各模块通过 SOAP 协议与 ESB 通信,性能有所提升。

然而,随着终端数量激增,单一模块可能成为瓶颈。此时需引入 Nginx 做负载均衡。但运维压力随之增大,模块升级频繁,ESB 也可能成为性能瓶颈。

架构要求
面对大数据和高并发环境,新架构需满足以下核心要求:
- 高性能:基础要求。
- 独立性:单点故障不影响全局。
- 易扩展:节点可按需扩容。
- 便于管理:资源管理、升级成本低。
- 监控与警报:实时感知节点状态。
为了解决上述问题,Spring Cloud 应运而生。
微服务与 Spring Cloud
什么是微服务
微服务(Microservices)是一种架构风格,由 Martin Fowler 提出。它将单体应用拆分为小型服务单元,服务间通过 HTTP API 交互。与 SOA 相比,微服务划分粒度更细,强调将模块直接变为服务组件,而非仅仅发布到 ESB 容器。


Netflix OSS 的影响
Netflix 作为互联网视频提供商,其开源中心(Netflix OSS)专注于大数据与云计算技术。它提供的框架遵循去中心化服务管理和服务容错理念,对微服务发展贡献巨大。
Spring Cloud 的核心模块
Spring Cloud 并非单一框架,而是一个基于 Spring Boot 的工具箱。它封装了 Netflix 的多个框架,并通过自动配置简化集成。
Spring Cloud Netflix 模块主要包含:
- Eureka:分布式服务注册与发现。
- Hystrix:容错熔断,控制组件交互延迟。
- Feign:声明式 REST 客户端,简化 Web Service 调用。
- Ribbon:客户端负载均衡。
- Zuul:网关代理、过滤与路由。
其他重要模块:
- Spring Cloud Config:集中式配置管理。
- Spring Cloud Sleuth:分布式链路追踪,支持 Zipkin 等。
- Spring Cloud Stream:构建消息驱动的微服务。
- Spring Cloud Bus:连接 RabbitMQ/Kafka 的消息总线。
本章小结
从单体应用到微服务,架构演进是为了解耦、提高可维护性和应对高并发挑战。Spring Cloud 通过整合成熟工具,为构建分布式系统提供了标准化方案。接下来我们将深入具体组件的使用。

