《亿级流量网站架构核心技术》读书笔记
主要讲解高可用,高并发
高可用
- 负载均衡
负载均衡算法
失败重试机制
健康检查机制
动态负载均衡 - 限流
限流算法
应用级限流
分布式限流
接入层限流 - 降级
降级预案
自动降级/开关降级
读服务/写服务降级
多级降级
配置中心
使用Hystrix降级
使用Hystrix熔断 - 隔离
进程线程隔离
集群/机房隔离
读写隔离
动静隔离
爬虫/热点隔离
使用Hystrix隔离
基于Servlet3的请求隔离 - 超时与重试
代理层超时和重试
web容器超时
中间件客户端超时与重试
数据库客户端超时
NoSQL客户端超时
业务超时
前端ajax超时 - 回滚
事物回滚
代码库回滚
部署版本回滚
数据版本回滚
静态资源回滚 - 压测与预案
系统压测
压测方案:压测接口/并发量/压测策略/压测指标
压测报告:机器负载/QPS/响应时间/成功率
压测方式:线下/线上压测
读写/仿真/引流/隔离集群/缩容压测
单机/集群/离散/全链路压测
系统优化与容灾
单机调优
架构优化/系统扩容
跨机房容灾
应急预案
网络接入层(DNS/LVS/HaProxy)
应用接入层(Nginx/OpenResty)
web应用层(Tomcat)
服务层(Dubbo)
数据层(Redis/DB)
监控报警
服务器监控/系统监控/JVM监控/接口监控
报警策略:监控时间段,报警阀值,通知方式
高并发
- 应用级缓存
缓存回收策略:空间/容量/时间
缓存回收算法:FIFO/LRU/LFU
java堆/java堆外/磁盘缓存
Guava/Ehcache/MapDB
缓存使用模式Cache-Aside/Cache-As-SoR/CopyPattern - http缓存
浏览器缓存
HttpClient客户端缓存
Nginx代理层缓存 - 多级缓存
分布式缓存
热点数据与更新缓存
缓存崩溃与快速修复 - 池化
数据库连接池
HttpClient连接池
线程池 - 异步并发
同步阻塞调用
异步Future
异步Callback
异步编排CompletableFuture
请求缓存
请求合并 - 扩容
单体应用垂直扩容
单体应用水平扩容
应用拆分
数据库拆分: 水平/垂直拆分
使用sharding-jdbc分库分表/读写分离
数据异构
任务系统扩容(Elastic-Job) - 队列
异步处理/系统解耦,数据同步/流量削峰
缓冲队列/任务队列/消息队列,请求队列/数据总线队列
Disruptor+Redis队列
基于Canal实现数据异构