(十三)本章小结:百万流量,这些技术够用了
单体ALL in one 架构,遇到什么问题,架构如何演进?
(1)技术不炫技,以解决业务问题为导向;
(2)系统改造尽可能小的架构方案;
(3)以最快的速度,提升系统的性能,解决遇到的问题;
问题一:如何突破单机资源限制,提升性能?
架构演进:伪分布式,提升性能
三大分离
(1)动静分离
(2)读写分离(引发读写延时新问题)
(3)前台后台分离
问题二:如何解除耦合,缩小故障影响范围?
架构演进:垂直拆分,解耦
垂直拆分
(1)业务垂直拆分
(2)代码垂直拆分(子系统解耦)
(3)数据库垂直划分(数据量降低,延时缓解)
(4)研发团队垂直划分(专业化,效率提升)
问题三:如何保证垂直拆分后,子系统的高可用?
架构演进:反向代理
(1)子web系统的性能,不再受到单台机器资源限制,可以扩展;
(2)子web系统,实现了高可用(伪集群->真集群)
问题四:真集群后,如何做负载均衡?
随机,轮询,静态权重,一致性,四层转发以及七层转发(nginx,lvs,f5)
问题五:反向代理,如何保证高可用?
keepalived+vip
问题六:反向代理技术出现之前,接入层如何扩展?
DNS轮询
问题七:多层反向代理,如何还有性能瓶颈呢?如何做到,无限性能?
还是DNS轮询,实施多层反向代理的扩容
问题八:session一致性如何保障?
方案三:反向代理hash一致性(四层,七层)
方案四:后端统一存储法
问题九:静态资源如何加速?
CDN!!!
CDN如何就近访问?
CDN架构:智能DNS+源+镜像
保证一致性的最佳实践
(1)资源更新,采用拉(镜像拉源),而不是推(源推送镜像);
(2)常更新的静态资源,加上版本号;
还有哪些架构实践:
(1)分层服务化
(2)服务化之后的高可用,高性能,负载均衡
(3)数据库极限优化
(4)架构优化万金油,缓存最佳实践
(5)高并发下的一致性
(6)...