架构师训练营 week11 课后作业
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
原因:
log 设置的级别低,输出的文件占满磁盘空间
sql 执行频率过高,应该走缓存或搜索引擎
synchronized 修饰的方法耗时过长
缓存服务器被关闭,导致数据库 load 飙升
后台服务还没启动完成,就放请求进来了,导致请求阻塞
个别大文件的读写占用磁盘,导致其他用户的文件操作缓慢
在生产环境做压力测试,占用了大部分交换机带宽
访问缓存的代码被注释掉了
对象为 null,导致 NullPointException
方案:
解耦:高内聚低耦合
隔离:业务与子系统隔离、微服务与中台架构、生产者与消费者隔离、虚拟机与容器隔离
异步:多线程编程、反应式编程、异步通信网络编程、事件驱动异步架构
备份:集群设计、数据库复制
Failover 失效转移:数据库主主失效转移、负载均衡失效转移,设计无状态的服务
幂等:保证服务重复调用和调用一次产生的结果相同
事务补偿:通过执行业务逻辑逆操作,使事务回滚到事务前状态
重试:上游调用者超时时间要大于下游调用者超时时间之和
熔断:断路器三种状态(关闭、打开、半开)
限流(计数器算法(固定窗口、滑动窗口)、令牌桶算法、漏桶算法)
自适应限流:实时自动评估 QPS
降级:系统处于极限高并发访问压力时,关闭非核心的部分功能
异地多活:难点是数据一致
版权声明: 本文为 InfoQ 作者【花果山】的原创文章。
原文链接:【http://xie.infoq.cn/article/7ff158ad22ca58d959f87e738】。未经作者许可,禁止转载。
评论