1.2 大型网站架构演化发展历程

来源:互联网 发布:在淘宝店上怎样上图 编辑:程序博客网 时间:2024/05/21 18:39

大型网站的技术挑战主要来自于庞大的用户量,高并发的访问和海量的数据
1. 初始阶段的网站构架
大型网站都是从小型网站发展而来,网站构架也是一样,是从小型网站构架逐步演化而来,只需要一台服务器就绰绰有余
2. 应用服务和数据服务分离
随着网站业务的发展,一台服务器逐渐不能满足需求,越来越多的用户访问导致性能越来越差,越来越多的数据导致存储空间不足,这时就需要将应用和数据分离,如:应用和数据分离后整个网站使用三台服务器,应用服务器、文件服务器和数据库服务器,分离后不同特性的服务器承担不同的服务角色,网站处理并发和储存数据的能力得到了很大改善。
3. 使用缓存改善网站性能
网站访问特点和现实世界的财富分配一样遵循二八定律:80%的业务访问集中在20%的数据上,购物时买家大部分的焦点都集中在少部分评价良好的商品上,百度搜索的关键词也集中在少部分热词上。
既然大部分的业务集中在一小部分数据上,那么把这一小部分数据缓存在内存中可以减少一部分数据库的压力,提高网站的访问速度。
4. 使用应用服务器集群改善网站的并发处理能力
使用集群时网站解决高并发、海量数据问题的常用手段,当一台服务器的处理能力、存储空间不足时,不要企图去换更强大的服务器,更恰当的做法时增加一台服务器,分担原有的服务器的访问及储存压力。
对于网站构架而言,只要能通过增加一台服务器的方式改善负载压力,就可以以同样的方式持续增加服务器,不断改善系统性能,实现系统的可伸缩性。
5. 数据库读写分离
网站在使用缓存后,使绝大部分数据读操作都可以不通过数据库就可以完成,但是还有一部分的读操作和全部的写操作都需要访问数据库,目前大部分主流数据库都提供主从功能,可以将一台数据服务器的数据更新同步到另一台服务器上,网站利用数据库的这一功能实现数据库的读写分离,改善数据库的负载压力。
应用服务器在写数据的时候,访问主数据库,主数据库通过主从复制机制将数据更新到从数据库,这样当应用服务器读取数据时可以通过从数据库获得数据。
6. 使用反向代理和CDN加速网站响应
随着网站业务不断发展,用户规模越来越大,网络情况复杂等因素,不同地区访问网站时速度差别极大,为提供更好的用户体验,需要加速网站的访问速度。
CDN和反向代理的原理基本都是缓存
CDN部署在网络供应商的机房,使用户在请求网站服务时,可以从距离自己更近的机房获取数据
反向代理部署在网站的中心机房,当用户请求达到中心机房后,首先访问的服务器是反向代理服务器,如果反向代理服务器中缓存着用户请求的资源,就将其直接返回给用户。
使用反向代理和CDN加速网站响应,都是尽早将数据返回给用户,一方面加快用户访问速度,另一方面减轻后端服务器压力。
7. 使用分布式文件系统和分布式数据库系统
任何强大的单一服务器都满足不了大型网站持续增长的业务需求,数据库读写分离后,从一台服务器拆分成两台甚至服务器,但是随着网站业务的发展仍不能满足需求。
分布式数据库是网站数据库拆分的最后手段,只有在单表数据库规模非常庞大的时候才使用。网站更常用的数据库拆分手段是业务分库,将不同业务的数据库部署在不同的物理服务器上。
8. 使用NoSQL和搜索引擎
随着网站业务越来越复杂,对数据存储和检索的需求越来越复杂,网站需采用一些非关系型数据库技术如NoSQL和非数据库查询技术如搜索引擎。
NoSQL和搜索引擎都是源自互联网的技术手段,可对伸缩的分布式特性具有更好的支持,应用服务器则通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦
9. 业务拆分
大型网站为了应对日益都咋的业务场景,通过使用分而治之的手段将整个网站业务分成不同的产品线,如大型购物网站就会将首页、买家、买家等模块拆分成不同的产品线
10. 分布式服务
随着业务拆分越来越小,存储系统越来越庞大,应用系统整体的复杂度呈指数增长,部署维护越来越困难
既然每一个应用系统都需要执行许多相同的业务操作,比如用户管理、商品管理等,可以将这些共同的业务提取出来,独立部署。而应用系统只需要管理用户界面。

0 0