这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记,今天讲一下系统架构设计中的微服务。
系统架构演变
服务架构根据演变历史主要有以下若干个阶段
- 单体架构
- 垂直架构
- 分布式架构
- SOA架构
- 微服务架构 每个阶段的服务架构对应了不同阶段不同系统规模,服务架构的演变是随着系统的规模、功能复杂度等因素而进化的。
单体架构
单体架构是最原初最为简单的架构模式,其所有的模块都集成在一个系统中,如图所示:
主要特点如下:
- 优点
- 性能高:模块之间依靠本地调用进行,不存在复杂的网络传输过程和冗长的调用链
- 开发简单:架构简洁,直观,开发上手门槛低。
- 缺点
- 模块耦合度高:模块之间相互关联,升级改动困难
- 调试困难:模块耦合导致调试困难
垂直架构
垂直架构是一种按照业务垂直划分的架构模式,如图所示:
主要特点如下:
- 优点
- 业务独立:开发维护方便
- 缺点
- 业务之间没有复用,存在冗余
- 每个业务实际上还是单体架构
分布式架构
基于以上的缺点,后续演变出的分布式架构开始关注业务中公共部分并将它们抽离出来作为公用部分,基于分布式的模式独立运行,其架构如下:
特点如下:
- 优点
- 抽离了业务无关的独立服务,提高了系统的复用性
- 缺点
- 公共服务的Bug或导致所有依赖的上游服务崩溃
- 调用关系复杂且服务之间可能存在冗余
SOA面向服务架构
为了管理服务,避免服务关系维护不当导致的混乱调用关系,引入服务注册中心的SOA架构开始出现
- 优点
- 引入了服务注册,统一管理服务
- 缺点
- 系统中心化且需要从上往下设计
- 系统重构困难
微服务架构
微服务是面向服务的一种更为激进的做法,其将所有的业务都划分为服务,取消了业务层和服务层的分界
其架构很类似于垂直架构,只是在不同服务之间引入了较为完善的通信机制和服务治理、配置、监控、链路追踪等功能,主要的特点如下:
- 优点
- 开发效率高
- 业务独立设计
- 自下而上的设计
- 实现了故障隔离
- 缺点
- 治理、运维难度更高
- 观测、安全性方面的调整
- 基于分布式架构本身的挑战
总结
上面仅列举了几种主流的架构,实际上,根据业务开发流程的不同,有更多的设计,但是总体上还是以上述为主,所以是否微服务就是架构演变的最终形态呢,下一篇将具体阐述微服务的核心。