大中型网站架构探秘

相信很多IT人士都有过搭建自己主页的经验,10多年前的个人主页都非常简单,很多由Frontpage构建,多属于静态HTML页面,最多加一点 特效而已。不过10年间,技术的进步是惊人的。现在,一个网站绝不可能仅仅由几个HTML页面构成。我们随便举一个例子,国内图片网站 yupoo.com,在 chinarank排名1000左右,而Alexa排名则为5000左右,这个网站不算大,就是这样一个中型站点,拥有超过60台服务器,架构中涉及的 Web服务器就包括了LighttpdApache和 nginx。Yupoo的流量不算大,就已经拥有了60台服务器,事实上,排名前几位的网站,都拥有成千上万台服务器,如何协调这些服务器之间的工作负 载,如何统一指挥调度,如何维护这些服务器硬件都是棘手的挑战。

负载均衡:

负载均衡是所有大中型网站必备的部署。显然,大型网站每天上千万独立IP的访问量,一个Web服务器根本承担不了,网站后台必需有多台服务器共同工 作,因此各种负载均衡技术就应运而生了。

较早的负载均衡是DNS负载均衡。原理很简单,只要在域名解析的时候,将多个地址配置成同一个域名,负载均衡就完成了。不同用户点击同一个域名的时 候,实际上只解析给用户一个地址,这样用户实际上访问的是不同的Web服务器,就减轻了每个服务器的负担。这个DNS负载均衡方法,一般而言是随机抽取地 址。DNS负载均衡早期被广泛使用,优点是简单易用,但是DNS负载均衡还是有一些问题存在。如果某一台服务器发生了故障,而DNS的下一个刷新周期又没 到,这样就可能导致某些用户无法访问站点的情况发生。而另一个缺点在于DNS负载均衡随机性太强,比如一段时间内众多访问都被指向同一个地址,而另外的地 址却闲置,就造成了局部繁忙的不良现象。而且有时某处服务器正在运行其他应用而处于繁忙状态,DNS负载均衡也无从得知,而依旧平均的解析域名。

稍微复杂一点的负载均衡,是反向代理,当外部有请求到代理服务器,代理服务器再将该请求均匀的转发到内网的服务器上。这种方式被广泛采用,比如说上 面提到的又拍网yupoo.com,就采用了nginx作为反向代理。此外,现在还可以购买专业的硬件设备,比如 Plentyoffish.com(全球最大的婚介网站)就采用了网捷网络公司的Web交换器ServerIron作为硬件负载均 衡,ServerIron 能够有效地处理 16,000,000个并发连接,并且可以改善服务器负载均衡和缓冲转换,像ServerIron这类的硬件产品并非只有网捷一家提供,由于大型网站预算 充裕,因此也可以选择一些其他的硬件设备来做负载均衡。当然了,我们也别忽略了最基本的软件负载均衡——Windows Server就带有这样的功能。

负载均衡还有一个极为简单的方法,就是建立镜像站点。比如华军软件或者天空软件,都直接采用了镜像站点。这个方式很直接,省去了很多麻烦。以华军软 件园为例,登陆华军软件园的时候,我们将有多种选择,可选电信、网通等网络;而下载某一软件的时候,为了使用户得到更快的速度,天空和华军在中国各地都安 排了服务器,可以提供距离最近的下载服务。不过,也有一些麻烦,就是每一次选择都是人工手动选择。总之,这一系列负载均衡方法,都得以让大型网站的负载均 匀,不会有哪个服务器有太大的压力。

CDN:

CDN( Content Delivery Network),内容分发网络也是大型网站必备的部署之一。CDN的原理不难理解,就是将网页内容存放到离用户更近的缓存服务器上,减少路由,从而加快 远距离的访问速度。比如说,你随意登陆一个国外小站,速度可能很慢。因为国外网站到国内的最终客户端的路径冗长,但是如果你登陆部署了CDN的网站,比如 Plentyoffish.com,你会发现速度非常快,跟国内的网站访问速度差异已经无法从感知上判断。依照Cache存放的位置不同,CDN也有一些 类别,不同的网站会根据具体需求,有不同的选择。CDN通常是由独立的CDN商提供的。举一个例子,就是网易,我的查询时间是2008年2月28日,我们 发现,同一个域名下的有很多个IP地址,这就说明了首页CDN的部署。

C:>nslookup www.163.com

Server: ns.lnpta.net.cn

Address: 202.96.64.68

Non-authoritative answer:

Name: www.cache.split.netease.com

Addresses: 202.108.9.37, 202.108.9.38, 202.108.9.39, 202.108.9.51

