引言
当项目架构演进到微服务的时候,系统分布式部署,传统单个流程的本地 API 调用被拆分成多个微服务之间的跨网络调用,由于引入了网络通信、序列化和反序列化等操作,系统发生故障的概率提高了很多。而业界通常用多少个9来衡量系统的可用性,如99.99%表示一年中有1小时左右的不可用时间。那么如何有效确保微服务架构的可用性呢?
微服务可用性设计
微服务的可用性通常可以从隔离、超时控制、过载保护、限流、熔断、降级、重试、负载均衡
隔离
微服务隔离,本质上是对系统或者资源进行分割,从而实现当系统发生事故的时候可以限制传播范围和影响范围,只有发生故障的服务不可用,而其他服务依旧可以提供服务。
- 服务隔离
- 动静分离
动静分离:动静分离很好理解,现在的软件架构大部分都是前后端分离的模式,而前端的静态资源如图片、音视频等资源可以存储到oss云存储服务器,动态API则部署在ECS上来做到动静分离,静态文件访问负载全部通过CDN加速。
- 动静分离
-
- 读写分离
读写分离:如数据库主从读写分离,DDD的CQRS模式
- 读写分离
- 轻重隔离
核心隔离
核心隔离:根据业务进行资源划分,核心业务与非核心业务进行机器资源、依赖资源隔离,核心业务可以搭建多集群通过冗余资源来提升吞吐和