Spring Cloud 微服务架构概述与工程搭建
1. 系统架构的迭代
1.1 单体架构
定义:整个应用程序的所有功能模块(如用户管理、订单管理、支付管理等)都打包在一个单一的进程中,使用同一个数据库。
优点:
- 技术栈统一:开发、测试、部署简单。
- 易于开发:初期功能集中,模块间直接调用,沟通成本低。
- 性能高:本地方法调用,没有网络开销。
- 部署单一:只需维护一个应用。
缺点:
- 代码复杂度高:随着功能增加,代码库变得庞大、耦合严重,难以理解和维护。
- 技术栈固化:难以引入新的框架或语言。
- 可扩展性差:无法针对特定模块进行独立伸缩,必须整体伸缩,成本高。
- 部署不灵活:任何微小的修改都需要重新构建和部署整个应用,风险高、上线慢。
- 可靠性风险:一个模块的 bug 可能导致整个系统崩溃。
1.2 集群与分布式架构
定义:
- 分布式:将单体应用按业务维度拆分成多个独立的子系统,这些子系统可以部署在不同的服务器上,通过网络通信协作完成整体业务。本质上是'拆分'。
- 集群:为了解决单点故障和性能瓶颈,将相同的单体应用部署在多台服务器上,通过负载均衡器对外提供服务。本质上是'复制'。
优点:
- 高可用与高性能:通过集群实现负载均衡和故障转移。
- 初步解耦:通过分布式拆分,系统在物理上分离,技术栈可以按服务选择。
- 数据库拆分:可能出现分库分表,读写分离。
缺点:
- 服务治理复杂:需要管理它们的地址(服务发现)、调用关系、负载均衡策略。
- 通信可靠性:网络调用代替本地调用,面临超时、重试、网络故障等问题。
- 数据一致性:从单一数据库变为分布式数据库,面临分布式事务难题。
- 运维复杂:需要监控、管理成百上千的服务实例,部署、配置、日志收集都变得困难。
- 服务间依赖:可能形成复杂的调用链。
1.3 微服务架构
:微服务架构是分布式架构的一种更精细、更彻底的实践。它强调将单个应用程序拆分为一组微小、自治的服务。


