【读书笔记】《大型网站技术架构》网站架构的发展

对于一个网站来说,就和一个生命一样,一开始也许就是一个受精卵,只有简单的功能与需求,体积也非常的小,但是随着生命的发展,需求的增加,这个小小受精卵,就会慢慢变大,功能也会慢慢的细化,甚至会独立出来一些专门的器官,更甚者,还会组建一个组织,来完成一个复杂的功能。
对于一个网站架构来说也是一样最一开始只有一台服务器,应用程序、数据库、文件等所有资源都放在一台服务器上。通常的服务器操作系统是linux或者windows2004,应用程序使用php开发,然后部署在apache上,数据库使用mysql,汇集了各种免费开源软件及一台廉价服务器就可以开始网站的发展之路了。
初始阶段的网站架构
这一类型的网站架构适用于小微企业的官网部署。基本没有什么访问用户,也没有什么复杂的功能,只是满足企业在初始阶段的宣传推广作用。其实际功能就相当于一个企业的网上名片。
随着业务的发展,一台服务器逐渐不能满足需求,越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足。这时候需要将应用和数据分离,应用和数据分离后整个网站需要使用三台服务器:应用服务器、文件服务器和数据库服务器。功能不同,导致这三台服务器对硬件的要求是不同的,应用服务器需要处理大量的业务逻辑,因此需要更快更强大的cpu;数据库服务器需要快速磁盘检索和数据缓存,因此需要更快的硬盘和更大的内存;文件处理器需要储存大量的用户上传文件,因此需要更大的硬盘。
当业务再次发展的多一定规模,就需要使用缓存来改善网站的性能,这里就要引用一个定律就是二八定律,即80%的业务访问集中在20%的数据上,在网络上可以找到很多这样的例子,例如淘宝买家浏览的商品集中在少数成交量多,评价良好的商品上,百度搜索关键词集中在少数热门词汇上,所以说,在网络中,大部分业务都集中在一小部分上,那么如果把这一小部分数据缓存在内存中,就可以减小数据库的访问压力,提高整个网站的数据访问速度。
网站使用缓存
当我们的网站进一步发展,网站存在了高并发,海量数据的问题,那么我就得引用集群的概念,通过增加服务器的方式改善负载压力。其架构如图:
应用服务器集群部署
在网站使用缓存之后,使大部分数据读操作访问都可以不通过数据库就能完成,但是仍有一部分读操作和全部的写操作需要访问数据库,当用户达到一定规模之后,数据库的负载压力也是可以成为你网站发展的瓶颈。这时候就需要把读写进行分离。
随着网站业务不断发展,用户规模越来越大,不同地区的用户访问网站时候,速度差别极大,而现在互联网的发展导致消费者的选择越来越多,有研究表明,网站访问延和用户流失率成正相关,网站访问越慢,用户越容易失去耐心而离开。而网站发展到这个阶段,提高网站相应速度的手段主要有cdn和反向代理。
当网站发展到现在,这个网站已经由一个中小网站,逐渐转变成一个大型网站,但是还有一个坎儿,迈过去就可以称为一个大型网站了。任何一个强大的单一服务器都满足不了大型网站持续增长的业务需求,数据库经过读写分离后,从一台服务器拆分成两台服务器,凡是随着网站业务的发展依然是不能满足需求,这时候需要使用分布式数据库,文件系统也是一样,需要使用分布式文件系统。
在这里分布式我认为是一个网站的分水岭,当然我说肯定是业务发展到这一阶段必须使用分布式了,到这一阶段,平台的用户数量至少要达到十万级以上。否则就是没有必要,当然这个数量不是绝对的。当网站继续发展,业务越来越复杂,对数据的储存和检索需求也会越来越复杂,网站就需要引用一些非关系数据库技术如nosql和非数据库查询技术如搜索引擎。
当网站发展到现在,我们的业务将会非常的庞大,网站为了应对日益复杂场景,通过使用分而治之的手段将整个网站业务分成不同的产品线,如淘宝,京东等大型交易网站就会将首页、店铺、订单、买家、卖家等拆分成不同的产品线,分归不同的业务团队负责。
随着业务拆分越来越小,储存系统越来越大,应用系统的整体复杂度呈指数级增加,部署维护越来越困难。由于所有应用要和所有数据库系统连接,在数万台服务器规模的网站中这些连接的数目是服务器规模的平方。这时候就需要把服务也进行分布式。
今天的内容摘抄书上的内容较多,主要是小编自己总结也差不多是这样的,还不一定有人家作者的全面。因为架构这东西偏技术,技术都是死东西,说不出花来。在文章的结尾,小编说一下自己的心得,在我们现实中的网站基本上都是第一种架构就够用了,最多发展到集群,很少用到分布式。所以拥有一个从初始经历到最后阶段的架构师就是一个公司的财富,很少有这种人才。而在我们工作中也一定要结合实际进行部署服务器。要通过调查,客户流失不一定就是网站性能不好,一定要灵活应对,本章列举的例子也不是标准。网站的技术团队是为业务服务的,一切都是市场说了算。