大型网站架构的成熟并不是一蹴而就的,是从最简单的架构做起,然后根据用户的需求,业务的扩张,一步一步进行改进从而实现的。大体发展轨迹整理如下:
参见
物理分离WebServer和数据库
数据库和应用之间互相影响,将其分为2台机器,从而提高响应速度,支持更高的流量。
增加页面缓存
squid缓存框架,减少数据库连接资源的竞争。
增加页面片段缓存
采用类似ESI之类的页面片段缓存策略,OK,于是开始采用ESI来做动态页面中相对静态的片段部分的缓存。
数据缓存
重复获取的数据信息的地方进行改进,比如获取用户信息。
缓存技术:Map数据结构、缓存算法、缓存框架本身的实现机制。
增加WebServer
解决可用性,缓解服务器压力。
负载均衡(LVS)、状态同步、缓存同步(分布式缓存)、共享文件技术分库
数据库写入、更新部分操作带来的资源竞争非常激烈,导致系统变慢。
使用数据库集群和分库策略。业务上做合理的划分。分表、DAL和分布式缓存
动态hash算法、consistenthash算法
DAL涉及到比较多的复杂技术,例如数据库连接的管理(超时、异常)、数据库操作的控制(超时、异常)、分库分表规则的封装等增加更多的WebServer
数据读写分离和廉价存储方案
进入大型分布式应用时代和廉价服务器群梦想时代
要求对通信、远程调用、消息机制等有深入的理解和掌握,要求的都是从理论、硬件级、操作系统级以及所采用的语言的实现都有清楚的理解。
最终的架构图: