一、高并发 1、异步并发 同步阻塞 异步Future 异步CallBack 异步编排CompletableFuture 请求缓存 请求合并 2、扩容 单体应用垂直扩容 单体应用水平扩容 应用拆分 数据库拆分水平/垂直拆分 使用Sharding-jdbc分库分表/读写分离 数据异构 任务系统扩容 3、队列 异步处理/系统解耦/数据同步/流量削峰 缓冲队列/任务队列/消息队列/请求队列/数据总线队列 Disruptor+Redis队列 基于Canal实现数据异构 4、应用级缓存 缓存回收策略: 空间/容量/时间 缓存回收算法FIFO/LRU/LFU Java堆/Java堆外/磁盘缓存 Guava/Ehcache/MapDB 5、HTTP缓存 浏览器缓存 HttpClient客户端缓存 Nginx代理缓存 6、多级缓存 分布式缓存 热点数据与更新缓存 更新缓存与原子性 缓存崩溃与快速修复 7、池化 数据库连接池 HttpClient连接池 线程池 二、高可用 2.1 超时与重试 代理层超时与重试 web窗口超时 中间件客户端超时与重试 数据库客户端超时 NOSQL客户端超时 业务超时 前端Ajax超时 2.2 回滚 事务回滚 代码 库回滚 部署版本回滚 数据版本回滚 静态资源回滚 2.3 压测与预案 2.3.1 系统压测 硅油方案:压测接口/并发量/压测策略/压测指标 压测报告:机器负载/QPS/响应时间/成功率 压测方式:线下/线上压测 读写/仿真/引流/隔离集群/缩容压测 单机/集群/离散/全链接路压测 2.3.2 系统优化和容灾 单机调优 架构优化/系统扩容 跨机房容灾 2.3.3 应急预案 网络接入层(DNS/LVS/HaProxy) 应用接入层(Nginx/OpenRestry) WEB应用层(Tomcat) 服务层(Dubbo) 数据层(Redis/DB) 2.3.4 监控报警 服务器监控/系统监控/JVM监控/接口监控 报警策略:监控时间段、报警阀值、通知方式 2.4 负载均衡 负载均衡算法 失败重试机制 健康检查机制 动态负载均衡 2.5 限流 限流算法 应用级限流 分布式限流 接入层限流 2.6 降级 降级预案 自动降级/开关降级 读服务/写服务降级 多级降级 配置中心 使用Hystrix降级 使用Hystrix熔断 2.7 隔离 进程线程隔离 集群/机房隔离 读写隔离 动静隔离 爬虫/热点隔离 使用Hystrix隔离 基于Servlet3的请求隔离