淘宝技术这十年.pdf
淘宝技术这十年.pdfwww.fatiao.space第_部分g淘宝技术发展1www.fatiao.spacewww.fatiao.space淘宝技术这十年引言:光棍节的狂欢间到,开抢!”坐在电脑前早已等待多时的小美一看时间已到2011年11月11日零时,便迫不及待地投身于淘宝商城一年度的大型网购促销活动——“淘宝双11购物狂欢节”。小美扌开早已收藏好的宝贝——某品牌的雪地靴,飞快的点击购买、付款,一回头发现3000双靴子已被抢购一空。小美跳起来,大叫一声“欧耶!”小美不知道,就在11日零点过后的这一分钟里,全国有342万人和她一起涌入淘宝商城。当然,她更不知道,此时此刻,在淘宝杭州的一间办公室里,灯火通明,这里是“战时指挥部”,淘宝技术部的一群工程师正紧盯着网站的流量和交易数据。白板上是他们刚刚下的赌注,赌谁能最准确地猜中流量峰值和全天的交易总额。他们的手边放着充足的食物和各类提神的饮料。一阵急促的电话铃声响起,是前线部门询问数据的,工程师大声报着:“第1分钟,进人淘宝商城的会员有342万人”。过了会儿,工程师主动拿起电话:“交易额超过1亿元人民币了,现在是第8分钟。”接下来,“第21分钟,刚突破2亿元”,“第32分钟,3亿元了”,“第1个小时,4.39亿元”。这些数据随后出现在微博上,引起了一片惊呼。“完蛋了!”突然有人大喝一声,所有的眼睛都紧张地盯着www.fatiao.spacewww.fatiao.space第一部分:淘宝技术发展1他,只见他挠挠头,嘿嘿地笑道“我赌得少了,20亿元轻松就能过了,我再加5亿元。”他跑到白板边上把自己的赌注擦去,写上25,接下来有人写上28,有人写上30,有人到微博上开下盘口,同事们纷纷转载下注。接下来的这24个小时,战时指挥部的工程师们都不能休息,他们盯着网站的各种监控指标,适时调整机器,增减功能。顶住第一波髙峰之后,这些人开始忙里偷闲地给自己买东西,大家互相交流着哪家买的移动硬盘靠谱,哪家衣服适合自己的女朋友,不时有人哀嚎宝贝被人抢了、信用卡额度不够多了。同时,旁边白板上的赌注越下越大。L11月11日,这个棍子最多的日子被网民自我调侃地变成了www.fatiao.spacewww.fatiao.space淘宝技术这十年个节日——“光棍节”,而淘宝网又用疯狂的折扣促销给它赋予了另外一个意义—“购物狂欢节”。2011年11月11日这一天淘宝商城与淘宝网交易额之和突破52亿元人民币,这个数字是“购物天堂”香港一天零售总额8.5亿元的6倍。网民感受到的是疯抢的喜悦,而网站的技术人员感受到的却是“压力山大”。就如同你家办酒席,宴请左邻右舍,这个办起来容易,倘若宴请十里八乡所有的人,吃饭的人固然开心,但却不是一般人家能够办得起来的。能办得起来如此盛宴者,需要强大的财力和物力、组织能力、技术实力(例如做这么多菜,你的炒锅一定要是“分布式的”、“可复制的”、“可扩展的”,洗菜和切菜要有“工作流引擎”,跑堂的要计算一下最优路径,甚至连厨房的下水道都要重新设计)。淘宝能够举办如此盛宴,网站的技术实力可见一斑。至2011年年底,淘宝网拥有全国最大的 Hadoop分布式计算集群之(2000多个节点,CPU:24000core, Memory:4800GB,Dik24000块),日新增数据50TB,有40PB海量数据存储,分布在全国各地80多个节点的CDN网络,支撑的流量超过800Gbps。淘宝的搜索引擎能够对数十亿的商品数据进行实时搜索,另外,还拥有自主研发的文件存储系统和缓存系统,以及a中间件和消息中间件系统,这一切组成了一个庞大的电子商务操作系统。从商业数据上看, Amazon的财报显示2011年完成了大约480亿美元的交易额,eBay的2011年财报显示全年完成了大约600亿美元的交易额www.fatiao.spacewww.fatiao.space第一部分:淘宝技术发展1(不包括其独立的汽车交易平台)。无论从交易额、商品数量还是从同比增速等指标上看,淘宝网均远超于此,是目前全球最大的电子商务平台。(由于淘宝是非上市公司,未公布2011年的业绩,以上内容来自淘宝网技术副总裁@_行癫的微博)。以上这些技术数据可能已经让一些人产生了不适的感觉,为了让更多的人读懂这本书,我们用下面这段文字描述一下小美访问淘宝网的时候,从技术的角度来看,网站上发生了什么样的事情。参考资料来自《你刚才在淘宝上买了一件东西》(来自阿里员工卡特)你发现快要过年了,于是想给你的女朋友买一件毛衣,你打开了www.taobao.com,这时你的浏览器首先查询DNS服务器,将www.taobao.com转换成IP地址。不过你首先会发现,在不同的地区或者不同的网络(电信、联通、移动)下,转换后的IP地址很可能是不一样的,这首先涉及到负载均衡的第一步,通过DNS解析域名时,将你的访问分配到不同的入口,同时尽可能保证你所访问的入口是所有入口中可能较快的一个(这和后文的CDN不样)你通过这个入口成功地访问了www,taobao.com实际的入口IP地址,这时产生了一个pV( Page view,页面访问量。每日每个网站的总PV量是形容一个网站规模的重要指标。淘宝网全网在平日www.fatiao.spacewww.fatiao.space淘宝技术这十年(非促销期间)的PV大概是16~25亿个之间)。同时作为一个独立的用户,你这次访问淘宝网的所有页面均算作一个UV( UniqueVisitor,用户访问)。最近臭名昭著的12306.cn的日PV量最高峰在10亿个左右,而UⅣ量却远小于淘宝网十余倍,这其中的原因相信大家都知道。因为同一时刻访问www.taobao.com的人数过于巨大,所以,即便是生成淘宝首页页面的服务器,也不可能仅有一台,仅用于生成www.taobao.com首页的服务器就可能有成百上千台,那么你的一次访问时生成页面给你看的任务便会被分配给其中一台服务器完成。这个过程要保证公正、公平、平均(即这成百上千台服务器每台负担的用户数要差不多),这一很复杂的过程由几个系统配合完成,其中最关键的便是LVS( Linux virtual server,世界上最流行的负载均衡系统之一,是由目前在淘宝网供职的章文嵩博士开发的)。经过一系列复杂的逻辑运算和数据处理,这次用于给你看的淘宝网首页的HTML内容便成功生成了。对Web前端稍微有点常识的人都应该知道,浏览器下一步会加载页面中用到的CSS、J( JavaScript)、图片等样式、脚本和资源文件。但是可能相对较少的人才会知道,你的浏览器在同一个域名下并发加载的资源数量是有限的,例如6和E7是两个,I8是6个, chrome各版本不大一样,一般是4~6个。我刚刚看了一下,我访问淘宝网首页需要加载126个资源,那么如此小的并发连接数自然会加载很久。所www.fatiao.spacewww.fatiao.space第一部分:淘宝技术发展1以前端开发人员往往会将上述这些资源文件分布在多个域名下,变相地绕过浏览器的这个限制,同时也为下文的CDN工作做准备。据不可靠消息称,在2011年“双十一”当天高峰,淘宝的访问流量最巅峰达到871GB/s,这个数字意味着需要178万个4MB/的家庭宽带才能负担得起,也完全有能力拖垮一个中小城市的全部互联网带宽。显然,这些访问流量不可能集中在一起,并且大家都知道,不同地区、不同网络(电信、联通等)之间互访会非常缓慢,但是你却很少发现淘宝网访问缓慢,这便是CDN( Content Delivery Network,即内容分发网络的作用)。淘宝在全国各地建立了数十个甚至上百个CDN节点,利用一些手段保证你访问的(这里主要指JS、CSS、图片等)站点是离你最近的CDN节点,这样便保证了大流量的分散已及在各地访问的加速这便出现了一个问题,那就是假若一个卖家发布了一个新的宝贝,上传了几张新的宝贝图片,那么淘宝网如何保证全国各地的CDN节点中都会同步存在这几张图片供用户使用呢?这就涉及大量的内容分发与同步的相关技术。另外,淘宝上拥有海量的宝贝图片等静态文件,这些文件的总容量也达到了数PB(1PB=1024TB=1048576GB),为了快速存取这些文件,淘宝开发了分布式文件系统TFS( TaoBao File Systen)来处理这类问题。好了,这时你终于加载完成淘宝首页,然后习惯性地在首页搜索框中输入“毛衣”二字并按回车键,这时你又产生了一个7www.fatiao.spacewww.fatiao.space淘宝技术这十年PV,然后,淘宝网的主搜索系统便开始为你服务,它首先对你输入的内容基于一个分词库进行分词操作。众所周知,英文是以词为单位的,词和词之间靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子“Iam a student”用中文表示,则为“我是一个学生”。计算机可以很简单地通过空格知道 student是一个单词,但是不太容易明白“学”、“生”两个字合起来才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。“我是一个学生”分词的结果是“我是一个学生”。进行分词操作之后,还需要根据你输入的搜索词进行购物意图分析。用户进行搜索时常常有如下几类意图。浏览型:没有明确的购物对象和意图,边看边买,用户比较随意和感性。 Query例如:“2010年10大香水排行”、“2010年流行毛衣”、“ zippo有多少种类?”;查询型:有一定的购物意图,体现在对属性的要求上。Query例如:“适合老人用的手机”、“500元手表”;对比型:已经缩小了购物意图,具体到某几个产品。 Query例如:“诺基亚E71上63”、“akgk450px200”;注1αuery即査询。为了在数据库或搜索引擎中寻找某一特定文件、网站、记录或一系列记录,由搜索引擎或数据库送出的信息。—作者注www.fatiao.space
暂无评论