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)专注于大数据与云计算技术。它提供的框架遵循去中心化服务管理和服务容错理念,对微服务发展贡献巨大。

