1. 大型网站架构演化

如果把上世纪90年代初CERN正式发布Web标准和第一个Web服务的岀现当做互 联网站的开始,那么互联网站的发展只经历了短短20多年的时间。在20多年的时间里, 互联网的世界发生了巨大变化,今天,全球有近一半的人口使用互联网,人们的生活因 为互联网而产生了巨大改变。从信息检索到即时通信,从电子购物到文化娱乐,互联网 渗透到生活的每个角落,而且这种趋势还在加速。因为互联网,我们的世界正变得越来 越小。

同时我们也看到,在互联网跨越式发展的进程中,在电子商务火热的市场背后却是 不堪重负的网站架构,某些B2C网站逢促销必宕机几乎成为一种规律,而铁道部电子客 票官方购票网站的频繁故障和操作延迟更将这一现象演绎得淋漓尽致。

一边是企业在网站技术上的大量投入,一边却是网站在关键时刻的频繁宕机;一边
是工程师夜以继日地加班工作,一边却是网站故障频发新功能上线缓慢;一边是互联网 业务快速发展多领域挑战传统行业,一边却是网站安全漏洞频发让网民胆战心惊怨声载道。

如何打造一个高可用、高性能、易扩展、可伸缩且安全的网站何让网站随应用 所需灵活变动,即使是山寨他人的产品,也可以山寨的更高、更快、更强,一年时间用 户数从零过亿呢/p>

1.1大型网站软件系统的特点

与传统企业应用系统相比,大型互联网应用系统有以下特点。

  1. 高并发,大流量:需要面对高并发用户,大流量访问。Google日均PV数35亿,日
    均IP访问数3亿;腾讯QQ的最大在线用户数1.4亿(2011年数据);淘宝2012年“双 十一”活动一天交易额超过191亿,活动开始第一分钟独立访问用户达1000万。
  2. 高可用:系统7×24小时不间断服务。大型互联网站的宕机事件通常会成为新闻焦
    点,例如2010年百度域名被黑客劫持导致不能访问,成为重大新闻热点。
  3. 海量数据:需要存储、管理海量数据,需要使用大量服务器。Facebook每周上传的 照片数目接近10亿,百度收录的网页数目有数百亿,Google有近百万台服务器为全球用 户提供服务。
  4. 用户分布广泛,网络情况复杂:许多大型互联网都是为全球用户提供服务的,用户 分布范围广,各地网络情况千差万别。在国内,还有各个运营商网络互通难的问题。而 中美光缆的数次故障,也让一些对国外用户依赖较大的网站不得不考虑在海外建立数据 中心。
  5. 安全环境恶劣:由于互联网的开放性,使得互联网站更容易受到攻击,大型网站几 乎每天都会被黑客攻击。2011年国内多个重要网站泄露用户密码,让普通用户也直面一 次互联网安全问题。
  6. 需求快速变更,发布频繁:和传统软件的版本发布频率不同,互联网产品为快速适 应市场,满足用户需求,其产品发布频率是极高的。Office的产品版本以年为单位发布, 而一般大型网站的产品每周都有新版本发布上线,至于中小型网站的发布就更频繁了, 有时候一天会发布几十次。
  7. 渐进式发展:与传统软件产品或企业应用系统一开始就规划好全部的功能和非功能 需求不同,几乎所有的大型互联网站都是从一个小网站开始,渐进地发展起来的oFacebook 是伯克扎克同学在哈佛大学的宿舍里开发的;Google的第一台服务器部署在斯坦福大学 的实验室里;阿里巴巴则是在马云家的客厅里诞生的。好的互联网产品都是慢慢运营岀来的,不是一开始就开发好的,这也正好与网站架构的发展演化过程对应。

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

大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据,任何简 单的业务一旦需要处理数以P计的数据和面对数以亿计的用户,问题就会变得很棘手。 大型网站架构主要就是解决这类问题。

1.2.1初始阶段的网站架构

大型网站都是从小型网站发展而来,网站架构也是一样,是从小型网站架构逐步演 化而来。小型网站最开始时没有太多人访问,只需要一台服务器就绰绰有余,这时的网 站架构如图1.1所示。

1. 大型网站架构演化

应用和数据分离后,不同特性的服务器承担不同的服务角色,网站的并发处理能力
和数据存储空间得到了很大改善,支持网站业务进一步发展。但是随着用户逐渐增多, 网站又一次面临挑战:数据库压力太大导致访问延迟,进而影响整个网站的性能,用户 体验受到影响。这时需要对网站架构进一步优化。

