大型网站技术架构(一)--大型网站架构演化

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

        说道大型网站,就的先说大型网站的特色:高并发,大流量,高可用,海量数据等。下面就说说大型网站的架构演化过程吧。浏览器

一、初始阶段的网站架构

            初始阶段都比较简单,一般一台服务器就能够搞定一个网站了,看图。缓存

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

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

三、使用缓存改善网站性能

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

四、使用应用服务器集群改善网站的并发处理能力

         由于单一应用服务器可以处理的请求链接有限,在网站访问高峰时期,应用服务器会成为整个网站的瓶颈。所以使用负载均衡处理器势在必然。经过负载均衡调度服务器,可未来自浏览器的访问请求分发到应用的集群中的任何一台服务器上。session

 

五、数据库读写分离

         当用户达到必定规模后,数据库由于负载压力太高而成为网站的瓶颈。而目前主流的数据库都提供主从热备功能,经过配置两台数据库主从关系,能够将一台数据库的数据更新同步到另外一台服务器上。网站利用数据库这一功能实现数据库读写分离,从而改善数据库负载压力。架构

 

 

六、使用反向代理和CDN加上网站相应

       提升网站的访问速度,主要手段有使用CDN和反向代理。并发

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

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

    任何强大的单一服务器都知足不了大型网站持续增加的业务需求。分布式

     分布式数据库时网站数据库拆分的最后手段,只用在单表数据规模很是大的时候才使用。不到不得已时,网站更经常使用的数据库拆分手段是业务拆分,将不一样业务的数据部署在不一样的物理服务器上

 

八、使用NoSQL和搜索引擎

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

 

九、业务拆分

        大型网站为了应对日益复杂的业务场景,经过使用分而治之的手段将真个网站业务拆分红不一样的产品线。

         具体到技术上,也会根据产品线话费,将一个网站拆分红许多不一样的应用,每一个应用独立部署维护。应用之间能够经过超连接创建管理,也能够经过消息队列进行数据分发,固然最多的仍是经过访问同一个数据存储系统来构成一个关联的完整系统。

 

 

十、分布式服务

       因为每个应用系统都须要执行许多相同的业务操做,好比用户管理,session管理,那么能够将这些公用的业务提取出来,独立部署。