架构师训练营作业 (第十一周)

用户头像
王海
关注
发布于: 2020 年 08 月 26 日

导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。



  1. 导致系统不可用的原因

  • cpu满负荷,竞争激烈,处理不过来造成假死

  • 内存溢出,系统物理内存不够,造成应用程序内存申请不到,直接退出

  • io文件描述符创建过多,消耗系统资源,应用程序申请不到系统资源

  • 带宽过载,上下行带宽超过限制或者打满网卡

  • 程序bug引起的系统不可用,如内存泄露,死循环等

  • 服务器宕机

  1. 保障系统稳定高可用的方案

  • 垂直扩展:垂直扩展提升系统的处理能力,如增加cpu,内存等,但不能解决单点故障问题。

  • 水平扩展:通过冗余部署解决单点故障,同时提升系统的处理能力,提高高可用性。

  • 隔离:是对系统、业务所占用的资源进行隔离,限制某个业务对资源的占用数量,避免一个业务占用整个系统资源,对其他业务造成影响。常用的隔离有:进程隔离、线程隔离、模块隔离、应用隔离、机房隔离等,读写分离。

  • 解耦:降低系统之间的依赖关系,避免系统之间互相影响造成雪崩。将同步调用转换成异步消息交互,通过消息队列解耦系统之间的依赖关系。

  • 限流:一个系统的处理能力是有上限的,当服务请求量超过处理能力,通常会引起排队,造成响应时间迅速提升。如果对服务占用的资源量没有约束,可能导致资源占用过多而宕机。常用的限流方式有消费者端限流,提供者端限流,网关限流,限流算法有滑动窗口、漏桶算法,令牌桶算法等。

  • 降级:是牺牲非核心的业务功能,保证核心功能的稳定运行。实现优雅的业务降级,需要将功能实现拆分到相对独立的不同代码单元,分优先级进行隔离,在后台通过开关控制。

  • 熔断:在分布式系统中,如果调用的远程服务失败或者不可用,就会导致请求阻塞在服务器上等待从而造成耗尽服务器资源,引起雪崩效应。采用熔断机制,即使控制故障范围扩大,保证系统整体上可用,局部不可用。



发布于: 2020 年 08 月 26 日 阅读数: 26
用户头像

王海

关注

还未添加个人签名 2018.06.17 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营作业 (第十一周)