看的一个pdf说的。。大型网站架构演变

第一步:物理分离 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 的文件存储有深刻的掌握和理解,同时要求对采用的语言在文件这

                块的实现有深刻的掌握、

第十步:进入大型分布式应用时代和廉价服务器群梦想时代

                一、拆成分布式后须要提供一个高性能、稳定的通讯框架,而且须要支持多种不一样的通讯和

                远程调用方式;

                二、将一个庞大的应用拆分须要耗费很长的时间,须要进行业务的整理和系统依赖关系的控

                制等;

                三、如何运维(依赖管理、运行情况管理、错误追踪、调优、监控和报警等)好这个庞大的

                分布式应用。

相关文章
相关标签/搜索