摘要:
回滚是指当程序/数据出错时,将数据和程序恢复到最近的一个正确版本的行为。 常见的如事务回滚、代码库回滚、部署版本回滚、数据版本回滚、静态资源版本回滚等。 7.1 事务回滚 单库的回滚比较简单,分布式数据库,回滚则要使用分布式事务,见分布式事务笔记。底层实现如2PC,3PC长时间阻塞会影响性能。不需要 阅读全文
摘要:
超时:如果不设置超时时间,慢请求累积导致连锁反应,造成应用雪崩。超时主要处理的是网络连接和读写超时 重试:重试次数不能太多,否则会把请求数放大数倍,应该和熔断、快速失败机制配合 6.2 代理层超时与重试 6.2.1 Nginx 提供了 客户端超时设置、DNS解析超时设置、代理超时设置、Lua相关超时 阅读全文
摘要:
当服务出现问题,要保证服务起码可用,即使服务是有损的,这时候就需要使用降级策略,返回“不那么完善”的服务。另一层含义是,当系统资源紧张时,对非核心业务进行降级,保证核心业务的稳定 5.1 降级预案 梳理出哪些服务需要保护,哪些可降级。 按照是否自动化分为:自动开关降级和人工开关降级 按照功能分为:读 阅读全文
摘要:
限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的请求进行限速来保护系统,将流量削峰防止系统挂掉或雪崩,最终做到有损服务而不是不服务。 4.1 限流算法 4.1.1 令牌桶算法 4.1.2 漏桶算法 4.1.3 计数器限流 比如用Redis的有序集合限流 4.2 应用级限流 4.2.1 限 阅读全文
摘要:
当服务发生故障不可用后,限定传播范围和影响范围,防止出现雪球效应。 3.1 线程隔离 将请求分类,交给不同的线程池处理(RocketMQ的broker各种线程池)。当一个业务请求发生问题时,不会将故障扩散到其他线程池。 3.2 进程隔离 将系统按业务拆分成多个子系统实现物理隔离。 3.3 集群隔离 阅读全文