大型网站架构演化<二>
- 使用反向代理和CDN加速网站响应
CDN和方向代理的基本原理都是缓存,区别是CDN部署在网络提供商的机房,使用户在请求网站服务时,可以从距离自己最近的网络提供商机房获取数据;而方 向代理则部署在网络的中心机房,当用户请求到达中心机房后,首先访问的服务器是反向代理服务器,如果反向代理服务器中缓存着用户请求的资源,就将其直接返 回给用户。使用CDN和方向代理的目的都是尽早返回数据给用户,一方面加快用户访问速度,另一方面也减轻后端服务器压力。
- 使用分布式文件系统和分布式数据库系统
数据库经过读写分离后,从一台服务器拆成两台服务器,但是随着网站业务的发展仍然不能满足需求,这是需要使用分布式数据库,文件系统也一样需要使用分 布式文件系统。分布式数据库是网站数据库拆分的最后手段,只在表单数据规模非常庞大的时候才使用。更常用的数据库拆分手段是业务分库,将不同业务的数据库 部署在不同的物理服务器上。
- 使用NoSql和搜索技术
随着网站业务越来越复杂,对于数据存储和检索的需求也越来越复杂,网站需要采用一些非关系数据库技术如NOSQL和非关系数据库查询技术如搜索引擎。
NOSQL和搜索引擎都是源自于互联网的技术手段,对可伸缩性的分布式特征具有更好的支持。
- 业务拆分
大型网站为了应对日益复杂的业务场景,通常通过将整个网站业务分成不同的产品线。根据产品线划分,将一个网站拆分成许多不同的应用,每个应用独立部署维护。 应用之间可以通过一个超链接建立关系(在首页的导航链接每个都指向不同的应用地址),也可以通过消息队列进行数据分发,当然最多的还是通过访问同一个数据 存储系统来构成一个关联的完整系统。
- 分布式服务
随着业务拆分越来越小,存储系统越来越大,应用系统的整体复杂度呈指数级增加,部署维护越来越难。由于所有应用要和所有数据系统连接,在数万台服务器规 模的网站中,这些连接的数据是服务器规模的平方,导致存数据库连接资源不足,拒绝服务。既然每一个应用系统都需要执行许多相同的业务操作,你如用户管理、 商品管理等,那么可以将这些共同的业务提取出来,独立部署。由这些可复用的业务连接数据库,提供业务服务,而应用系统只需要管理用户界面,通过分布式调用 共同业务服务完成具体业务操作。
网站的价值在于它能为用户提供什么价值,在于网站能做什么,而不在于它是怎么做的。小型网站的最需要做的就是为用户提供良好的服务来创造价值。
大型网站架构和核心价值是随网站所需灵活应付
驱动大型网站技术发展的主要力量是网站的业务发展
3.网站架构的误区
在大型网站发展过程中有如下几个容易出现的误区
- 一味追随大公司的解决方案。大公司的经验和成功模式固然重要,值得学习借鉴,但如果因此而变得盲从,就会在结构演化的道路上迷失。
- 为了技术而技术。技术是为了业务而存在的。脱离网站业务发展的实际,一味追求时髦技术是没有意义的。
- 企图用技术解决所有问题。技术是用来解决业务问题的,而业务问题,也可以通过业务手段去解决。