架构师训练营 1 期第 11 周:安全稳定 - 作业

用户头像
灵霄
关注
发布于: 2020 年 12 月 30 日
架构师训练营 1 期第 11 周:安全稳定 - 作业

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



1.1 引起系统不可用的原因

包括但不限于:

  • 硬件故障,电源烧坏,内存条松动,网络线路故障等;

  • 软件故障;

  • 运维方面问题,如系统中的部分或整体处于维护升级状态且没有备用系统时;

  • 并发压力导致的系统资源耗尽或服务等待;

  • 网络攻击,带宽被耗尽或比如DDOS攻击,SOCKET句柄被耗尽。

1.2 保证系统稳定高可用的方案

包括但不限于:

  • 解耦,降低系统之间的耦合,可以提高系统的可用性。解耦的具体方案包括:高内聚,低耦合的设计原则,面向对象基本设计原则,面向对象设计模式,领域驱动建模等;

  • 隔离,隔离可以降低系统之间的影响。常见的隔离方法包括:业务隔离,子系统隔离。微服务架构,中台架构。生产者与消费者隔离。容器隔离,虚拟机隔离;

  • 备份,包括电源、网络及服务备份。当主服务器宕机后,从服务器可以替代主服务器,提高系统可用性;

  • 失效转移,使用备份方案是,重要的是怎样做好失效转移。可以借助zookeeper或者keepalive这样的框架来实现失效转移。

  • 幂等,也是高可用架构需要考虑的问题,有些服务是天生幂等的,比如修改数据库操作。有些则需要考虑幂等,比如转账操作,可以在消息中加入事务ID,确保一个事务只被处理一次;

  • 事务补偿。对于分布式系统中,对于失败的事务,可以执行相应的补偿。具体做法是记录每次事务日志,如果事务不成功,则对之前的操作进行逆操作;

  • 重试,对于服务调用失败,可以适当尝试重试。重试需要确保上游服务超时时间>下游超时时间之和;

  • 熔断,是微服务中的一种架构策略。可以避免服务级联失效;

  • 限流,对服务进行保护,防止系统奔溃。限流的策略有很多种,计数器(固定窗口,滑动窗口),令牌桶,漏桶,自适应限流等;

  • 降级,在系统处于高并发访问时,禁止某些非核心服务;

  • 异地多活。当一个数据中心不可用时,请求会发给其它数据中心。其难点是数据一致;

  • 运维也会影响系统的可用性,从运维的角度,保证系统高可用可以做如下努力:

  • 自动化测试可以极大的降低回归测试的人力成本,自动化测试适合比较稳定的系统。

  • 自动化部署,对于较小的团队,自动化部署反而有优势,可以带来比较好的效果。

  • 为了更好的验证线上产品的正确性,可以创建一个预发布环境,预发布服务器不对外提供服务,却与生产环境配置一样。在系统正式发布之前,先把产品发布到预发布服务器,待验证通过后,在把预发布服务器的代码更新到正式环境。

  • 代码版本管控,有两种代码版本管控的方式。在主干分支上开发,然后创建分支进行发布。或者从主干创建分支分支,开发结束后合并到主干分支,只对主干分支进行发布。一般互联网公司都倾向使用第二种方式,但是也有一个缺点,就是当一个分支开发周期比较长时,会与主干分支有很大区别,解决方案是不断从主干分支拉取最新代码,确保开发分支的代码最新。

  • 灰度发布是每次发布时,只在部分服务器上发布新版本,降低系统升级失败带来的风险。

  • 另外需要对网站性能进行监控,实时获取系统运行状态,尽早发现系统问题。



发布于: 2020 年 12 月 30 日阅读数: 9
用户头像

灵霄

关注

还未添加个人签名 2019.02.13 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 1 期第 11 周:安全稳定 - 作业