如何设计高性能、高并发、高可用的系统。
- 系统架构三个利器:RPC服务组件、消息中间件(交互异步化、流量削峰)、配置管理(灰度发布、降级);
- 无状态:接口层最重要的就是无状态,将有状态的数据剥离到数据库或缓存中;
- 如何改善延时:找关键路径(“28原则”)、空间换时间,如各级缓存;时间换空间,如传输压缩,解决网络传输的瓶颈;多核并行,减少锁竞争;更适合的算法和数据结构;通过性能测试和监控找出瓶颈;减少系统调用和上下文切换;
- 如何提高吞吐量:复制、扩容、异步化、缓存;
- 如何保障稳定性:提高可用性、分组和隔离、限流、降级、监控和故障切换;
- 理解高可用系统:要做到数据不丢,就必需要持久化;要做到服务高可用,就必需要有备用(复本),无论是应用结点还是数据结点;要做到复制,就会有数据一致性的问题;我们不可能做到100%的高可用,也就是说,我们能做到几个9个的SLA;