随笔分类 - 亿级流量网站架构读书笔记
摘要:13.1 同步阻塞调用 13.2 异步Future private void FutureTest() { //请求 Future<?> userInfoTask = POOL.submit(() -> {/**请求客户信息**/}); Future<?> orderInfoTask = POOL.
阅读全文
摘要:整体分成三部分缓存:应用Nginx本地缓存、分布式缓存、Tomcat堆缓存。 每层都用来解决相关问题,第一层解决热点缓存的问题,第二层减少访问回源率,第三层防止相关缓存失效/崩溃之后的冲击 11.2 如何缓存数据 11.2.1 过期与不过期 过不过期应该根据业务和数据量等因素决定 不过期缓存的场景
阅读全文
摘要:让数据更贴近使用者 9.3 缓存回收策略 1. 基于空间:到达存储空间上限 2. 基于容量:缓存的条目超过上限 3. 基于时间 TTL(Time To Live):存活期,超过过期时间被回收 TTI(Time To Idle):空闲期,空闲多长时间被回收 4. 基于Java对象引用:软引用/弱引用引
阅读全文
摘要:回滚是指当程序/数据出错时,将数据和程序恢复到最近的一个正确版本的行为。 常见的如事务回滚、代码库回滚、部署版本回滚、数据版本回滚、静态资源版本回滚等。 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 集群隔离
阅读全文
摘要:设计系统时思考墨菲定律 1. 任何事都没有表面看起来那么简单 2. 所有事都会比预计的时间长 3. 可能出错的事总会出错 4. 如果某个事可能发生,那么一定会发生 系统划分时思考康威定律 1. 系统架构是公司组织架构的反映 2. 应该按照业务闭环进行系统拆分/组织架构划分,实现闭环/高内聚/低耦合,
阅读全文

浙公网安备 33010602011771号