写点什么

11 周命题作业

用户头像
hifly
关注
发布于: 2020 年 08 月 25 日
11周命题作业

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



导致系统不可用的原因有:

硬件故障

硬盘故障,内存故障,cpu故障。所有的硬件都是有使用期限的,超过了使用期限很有可能发生故障。



软件bug

软件漏洞,开发bug都有可能造成系统的不可用。



系统发布

系统发布时,由于上线了新功能,或者更改了配置项,造成系统的不可用。



并发压力

并发请求太多,超过了系统的设计极限,导致系统崩溃不可用。



网络攻击

黑客利用系统漏洞或者Ddos攻击造成系统并发压力过大或者直接进入服务器,关闭了服务,造成系统不可用。



外部灾害

地震,电缆被挖断,机房空调坏了导致服务器温度过高关机,外部灾害发生的时候,往往令人防不胜防。



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



解耦

减少组件之间的依赖关系,降低系统的耦合度。

设计时使用下面的方法可以降低系统的耦合度:

1)高内聚,低耦合的组件设计原则

2)面向对象基本设计原则

3)面向对象设计模式

4)领域驱动设计建模



隔离

隔离就像防火墙一样,当一个组件发生问题时,保护其他组件不发生问题。

隔离分成很大方面,比如:

  • 业务与子系统隔离

  • 微服务与中台架构

  • 生产消费者隔离

  • 虚拟机与容器隔离



异步

使用异步的方式来提高系统的性能,从而提高系统的可用性。

异步的实现方法包括

  • 多线程编程

  • 反应式编程

  • 异步通信网络编程

  • 事件驱动异步架构



备份

服务采用集群的方式部署,数据库进行主从复制备份数据



Failover(失效转移)

数据库可以设计成主主复制的形式,方便进行失效转移

负载均衡失效转移

设计无状态的服务方便进行失效转移



幂等

服务重复调用和调用一次产生的结果相同,这就是服务的幂等性。

有些服务天然就具有幂等性,比如将用户的性别设置为男性。但是有些操作,比如交易操作,问题就比较复杂,需要通过交易编号进行服务调用有效性校验,只有有效的操作才继续执行。



事务补偿

通过执行业务逻辑逆操作,使事务回滚到事务前的状态。



重试

远程服务可能会由于线程阻塞,垃圾回收或者网络抖动,而无法及时返还响应,调用者可以通过重试的方式修复单次调用的故障。



熔断

当某个服务出现故障,响应延迟或者失败率增加,继续调用这个服务会导致调用者请求阻塞,资源消耗增加,进而出现服务级联失效,这种情况下使用断路器阻断对故障服务的调用。



限流

限流是指对进入系统的用户请求进行流量限制,如果访问量超过系统的最大处理能力,就丢弃一部分用户的请求,保证整个系统可用,保证大部分用户是可用访问系统的。这样虽然有一部分用户的请求被丢弃,产生了部分不可用,但还是好过整个系统崩溃,所有的用户都不可用要好。



限流的几种算法:计数器算法(固定窗口,滑动窗口),令牌桶算法,漏桶算法。



降级

关闭非核心的功能,将宝贵的系统资源留下来,用来支持核心功能。



异地多活

将数据中心分步在多个不同地点的机房里,这些机房都可以对外提供服务,用户可以连接任何一个机房进行访问,这样每个机房都可以提供完整的系统服务,即使某一个机房不可用,系统也不会宕机,仍然保持可用。异地多活的难点是数据一致。



用户头像

hifly

关注

还未添加个人签名 2018.03.08 加入

还未添加个人简介

评论

发布
暂无评论
11周命题作业