日志分类:网站技术架构

大型网站的架构设计问题—-大型高并发高负载网站的系统架构

2008-06-25,星期三 | 分类:网站技术架构 | 94 views

随着中国大型IT企业信息化速度的加快,大部分应用的数据量和访问量都急剧增加,大型企业网站正面临性能和高数据访问量的压力,而且对存储、安全以及信息检索等等方面都提出了更高的要求……

本文中,我想通过几个国外大型IT企业及网站的成功案例,从Web技术人员角度探讨如何积极地应对国内大型网站即将面临的扩展(主要是技术方面,而较少涉及管理及营销等方面)矛盾。

一、 国外大型IT网站的成功之道
(一) MySpace
今天,MySpace已经成为全球众口皆碑的社区网站之王。尽管一流和营销和管理经验自然是每个IT企业取得成功的首要因素,但是本节中我们却抛弃这一点,而主要着眼于探讨在数次面临系统扩张的紧急关头MySpace是如何从技术方面采取应对策略的。
第一代架构—添置更多的Web服务器
MySpace最初的系统很小,只有两台Web服务器(分担处理用户请求的工作量)和一个数据库服务器(所有数据都存储在这一个地方)。那时使用
的是Dell双CPU、4G内存的系统。在早期阶段,MySpace基本是通过添置更多Web服务器来对付用户暴增问题的。但到在2004年早期,在
MySpace用户数增长到五十万后,其数据库服务器已经开始疲于奔命了。

全文阅读 »

解密淘宝网的开源架构

2008-06-17,星期二 | 分类:网站技术架构 | 145 views

0806期《程序员》——解密淘宝网的开源架构
淘宝网,是一个在线商品数量突破一亿,日均成交额超过两亿元人民币,注册用户接近八千万的大型电子商务网站,是亚洲最大的购物网站。那么对于淘宝网这样大规模的一个网站,我猜想大家一定会非常关心整个网站都采用了什么样的技术、产品和架构,也会很想了解在淘宝网中是否采用了开源的软件或者是完全采用的商业软件。那么下面我就简单的介绍一下淘宝网中应用的开源软件。
对于规模稍大的网站来说,其IT必然是一个服务器集群来提供网站服务,数据库也必然要和应用服务分开,有单独的数据库服务器。对于像淘宝网这样规模的网站而言,就是应用也分成很多组。那么下面,我就从应用服务器操作系统、应用服务器软件、Web Server、数据库、开发框架等几个方面来介绍一下淘宝网中开源软件的应用。
操作系统
我们首先就从应用服务器的操作系统说起。一个应用服务器,从软件的角度来说他的最底层首先是操作系统。要先选择操作系统,然后才是操作系统基础上的应用软件。在淘宝网,我们的应用服务器上采用的是Linux操作系统。Linux操作系统从1991年第一次正式被公布到现在已??走过了十七个年头,在PC Server上有广泛的应用。硬件上我们选择PC Server而不是小型机,那么Server的操作系统供我们选择的一般也就是Linux,FreeBSD, windows 2000 Server或者Windows Server 2003。如果不准备采用微软的一系列产品构建应用,并且有能力维护Linux或者FreeBSD,再加上成本的考虑,那么还是应该在Linux和 FreeBSD之间进行选择。可以说,现在Linux和FreeBSD这两个系统难分伯仲,很难说哪个一定比另外一个要优秀很多、能够全面的超越对手,应该是各有所长。那么在选择的时候有一个因素就是企业的技术人员对于哪种系统更加的熟悉,这个熟悉一方面是系统管理方面,另外一方面是对于内核的熟悉,对内核的熟悉对于性能调优和对操作系统进行定制剪裁会有很大的帮助。而应用全面的优化、提升性能也是从操作系统的优化开始的。
全文阅读 »

可伸缩性最佳实践:来自eBay的经验(转)

2008-06-16,星期一 | 分类:网站技术架构 | 81 views

作者 Randy Shoup译者 郭晓刚 发布于 2008年6月12日 下午7时5分

在eBay,可伸缩性是我们每天奋力抵抗的一大架构压力。我们所做的每一项架构及设计决策,身前身后都能看到它的踪影。当我们面对的是全世界数以亿计的用户,每天的页面浏览量超过10亿,系统中的数据量要用皮字节(1015或250)来计算——可伸缩性是生死交关的问题。

在一个可伸缩的架构中,资源的消耗应该随负载线性(或更佳)上升,负载可由用户流量、数据量等测量。如果说性能衡量的是每一工作单元所需的资源消 耗,可伸缩性则是衡量当工作单元的数量或尺寸增加时,资源消耗的变化情况。换句话说,可伸缩性是整个价格-性能曲线的形状,而不是曲线上某一点的取值。

