第一步:物理分离 webserver 和数据库web
将应用和数据库从物理上分离,变成了两台机器算法
第二步:增长页面缓存数据库
例如 squid缓存
第三步:增长页面片断缓存服务器
例如 ESI 等cookie
第四步:数据缓存网络
缓存技术,包括像 Map 数据结构、缓存算法、所选用的框架自己的实现机制等session
第五步: 增长 webserver数据结构
一、如何让访问分配到这两台机器上,这个时候一般会考虑的方案是 Apache 自带的负载均衡负载均衡
方案,或 LVS 这类的软件负载均衡方案;
二、如何保持状态信息的同步,例如用户 session 等,这个时候会考虑的方案有写入数据库、
写入存储、cookie 或同步 session 信息等机制等;
三、如何保持数据缓存信息的同步,例如以前缓存的用户数据等,这个时候一般会考虑的机
制有缓存同步或分布式缓存;
四、如何让上传文件这些相似的功能继续正常,这个时候一般会考虑的机制是使用共享文件
系统或存储等;
第六步:分库
这一步更多的是须要从业务上作合理的划分,以实现分库,具体技术细节上没有其余的要求
第七步:分表、DAL 和分布式缓存
分表更多的一样是业务上的划分,技术上涉及到的会有动态 hash 算法、consistent hash 算法
等;
DAL 涉及到比较多的复杂技术,例如数据库链接的管理(超时、异常)、数据库操做的控
制(超时、异常)、分库分表规则的封装等;
第八步:增长更多的 webserver
一、Apache 的软负载或 LVS 软负载等没法承担巨大的 web 访问量(请求链接数、网络流量等)
的调度了,这个时候若是经费容许的话,会取的方案是购 买硬件负载,例如 F五、Netsclar
、Athelon 之类的,如经费不容许的话,会取的方案是将应用从逻辑上作必定的分类,然
后分散到不一样的软负载集群中;
二、原有的一些状态信息同步、文件共享等方案可能会出现瓶颈,须要进行改进,也许这个
时候会根据状况编写符合网站业务需求的分布式文件系统等;
在作完这些工做后,开始进入一个看似完美的无限伸缩的时代,当网站流量增长时,应对的
解决方案就是不断的添加 webserver。
第九步:数据读写分离和廉价存储方案
数据读写分离要求对数据库的复制、standby 等策略有深刻的掌握和理解,同时会要求具有
自行实现的技术;
廉价存储方案要求对 OS 的文件存储有深刻的掌握和理解,同时要求对采用的语言在文件这
块的实现有深刻的掌握、
第十步:进入大型分布式应用时代和廉价服务器群梦想时代
一、拆成分布式后须要提供一个高性能、稳定的通讯框架,而且须要支持多种不一样的通讯和
远程调用方式;
二、将一个庞大的应用拆分须要耗费很长的时间,须要进行业务的整理和系统依赖关系的控
制等;
三、如何运维(依赖管理、运行情况管理、错误追踪、调优、监控和报警等)好这个庞大的
分布式应用。