202.108.9.52, 202.108.9.31, 202.108.9.32, 202.108.9.33, 202.108.9.34

202.108.9.36

Aliases: www.163.com

而我们如果查询一个简单的个人网站,则不可能有CDN;另外,如果有兴趣,我们也可以仔细察看一个网站多个二级域名的CDN情况。

平台设计:

大型网站一般都有着非常复杂的与用户交互的内容,必须大量调用数据库,因此一个完善的数据库设计对于大型网站非常重要。例如上面提到的 Plentyoffish.com,这个站其实是个人网站,但流量大的惊人,该网站有一个主要的数据库,两个搜索数据库,早些时 候,plentyoffish.com的数据库设计问题频频,经常到数据库堵塞,所以站长花费时间最多的地方就是数据库优化。数据库优化没有什么特别的捷 径,其实很少有一次成型的完美数据库构建,只能是按照特定的需要来设计数据库,如有不足再去着手改进。不过大型网站还是有一些共性,比如说图片存储单独使 用图片数据库,尽量使用静态页面来减少数据库调用等等。

还有很多大型网站,都有着非常深厚的技术实力,可以开发属于自己的平台。比如说谷歌,Google.com就有着自己独特的平台,主要包括 GFS、MapReduce和 BigTable。因为海量数据存储,所以常规的数据库调用查询是非常恐怖的,每次查询都将调用百亿个页面,成千上万个并发检索足以使得谷歌系统崩溃,因 此Google File System将大量页面以独特的方法压缩之后再提供检索;整个系统一共包括超过两百个集群,再由MapReduce来协同作业。不仅仅谷歌,比如百度、中 搜等等网站也都有自己研发的独特的平台。

硬件配置:

大型网站的硬件配置一定就好吗?答案是否定的。比如说全球最大的网站谷歌,google.com的整个架构的基础是几十万台普通的PC级别服务器。 谷歌一些服务器的细节为商业机密,但是根据谷歌已经披露的资料显示,在2006年之前谷歌拥有45万台服务器,这些服务器都是非常普通的PC级服务器,甚 至硬盘接口都还是有些过时的IDE接口。这也是谷歌的独特架构决定的,而对比谷歌,维基百科则拥有非常强势的服务器,全部为SCSI硬盘,而且主要的主机 中都有多达6块硬盘,超过16GB内存。这比较容易理解,因为谷歌在全球拥有很多个数据中心,员工数量众多,完全有能力管理数以万计服务器的运行,而维基 百科则为非营利机构,主要依靠捐赠生存,员工数量非常稀少,因此必须配备强势的服务器。其实,每个网站都应该根据自己独特的情况来配置硬件,目前 1TB SATA硬盘已经步入了量产阶段,可是2年以前1TB的硬盘只能通过RAID 0来实现,可见硬件的更新速度非常惊人,所以即便预算充裕,在配置服务器的时候也应该多考虑实际用途,而不一定要拥有最好的配置。

总结:

以上只是大型网站的概括总结,其实每个网站都有自己独特的一面,所以以上的每一条规则都未必是死规定。比如说着重沟通的Twitter.com,本 质就是一个异步聊天室,因此静态页面就不见的有必要。总之,网站架构没有死定律,只要合适网站的,就是好的架构。

时间: 2024-10-12 21:49:20

大中型网站架构探秘的相关文章

大中型网站技术架构浅析 - 实时通信

本文所讲述的『实时通信』主要围绕浏览s器端和服务器端之间的实时通信.大中型网站技术架构浅析 系列之一. 实时通信主要分3大类: 1. Pull技术,轮询(Polling) 客户端定时轮询请求,服务器端立刻返回. 优点:短链接,服务器处理方便,支持跨域. 缺点:有一定延迟 微博未读微博数和未读消息(评论,@)就是用polling实现的. 应用场景:对实时性要求不高的应用,如新微博提示,评论提示,回复提示等. 2. Push,反向Ajax(Reverse Ajax)或者叫Comet. 实现方式主要有

大中型网站集群架构企业级高标准全自动实战项目征集

大中型网站集群架构企业级高标准全自动实战 发布本博文目标: 老男孩教育全新期中集群架构项目实战(老男孩老师亲自带队) 1)征集网友或老男孩教育学生资源3-5人. 2)树立老男孩教育运维班期中集群架构项目标杆(期末的的架构会更精彩) 3)共同完成老男孩老师第一本书的结尾项目实战项目. 4)将结合23期运维班毕业前的期末架构项目出书(全自动化大型网站集群搭建优化) 5)让支持老男孩教育网友或老男孩教育学生得到锻炼和成长.享受出书作者待遇. 具体项目将以10台左右VM资源进行部署和演示,规模可以扩展到

