系列文章是博主对沈剑的《架构师训练营》分享内容的个人笔记总结,原内容公众号“成为架构师”。
知识串讲
- 早期单机系统的两个问题:性能瓶颈、耦合问题
- 解决性能问题早期最佳的方式是实施三大分离的伪分布式:动静分离、读写分离、前后台分离
- 解决耦合问题的方法是进行业务的垂直拆分,变为独立的子系统
- 如何实现子系统的高可用,引入反向代理,实现子系统的真正集群
- 引入反向代理之后,就多了反向代理的负载均衡和高可用问题
- 反向代理的负载均衡策略:random、轮询、一致性hash,四层和七层抓手
- 反向代理层的高可用:“影子主”模式,虚IP + Keepalived
- 在反向代理之前如何实现子系统的集群:DNS轮询,早期的DNS轮询无法完全的高可用
- 反向代理层(如nginx)出现瓶颈时可以引入操作系统层面的lvs,硬件层面的F5来实现多级反向代理,这是一个scale-up的方案;在此基础上使用DNS轮询可以实现理论上无限扩容的scale-out方案,且此时引入的DNS轮询是高可用的
- 子系统集群之后会引发session一致性问题,解决方法常有:session同步、客户端保存、反向代理层来进行hash之后转发、后端统一存储(其中三、四使用较为广泛)
- 静态资源访问加速方案:CDN