第 11 周作业

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

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

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

硬件故障、软件BUG、系统发布、并发压力、网络攻击、外部灾害等

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

解耦

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

面向对象基本设计原则

面向对象设计模式

领域驱动设计模式

隔离

业务与子系统隔离

微服务与中台架构

生产者消费者隔离

虚拟机与容器隔离

异步

多线程编程

反应式编程

异步通信网络编程

事件驱动异步架构

备份

集群设计

数据库复制

Failover失效转移

数据库主主失效转移

负载均衡失效转移

幂等

服务重复调用无法避免,必须保证服务重复调用和调用一次产生的结果相同,即服务具有幂等性

事务补偿

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



传统事务的ACID

原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durability

分布式事务的BASE

基本可用Basic Availability、软状态Soft-state、最终一致性Eventual Consistency



重试

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

熔断

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

限流

在高并发场景下,系统的访问量超过了系统的承受能力,可以通过限流对系统进行保护。丢弃一部分用户请求,虽然产生了部分不可用,但是好过整个系统崩溃。

限流算法:

计算器算法(固定窗口、滑动窗口)

令牌桶算法

漏铜算法

降级

有一些功能时非核心的,但是给系统产生了巨大的系统压力,解决方案就是在系统极限高并发的访问压力下下,临时关闭非核心功能,将宝贵的资源留给核心功能。

异地多活

为了避免由于灾害等引起的整个数据中心不可用导致的系统不可用,采用异地多活的多机房架构,将数据中心分布在多个不同机房里。

异地多活的难点是数据一致性。



通过高可用运维来增加系统高可用

自动化部署

预发布验证

灰度发布

监控数据采集(用户行为日志、业务运行数据、系统性能数据)

监控管理(报警、自动控制(自动失效转移、自动扩容、自动限流))

用户头像

小胖子

关注

还未添加个人签名 2018.02.04 加入

还未添加个人简介

评论

发布
暂无评论
第11周作业