高可用设计
系统设计
设计原则
design for failure
具体优化方法
故障转移
分类
对等的节点之间直接转移
节点分主节点和备用节点,转移时需要进行主备切换
故障检测机制
心跳
主节点选举
paxos、raft共识算法
系统模块间的超时控制
失败只是瞬时的,但调用延迟会导致占用的资源得不到释放,在高并发情况下会造成整个系统奔溃
如何合理设置超时时间
收集系统之间的调用日志,统计比如说 99% 的响应时间是怎样的,然后依据这个时间来指定超时时间。
降级
关闭整个流程中非核心部分,保证主流程能稳定执行
限流
限制单位时间内的请求量,超过的部分直接返回错误
系统运维
灰度发布
通过线上流量观察代码变更带来的影响
故障演练
对系统中的部分节点/组件人为破坏,模拟故障,观察系统的表现
为了避免对生产系统造成影响,可以先部署另外一套与线上环境一摸一样的系统,在这上面进行故障演练
系统可用性度量
MTBF:两次故障之间的间隔,这个时间越长,系统越稳定
MTTR:故障平均恢复时间,时间越短,故障对用户影响越小
可用性=MTBF / (MTBF+MTTR)
系统设计
设计原则
design for failure
具体优化方法
故障转移
分类
对等的节点之间直接转移
节点分主节点和备用节点,转移时需要进行主备切换
故障检测机制
心跳
主节点选举
paxos、raft共识算法
系统模块间的超时控制
失败只是瞬时的,但调用延迟会导致占用的资源得不到释放,在高并发情况下会造成整个系统奔溃
如何合理设置超时时间
收集系统之间的调用日志,统计比如说 99% 的响应时间是怎样的,然后依据这个时间来指定超时时间。
降级
关闭整个流程中非核心部分,保证主流程能稳定执行
限流
限制单位时间内的请求量,超过的部分直接返回错误
系统运维
灰度发布
通过线上流量观察代码变更带来的影响
故障演练
对系统中的部分节点/组件人为破坏,模拟故障,观察系统的表现
为了避免对生产系统造成影响,可以先部署另外一套与线上环境一摸一样的系统,在这上面进行故障演练
系统可用性度量
MTBF:两次故障之间的间隔,这个时间越长,系统越稳定
MTTR:故障平均恢复时间,时间越短,故障对用户影响越小
可用性=MTBF / (MTBF+MTTR)
展开
评论
点赞
![[谢谢]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_112.2dd347d.png)