可伸缩性有很多侧面——事务的方面、运营的方面、还有开发的方面。我们在改善一个Web系统的事务吞吐量的过程中学到了很多经验,本文总结了其中若 干关键的最佳实践。可能很多最佳实践你会觉得似曾相识,也可能有素未谋面的。这些都是开发和运营eBay网站的众人的集体经验结晶。

最佳实践 #1:按功能分割 全文阅读 »

eBay 的数据量

2008-03-04,星期二 | 分类:网站技术架构 | 115 views

作者:Fenng | English Version 【可以任意转载, 转载时请务必以超链接形式标明文章原始出处和作者信息及本声明】
网址:http://www.dbanotes.net/database/ebay_storage.html

作为电子商务领头羊的 eBay 公司,数据量究竟有多大? 很多朋友可能都会对这个很感兴趣。在这一篇
Web 2.0: How High-Volume eBay Manages Its Storage(从+1 GB/1 min得到的线索) 报道中,eBay 的存储主管 Paul Strong 对数据量做了一些介绍,管中窥豹,这些数据也给我们一个参考。

站点处理能力
平均每天的 PV 超过 10 亿 ;
每秒钟交易大约 1700 美元的商品 ;
每分钟卖出一辆车A ;
每秒钟卖出一件汽车饰品或者配件 ;
每两分钟卖出一件钻石首饰 ;
6 亿商品,2 亿多注册用户; 超过 130 万人把在 eBay 上做生意看作是生活的一部分。
在这样高的压力下,可靠性达到了 99.94%,也就是说每年 5 个小时多一点的服务不可用。从业界消息来看,核心业务的可用性要比这个高。 全文阅读 »

eBay 的应用服务器规模

2008-03-04,星期二 | 分类:网站技术架构 | 114 views

作者:Fenng | English Version 【可以任意转载, 转载时请务必以超链接形式标明文章原始出处和作者信息及本声明】

前面我在《eBay 的数据量》中介绍了一些道听途说来的关于互联网巨头 eBay 服务器架构的信息,不过还缺了一点关键数据。

在 Oracle 站点上的一篇题为 The eBay Global Platform and Oracle 10g JDBC 的白皮书,有能看到一些数据。

在 2004 年的时候,eBay 的应用服务器采用了 IBM WebSphere,部署在 WinNT 上,硬件是 Intel 双 CPU 奔腾服 务器。服务器数量是 2400 台。在《eBay 的数据量》中我们知道,eBay 的是集中式处理 Log 的,每天会有 2T 的 Log 数据产 生,现在只会更多。这些应用服务器分成不同的组,通过一个统一的 DAL(database access layer) 逻辑层访问 135 个数据库 节点。

这篇白皮书已经发布了两年,相信在这两年的时间里,服务器规模又会扩大了许多。

eBay 的 SOA 架构 V3 示意图如下:
http://www.dbanotes.net/Images/eBay1.jpg
这个图来自这里

以前我写的《这些大网站都用什么操作系统与 Web 服务器 ?》,还有网友质疑 eBay 的服务器不是 WinNT,现在倒是间接证明了 Web 服务器的确是 Windows 。

Flickr的幕后故事

2008-03-04,星期二 | 分类:网站技术架构 | 125 views

我们都看到 Flickr 的成功,而又有多少”精英”们了解过 Flickr 背后的过程是多么充满艰险。
Flickr 是全 CGI 的动态构架,并以一种 .gne 的脚本作为 CGI 程序语言。
不管网站制作菜鸟还是高手都会疑惑:gne 是哪种程序语言?
答案:gne 不是一种语言,Flickr 是以极为经典的 PHP + MySQL 方式实现的,在被 Yahoo 收购服务器搬入美国之前,使用了 21 台(69.90.111.101-121) Apache/PHP 做 Web、23 台图片服务器、另有 MySQL 服务器组成的数据库集群的 服务器数量未知。
现在估计使用的是 Yahoo 的负载均衡系统,对外只有一个 Web 的 IP 和图片服务器的 IP 了。  那为何 .php 的文件要改成  .gne 呢?以往有大型网站为向后兼容性考虑,隐藏以程序语言命名的脚本文件扩展名,比如 Baidu 隐藏了 .php(Google 的  http 服务器是自己写的,整合了脚本程序,个别页面是 .py–Python);
还有一些网站是改成自己网站名相关的扩展名,如 MSN 的群组则是 .msnw,榕树下是 .rs。
那Flickr 的 gne 是什么意思?我在维基百科的 Flickr 条目上找到了答案(中文Flickr 条目上没有写明) 。原来 GNE 是  Game NeverEnding 的缩写,Flickr 的开发者Ludicorp 在 2002-2004 年一直在开发这套以  Game NerverEnding 为名称的大型多人在线角色扮演游戏–一套基于浏览器的 Web 游戏系统,个人以为应该就是当年九城的虚拟城 市。 全文阅读 »

mixi.jp:使用开源软件搭建的可扩展SNS网站

