看完了有一本书。就应该有所收获,有所总结,近期把《大型站点技术架构》一书给看完了,给人的印象实在深刻。再加上之前也搞过书本上讲的反向代理和负载均衡以及session独立存储和缓存。因此书本看起来还是挺通俗易懂的,并且作者李智慧给人的印象(书本)也挺深刻的,我从这本书中也学到了很多,了解的很多,可是理解还是比較抽象的。写出来才是真正的理解,因此准备写一系列的博客来介绍和加深理解大型站点技术架构。

        说道大型站点,就的先说大型站点的特点:高并发,大流量。高可用,海量数据等。以下就说说大型站点的架构演化过程吧。

1、初始阶段的站点架构

    初始阶段都比較简单,通常一台server就能够搞定一个站点了,看图。

大型站点架构与原理 大型站房_反向代理

2、应用服务和数据服务分离

        随着站点业务的发展。一台server逐渐不能满足需求;这时候就须要将应用和数据分离,如图。

大型站点架构与原理 大型站房_缓存_02

3、使用缓存改善站点性能

        毫无疑问。如今的站点基本上都会使用缓存,即:80%的业务訪问都会集中在20%的数据上。

大型站点架构与原理 大型站房_大型站点架构与原理_03

4、使用应用server集群改善站点的并发处理能力

   由于单一应用server能够处理的请求连接有限,在站点訪问高峰时期。应用server会成为整个站点的瓶颈。因此使用负载均衡处理器势在必定。通过负载均衡调度server,可将来自浏览器的訪问请求分发到应用的集群中的不论什么一台server上。

大型站点架构与原理 大型站房_大型站点架构与原理_04


5、数据库读写分离

     当用户达到一定规模后,数据库由于负载压力过高而成为站点的瓶颈。而眼下主流的数据库都提供主从热备功能,通过配置两台数据库主从关系,能够将一台数据库的数据更新同步到还有一台server上。站点利用数据库这一功能实现数据库读写分离,从而改善数据库负载压力。

大型站点架构与原理 大型站房_大型站点架构与原理_05



6、使用反向代理和CDN加上站点对应

       提高站点的訪问速度。主要手段有使用CDN和反向代理。

      CDN和反向代理的基本原理都是缓存,差别在于CDN部署在网络提供商的机房。而反向代理是部署在站点的中心机房,当用户请求到达中心机房后,首先訪问的反向代理,假设反向代理缓存着用户请求的资源,则直接返回给用户。

大型站点架构与原理 大型站房_数据库_06

7、使用分布式文件系统和分布式数据库系统

    不论什么强大的单一server都满足不了大型站点持续增长的业务需求。

     分布式数据库时站点数据库拆分的最后手段。仅仅用在单表数据规模很大的时候才使用。

不到不得已时,站点更经常使用的数据库拆分手段是业务拆分。将不同业务的数据部署在不同的物理server上

大型站点架构与原理 大型站房_大型站点架构与原理_07

 

8、使用NoSQL和搜索引擎

       搜素引擎也基本已经形成如今大型站点必须提供的功能了,站点须要採用一些非关系数据库技术如NoSQL和非数据库查询技术如搜索引擎。

大型站点架构与原理 大型站房_大型站点架构与原理_08


9、业务拆分

        大型站点为了应对日益复杂的业务场景,通过使用分而治之的手段将真个站点业务拆分成不同的产品线。

         详细到技术上,也会依据产品线话费。将一个站点拆分成很多不同的应用。每个应用独立部署维护。应用之间能够通过超链接建立管理,也能够通过消息队列进行数据分发,当然最多的还是通过訪问同一个数据存储系统来构成一个关联的完整系统。

大型站点架构与原理 大型站房_反向代理_09



10、分布式服务

       由于每个应用系统都须要运行很多同样的业务操作,比方用户管理,session管理。那么能够将这些公用的业务提取出来,独立部署。

大型站点架构与原理 大型站房_缓存_10