1.2.3使用缓存改善网站性能

网站访问特点和现实世界的财富分配一样遵循二八定律:80%的业务访问集中在20% 的数据上。淘宝买家浏览的商品集中在少部分成交数多、评价良好的商品上;百度搜索 关键词集中在少部分热门词汇上;只有经常登录的用户才会发微博、看微博,而这部分 用户也只占总用户数目的一小部分。
既然大部分的业务访问集中在一小部分数据上,那么如果把这一小部分数据缓存在
内存中,是不是就可以减少数据库的访问压力,提高整个网站的数据访问速度,改善数 据库的写入性能了呢/p>

网站使用的缓存可以分为两种:缓存在应用服务器上的本地缓存和缓存在专门的分 布式缓存服务器上的远程缓存。本地缓存的访问速度更快一些,但是受应用服务器内存 限制,其缓存数据量有限,而且会出现和应用程序争用内存的情况。远程分布式缓存可 以使用集群的方式,部署大内存的服务器作为专门的缓存服务器,可以在理论上做到不 受内存容量限制的缓存服务,如图1.3所示。

1. 大型网站架构演化

通过负载均衡调度服务器,可将来自用户浏览器的访问请求分发到应用服务器集群 中的任何一台服务器上,如果有更多的用户,就在集群中加入更多的应用服务器,使应 用服务器的负载压力不再成为整个网站的瓶颈。

1.2.5数据库读写分离

网站在使用缓存后,使绝大部分数据读操作访问都可以不通过数据库就能完成,但 是仍有一部分读操作(缓存访问不命中、缓存过期)和全部的写操作需要访问数据库, 在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈。
目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可
以将一台数据库服务器的数据更新同步到另一台服务器上。网站利用数据库的这一功能, 实现数据库读写分离,从而改善数据库负载压力,如图1.5所示。

1. 大型网站架构演化

使用CDN和反向代理的目的都是尽早返回数据给用户,一方面加快用户访问速度, 另一方面也减轻后端服务器的负载压力。

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

任何强大的单一服务器都满足不了大型网站持续增长的业务需求。数据库经过读写 分离后,从一台服务器拆分成两台服务器,但是随着网站业务的发展依然不能满足需求, 这时需要使用分布式数据库。文件系统也是一样,需要使用分布式文件系统,如图1.7所
分布式数据库是网站数据库拆分的最后手段,只有在单表数据规模非常庞大的时候 才使用。不到不得已时,网站更常用的数据库拆分手段是业务分库,将不同业务的数据 库部署在不同的物理服务器上。

1. 大型网站架构演化

图1.8使用NoSQL系统和搜索引擎
NoSQL和搜索引擎都是源自互联网的技术手段,对可伸缩的分布式特性具有更好的 支持。应用服务器则通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多 数据源的麻烦。

1.2.9业务拆分

大型网站为了应对日益复杂的业务场景,通过使用分而治之的手段将整个网站业务 分成不同的产品线,如大型购物交易网站就会将首页、商铺、订单、买家、卖家等拆分 成不同的产品线,分归不同的业务团队负责。
具体到技术上,也会根据产品线划分,将一个网站拆分成许多不同的应用,每个应 用独立部署维护。应用之间可以通过一个超链接建立关系(在首页上的导航链接每个都 指向不同的应用地址),也可以通过消息队列进行数据分发,当然最多的还是通过访问同 一个数据存储系统来构成一个关联的完整系统,如图1.9所示。

1. 大型网站架构演化

大型网站的架构演化到这里,基本上大多数的技术问题都得以解决,诸如跨数据中 心的实时数据同步和具体网站业务相关的问题也都可以通过组合改进现有技术架构来解 决。
但事物发展到一定阶段,就会拥有自身的发展冲动,摆脱其初衷,向着使自己更强 大的方向发展。既然大型网站架构解决了海量数据的管理和高并发事务的处理,那么就 可以把这些解决方案应用到网站自身以外的业务上去。我们看到目前许多大型网站都开 始建设云计算平台,将计算作为一种基础资源出售,中小网站不需要再关心技术架构问 题,只需要按需付费,就可以使网站随着业务的增长逐渐获得更大的存储空间和更多的 计算资源。

来源:water___Wang

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月6日
下一篇 2021年4月6日

相关推荐