2008-03-04,星期二 | 分类:网站技术架构 | 118 views

Mixi 目前是日本排名第三的网站,全球排名42,主要提供SNS服务:日记,群组,站内消息,评论,相册等等,是日本最大的SNS网站。

Mixi从2003年12月份开始开发,由现在它的CTO - Batara Kesuma一个人焊,焊了四个月,在2004年2月份开始上线运行。
两个月后就注册了1w用户,日访问量60wPV。在随后的一年里,用户增长到了 21w,第二年,增长到了200w。到今年四月份已经增长到370w注册用户,并且还在以每天1.5w人的注册量增长。
这些用户中70%是活跃用户(活跃用户:三天内至少登录一次的用户),平均每个用户每周在线时间为将近3个半小时。

下面我们来看它的技术架构。

Mixi采用开源软件作为架构的基础:Linux 2.6,Apache2.0,MySQL,Perl 5.8,memcached,Squid等等。
到目前为止已经有100多台MySQL数据库服务器,并且在以每月10多台的速度增长。Mixi的数据库连接方式采用的是每次查询都进行连接,而不是持久连接。数据库大多数是以InnoDB方式运行。 全文阅读 »

MySpace分布式系统是如何创建的

2008-03-04,星期二 | 分类:网站技术架构 | 121 views

MySpace 经历了六个里程碑的过程。
在每个里程碑,站点负担都会超过底层系统部分组件的最大载荷,特别是数据库和存储系统。接着,功能出现问题,用户失声尖叫。最后,技术团队必须为此修订系统策略。
虽然自2005年早期,站点账户数超过7百万后,系统架构到目前为止保持了相对稳定,但MySpace仍然在为SQL Server支持的同时连接数等方面继续攻坚,Benedetto(技术总监)说,”我们已经尽可能把事情做到最好”。

1. 里程碑一:50万账户
按Benedetto 的说法,MySpace最初的系统很小,只有两台Web服务器和一个数据库服务器。那时使用的是Dell双CPU、4G内存的系统。
单个数据库就意味着所有数据都存储在一个地方,再由两台Web服务器分担处理用户请求的工作量。但就像MySpace后来的几次底层系统修订时的情况 一样,三服务器架构很快不堪重负。此后一个时期内,MySpace基本是通过添置更多Web服务器来对付用户暴增问题的。  但到在2004年早期, MySpace用户数增长到50万后,数据库服务器也已开始汗流浃背。
但和Web服务器不同,增加数据库可没那么简单。如果一个站点由多个数据库支持,设计者必须考虑的是,如何在保证数据一致性的前提下,让多个数据库分担压力。 全文阅读 »

豆瓣的 Web 服务器

2008-03-04,星期二 | 分类:网站技术架构 | 153 views

豆瓣最近发布新功能有些”疯狂”,所以服务器也有新的部署。看到阿北同学在豆瓣广播里说:

豆瓣的第二台应用服务器终于投入了使用。Hongqn 忙了一晚上就完成了部署。第一台服务器支撑到 500 万动态PV/天,服务 On Demand 即时分布式部署……
500 万 PV , 还是动态 PV, 是个很惊人的数字。因为,如果都能达到一台机器支撑 500 万,那么国内稍有点规模的网站(就说动态 PV  上亿的吧),只需要 20 台 Web 服务器就够了。事实上,即使比较强调技术的网站怕也要上百台 Web 服务器的规模。

我们知道豆瓣用 Lighttpd 做 Web 服务器。 从侦测到的数据看,目前线上有两个版本。

$ curl -I http://www.douban.com 全文阅读 »

YouTube 的架构扩展

2008-03-04,星期二 | 分类:网站技术架构 | 116 views

在西雅图扩展性的技术研讨会上,YouTube 的 Cuong Do 做了关于 YouTube Scalability的报告。视频内容在 Google Video 上有(地址),可惜国内用户看不到。
Kyle Cordes 对这个视频中的内容做了介绍。
里面有不少技术性的内容。值得分享一下。(Kyle Cordes 的介绍是本文的主要来源)简单的说YouTube 的数据流量, ”一天的 YouTube流量相当于发送750亿封电子邮件.”,2006 年中就有消息说每日 PV 超过 1 亿,现在? 更夸张了,”每天有10亿次下载以及 6,5000次上传”, 真假姑且不论, 的确是超乎寻常的海量.
国内的互联网应用,但从数据量来看,怕是只有 51.com 有这个规模. 但技术上和YouTube 就没法子比了.
1. Web 服务器YouTube 出于开发速度的考虑,大部分代码都是 Python 开发的。Web 服务器有部分是Apache, 用 FastCGI 模式。

对于视频内容则用 Lighttpd 。据我所知,MySpace 也有部分服务器用 Lighttpd ,但量不大。 全文阅读 »

Pages: 1 2 Next