整理大型网站架构必知必会的几个服务器知识

最近看书及系统开发部署过程中的一些心得,再对照自己之前的从业经验,很多都是听闻而已,当然也有一些已经很熟悉,有的正在搞,有的未来希望可以着手付诸实施,留此存照. 1.负载均衡服务器 负载均衡服务器主要作用是实现某些类型服务器的规模扩展.比如对于系统前端的web服务器和后端的数据库服务器,想通过加服务器实现N+1横向扩展,通过多台服务器负载分担压力,负载均衡必不可少. 2.web服务器 最常见,内存要求不是很高但cpu要求较高,主要用于部署各种web应用,如带界面的web页面.不带界面的web服务

网站架构资料集(转)

add by zhj:很多文章是转自www.itivy.com,很可惜,这个网站已经无法访问,不过,你可以用Google搜索一下这些文章,另外 各大网站架构总结笔记 也能看到部分转载的原文. 原文:http://www.diguage.com/archives/41.html 扯扯蛋 以前见过零零散散地介绍一些知名网站架构的分析文章.最近D瓜哥也想研究一下各大知名网站的架构.所以,就搜集了一下这方面资料.限于时间问题,这篇文章分享的文章并没有都看完,所以不保证所有文章的质量.另外,如果有朋友发现

细说五层网站架构

目前网站架构一般分为网页缓存层.负载均衡层.Web层和数据库层.文件服务器层.我们可以依次用这五层对网站架构进行讨论,为了增强说服力,我将用如下三个并发较大的生产环境来说明. q   电子商务网站(并发最大峰值2900,日PV500万左右) q   电子广告网站(并发最大峰值1500,日PV150万左右) q   大型CDN门户广告网站(并发最大峰值5000,日PV5000万左右) 1.网页缓存层 首先说网页缓存层,比如CDN租凭,其效果比公司自己部署Squid/Varnish要好,它们专业.价

java架构师、高性能、高并发、高可用、高可扩展、性能优化、集群、电商网站架构

15套java架构师.集群.高可用.高可扩展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布式项目实战视频教程 视频课程内容包含: 高级Java架构师包含:Spring boot.Spring  cloud.Dubbo.Redis.ActiveMQ.Nginx.Mycat.Spring.MongoDB.ZeroMQ.Git.Nosql.Jvm.Mecached.Netty.Nio.Mina.性能调优.高并发.to

网站架构设计

从大型网站技术架构_核心原理与案例分析   李智慧   一书中领悟到的东西.我们的技术只有基础牢固了才能创新,本书中作者讲述了网站架构的发展历程.其中从最简单的  LAMP架构到应用与数据分离,然后是使用缓存提高客户体验度.再到分层,数据库的读取分离,集群,分布式部署等.处理网站高并发的问题肯定会牵扯到高并发,现在web的开发都是支持多线程的,但是多线程造成的数据类型不一致的bug也是常见的问题.在此作者提过使用线程安全的无状态对象.比如 单例模式的对象都是无状态的.每次请求都是创建新对象.有r

大型网站架构系列:电商网站架构案例(3)

本文章是电商网站架构案例的第三篇,主要介绍数据库集群,读写分离,分库分表,服务化,消息队列的使用,以及本电商案例的架构总结. 6.5数据库集群(读写分离,分库分表) 大型网站需要存储海量的数据,为达到海量数据存储,高可用,高性能一般采用冗余的方式进行系统设计.一般有两种方式读写分离和分库分表. 读写分离:一般解决读比例远大于写比例的场景,可采用一主一备,一主多备或多主多备方式. 本案例在业务拆分的基础上,结合分库分表和读写分离.如下图: (1)       业务拆分后:每个子系统需要单独的库:

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

第一章:大型网站架构演化 九层之台,始于垒土:千里之行,始于足下. 对于网站的发展,亦是如此,从上世纪90年代开始,互联网经历了20多年的发展,发生了翻天覆地的变化,今天,全球有一半的人使用互联网,从信息检索到实时通信,从电子购物到文化娱乐,互联网渗透到了生活的每一个角落.但是,构建一个高性能的网站,绝非一朝一夕可以完成,我们来看下,作为一个大型网站系统应有的特点: 1.大型网站系统应有的特点 高并发,大流量:需要面对高并发用户,大流量访问.举个例子,去往迪拜的飞机有200张票,但是有100w人