架构师训练营高可用作业

用户头像
qihuajun
关注
发布于: 2020 年 08 月 23 日

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



导致系统不可用的原因:

  • 硬件故障

  • 软件bug

  • 系统发布

  • 并发压力

  • 网络攻击

  • 外部灾害



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

解耦

  • 高内聚、低耦合的组件设计原则

  • 面向对象基本设计原则

  • 面向对象设计模式

  • 领域驱动设计建模

隔离

  • 业务与子系统隔离微

  • 服务与中台架构

  • 生产者消费者隔离

  • 虚拟机与容器隔离

异步

  • 多线程编程

  • 反应式编程

  • 异步通信网络编程

  • 事件驱动异步架构

备份

  • 集群设计

  • 数据库复制CAP原理

FailOver

  • 数据库主主失效转移

  • 负载均衡失效转移

设计无状态的服务幂等事务补偿:通过执行业务逻辑逆操作,使事务回滚到事务前状态重试

熔断

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

限流

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

  • 计数器算法(固定窗口,滑动窗口)

  • 令牌桶算法

  • 漏桶算法

自适应限流

实时自动评估QPS业务流量的不确定性与技术方案的自适应性天生一对!

降级

在高并发的时候将非核心的服务暂时关闭

异地多活



请用你熟悉的编程语言写一个用户密码验证函数



function checkPW($id, $password, $crypt){
return md5($id.'-'.$password) == $crypt;
}



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

qihuajun

关注

还未添加个人签名 2009.05.15 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营高可用作业