上一页 1 2 3 4 5 6 7 ··· 11 下一页
摘要: 回滚是指当程序/数据出错时,将数据和程序恢复到最近的一个正确版本的行为。 常见的如事务回滚、代码库回滚、部署版本回滚、数据版本回滚、静态资源版本回滚等。 7.1 事务回滚 单库的回滚比较简单,分布式数据库,回滚则要使用分布式事务,见分布式事务笔记。底层实现如2PC,3PC长时间阻塞会影响性能。不需要 阅读全文
posted @ 2021-04-24 21:26 walker993 阅读(1164) 评论(0) 推荐(0) 编辑
摘要: 超时:如果不设置超时时间,慢请求累积导致连锁反应,造成应用雪崩。超时主要处理的是网络连接和读写超时 重试:重试次数不能太多,否则会把请求数放大数倍,应该和熔断、快速失败机制配合 6.2 代理层超时与重试 6.2.1 Nginx 提供了 客户端超时设置、DNS解析超时设置、代理超时设置、Lua相关超时 阅读全文
posted @ 2021-04-24 20:59 walker993 阅读(969) 评论(0) 推荐(0) 编辑
摘要: 当服务出现问题,要保证服务起码可用,即使服务是有损的,这时候就需要使用降级策略,返回“不那么完善”的服务。另一层含义是,当系统资源紧张时,对非核心业务进行降级,保证核心业务的稳定 5.1 降级预案 梳理出哪些服务需要保护,哪些可降级。 按照是否自动化分为:自动开关降级和人工开关降级 按照功能分为:读 阅读全文
posted @ 2021-04-24 20:16 walker993 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的请求进行限速来保护系统,将流量削峰防止系统挂掉或雪崩,最终做到有损服务而不是不服务。 4.1 限流算法 4.1.1 令牌桶算法 4.1.2 漏桶算法 4.1.3 计数器限流 比如用Redis的有序集合限流 4.2 应用级限流 4.2.1 限 阅读全文
posted @ 2021-04-24 17:32 walker993 阅读(507) 评论(0) 推荐(0) 编辑
摘要: 当服务发生故障不可用后,限定传播范围和影响范围,防止出现雪球效应。 3.1 线程隔离 将请求分类,交给不同的线程池处理(RocketMQ的broker各种线程池)。当一个业务请求发生问题时,不会将故障扩散到其他线程池。 3.2 进程隔离 将系统按业务拆分成多个子系统实现物理隔离。 3.3 集群隔离 阅读全文
posted @ 2021-04-24 17:03 walker993 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 设计系统时思考墨菲定律 1. 任何事都没有表面看起来那么简单 2. 所有事都会比预计的时间长 3. 可能出错的事总会出错 4. 如果某个事可能发生,那么一定会发生 系统划分时思考康威定律 1. 系统架构是公司组织架构的反映 2. 应该按照业务闭环进行系统拆分/组织架构划分,实现闭环/高内聚/低耦合, 阅读全文
posted @ 2021-04-23 16:59 walker993 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 1. 事务的传播属性 1. REQUIRED:默认属性,如果当前已有事务,则加入并且忽略自身的设置,否则自己创建一个新的事务 2. MANDATORY:支持当前事务,若当前没有事务则抛出异常 3. NEVER:以非事务方式运行,如果当前存在事务,则抛出异常 4. NOT_SUPPORTED:以非事务 阅读全文
posted @ 2021-04-18 18:24 walker993 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 之前了解Synchronized不多,只知道同步代码插入了两个字节码指令,同步方法提前获取管程。近来看了很多写的很好的博客,了解了底层的实现方法。这里做一下记录,主要还是拾人牙慧。 Synchronized底层使用c++实现,在JDK1.6之后,加入了很多优化的技术,减少线程阻塞和唤醒的开销,具体可 阅读全文
posted @ 2021-04-15 22:28 walker993 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 13.2.2 线程安全的实现方法 同步:保障线程安全的一种手段,多线程并发访问共享数据时,保证共享数据在同一时刻只被一条(或一些)线程使用。 1. 互斥同步:互斥是实现同步的一种手段。比如synchronized关键字,Lock接口的实现。synchronized是一个重量级锁,阻塞和唤醒线程涉及到 阅读全文
posted @ 2021-04-14 12:32 walker993 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 1. JDK1.7下的HashMap 1. put操作 1. 判断key是否为空,为空则插入index=0的位置 2. 根据 hash(key) & (size - 1) 计算出index,在哈希表中找到对应位置 2.1 对应位置为空,放置新节点 2.2 对应位置不为空,遍历查找key和哈希值都相同 阅读全文
posted @ 2021-04-12 21:32 walker993 阅读(53) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 11 下一页