网站架构:大中型网站WebSite架构探秘

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

  负载均衡:

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

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

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

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

  CDN:

  CDN( Content Delivery Network)内容分发网络也是大型网站WebSite必备部署的CDN原理不难理解就是将网页内容存放到离用户更近缓存Cache服务器上减少路由从而加快远距离访问速度比如说你随意登陆个国外小站速度可能很慢国外网站WebSite到国内最终客户端路径冗长但是如果你登陆部署了CDN网站WebSite比如 Plentyoffish.com你会发现速度非常快跟国内网站WebSite访问速度差异已经无法从感知上判断依照Cache存放位置区别CDN也有些类别区别网站WebSite会根据具体需求有区别选择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

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

  平台设计:

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

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



  硬件配置:

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

  整理总结:

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



Tags:  网站架构技术 网站架构图 网站组织架构 网站架构

延伸阅读

最新评论

发表评论