
文章只是抛砖引玉。注重思路,细节大家可以课后深究,往往思路比方法更重要。
此阶段我们的架构思路是什么呢?
技术不炫技,以解决业务问题为导向
系统改造尽可能小的架构方案
以最快的速度,提升系统性能以解决遇到问题
Q1:如何突破单机的性能限制,提升性能
(一)伪分布式,提升性能
动静分离:"静态页面和动态页面,分开不同的系统访问"
读写分离(分组),水平切分(分层)
前台和后台的分离
Q2:如何解除耦合,缩小故障影响?
业务垂直拆分
(1)业务垂直拆分
(2)代码垂直拆分(子系统解耦)
(3)数据库垂直拆分(数据量降低,延时缓解)
(4)研发团队垂直拆分(专业化,效率提升)
Q3:垂直拆分后,子系统如何做到高可用?
反向代理,可以解决什么问题?
(1)子web系统的性能,不再受到单台机器资源的限制,可以扩展
(2)子web系统,实现了高可用(伪集群->真集群)
DNS轮询,实现接入层扩展
Q4:真集群后,如何做负载均衡
随机、轮询、静态权重、一致性、四层转发、七层转发
Q5:实施负载均衡后,站点实现了高可用,那负载均衡怎么实现高可用?
“影子主”的架构方案,使用keeplived+VIP的方式保证反向代理层的高可用,对外提供的是虚IP,对应用层是透明的。
Q6:反向代理接入之前,接入层是如何扩展的呢?
DNS轮询
Q7:多层的反向代理,如果还有性能瓶颈呢?如何做到,无限性能?
DNS轮询
Q8:session一致性如何保证?
(1)反向代理hash一致性

四层hash(ip)

七层hash(head+sid)
(2)后端统一存储法
Q9:静态资源如何加速
CDN!
CDN如何就近

如果流量达到百万甚至是千万呢?
还有哪些架构实践
1.分层服务化
2.服务化之后的高可用,高性能,负载均衡
3.数据库极限优化
4. 架构优化的万金油,缓存如何设计
5.高并发下的一致性
......

