原文地址:http://blog.renren.com/share/1008228562/11138179294

你发现快要过年了,于是想给你的女朋友买一件毛衣,你打开了http://www.taobao.com。这时你的浏览器首先查询DNS服务器,将http://www.taobao.com转换成ip地址。不过首先你会发现,你在不同的地区或者不同的网络(电信、联通、移动)的情况下,转换后的IP地址很可能是 不一样的,这首先涉及到负载均衡的第一步,通过DNS解析域名时将你的访问分配到不同的入口,同时尽可能保证你所访问的入口是所有入口中可能较快的一个 (这和后文的CDN不一样)。

  你通过这个入口成功的访问了 http://www.taobao.com 的实际的入口IP地址。这时你产生了一个PV,即Page View,页面访问。每日每个网站的总PV量是形容一个网站规模的重要指标。淘宝网全网在平日(非促销期间)的PV大概是16-25亿之间。同时作为一个独立的用户,你这次访问淘宝网的所有页面,均算作一个UV(Unique Visitor用户访问)。最近臭名昭著的 http://12306.cn 的日PV量最高峰在10亿左右,而UV量却远小于淘宝网十余倍,这其中的原因我相信大家都会知道。
  因为同一时刻访问 http://www.taobao.com 的人数过于巨大,所以即便是生成淘宝首页页面的服务器,也不可能仅有一台。仅用于生成 http://www.taobao.com 首页的服务器就可能有成百上千台,那么你的一次访问时生成页面给你看的任务便会被分配给其中一台服务器完成。这个过程要保证公正、公平、平均(暨这成百上千台服务器每台负担的用户数要差不多),这一很复杂的过程是由几个系统配合完成,其中最关键的便是LVS(Linux Virtual Server),世界上最流行的负载均衡系统之一,正是由目前在淘宝网供职的章文嵩博士开发的。
  经过一系列复杂的逻辑运算和数据处理,用于这次给你看的淘宝网首页的HTML内容便生成成功了。对web前端稍微有点常识的童鞋都应该知道,下一步浏览器会去加载页面中用到的css、js、图片、脚本和资源文件。但是可能相对较少的同学才会知道,你的浏览器在同一个域名下并发加载的资源数量是有限制的,例如IE6-7是两个,IE8是6个,Chrome各版本不大一样,一般是4-6个。我刚刚看了一下,我访问淘宝网首页需要加载126个资源,那么如此小的并发连接数自然会加载很久。所以前端开发人员往往会将上述这些资源文件分布在好多个域名下,变相的绕过浏览器的这个限制,同时也为下文的CDN工作做准备。
  据不可靠消息,在双十一当天高峰,淘宝的访问流量最巅峰达到871GB/S。这个数字意味着需要178万个4Mb带宽的家庭宽带才能负担的起,也完全有能力拖垮一个中小城市的全部互联网带宽。那么显然,这些访问流量不可能集中在一起。并且大家都知道,不同地区不同网络(电信、联通等)之间互访会非常缓慢,但是你却发现很少发现淘宝网访问缓慢。这便是CDN(Content Delivery Network),即内容分发网络的作用。淘宝在全国各地建立了数十上百个CDN节点,利用一些手段保证你访问的(这里主要指js、css、图片等)地方是离你最近的CDN节点,这样便保证了大流量分散在各地访问的加速节点上。
  这便出现了一个问题,那就是假若一个卖家发布了一个新的宝贝,上传了几张新的宝贝图片,那么淘宝网如何保证全国各地的CDN节点中都会同步的存在这几张图 片供用户使用呢?这里边就涉及到了大量的内容分发与同步的相关技术。淘宝开发了分布式文件系统TFS(Taobao File System)来处理这类问题。

好了,这时你终于加载完了淘宝首页,那么你习惯性的在首页搜索框中输入了'毛衣'二字并敲回车,这时你又产生了一个PV,然后,淘宝网的主搜索系统便开始为你服务了。它首先对你输入的内容基于一个分词库进行分词操作。众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子I am a student,用中文则为:“我是一个学生”。计算机可以很简单通过空格知道student是一个单词,但是不能很容易明白“学”、“生”两个字合起来才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。我是一个学生,分词的结果是:我 是 一个 学生。

进行分词之后,还需要根据你输入的搜索词进行你的购物意图分析。用户进行搜索时常常有如下几类意图:(1)浏览型:没有明确的购物对象和意图,边看边买,用户比较随意和感性。Query例如:”2010年10大香水排行”,”2010年流行毛衣”, “zippo有多少种类?”;(2)查询型:有一定的购物意图,体现在对属性的要求上。Query例如:”适合老人用的手机”,”500元 手表”;(3)对比型:已经缩小了购物意图,具体到了某几个产品。Query例如:”诺基亚E71 E63″,”akg k450 px200″;(4)确定型:已经做了基本决定,重点考察某个对象。Query例如:”诺基亚N97″,”IBM T60″。通过对你的购物意图的分析,主搜索会呈现出完全不同的结果来。
  之后的数个步骤后,主搜索系统便根据上述以及更多复杂的条件列出了搜索结果,这一切是由一千多台搜索服务器完成。然后你开始逐一点击浏览搜索出的宝贝。你开始查看宝贝详情页面。经常网购的亲们会发现,当你买过了一个宝贝之后,即便是商家多次修改了宝贝详情页,你仍然能够通过‘已买到的宝贝’查看当时的快照。这是为了防止商家对在商品详情中承诺过的东西赖账不认。那么显然,对于每年数十上百亿比交易的商品详情快照进行保存和快速调用不是一个简单的事情。这 其中又涉及到数套系统的共同协作,其中较为重要的是Tair,淘宝自行研发的分布式KV存储方案。
  然后无论你是否真正进行了交易,你的这些访问行为便忠实的被系统记录下来,用于后续的业务逻辑和数据分析。这些记录中访问日志记录便是最重要的记录之一, 但是前边我们得知,这些访问是分布在各个地区很多不同的服务器上的,并且由于用户众多,这些日志记录都非常庞大,达到TB级别非常正常。那么为了快速及时 传输同步这些日志数据,淘宝研发了TimeTunnel,用于进行实时的数据传输,交给后端系统进行计算报表等操作。
  你的浏览数据、交易数据以及其它很多很多的数据记录均会被保留下来。使得淘宝存储的历史数据轻而易举的便达到了十数甚至更多个 PB(1PB=1024TB=1048576GB)。如此巨大的数据量经过淘宝系统1:120的极限压缩存储在淘宝的数据仓库中。并且通过一个叫做云梯的,由2000多台服务器组成的超大规模数据系统不断的进行分析和挖掘。
  从这些数据中淘宝能够知道小到你是谁,你喜欢什么,你的孩子几岁了,你是否在谈恋爱,喜欢玩魔兽世界的人喜欢什么样的饮料等,大到各行各业的零售情况、各类商品的兴衰消亡等等海量的信息。 
  说了这么多,其实也只是叙述了淘宝上正在运行的成千上万个系统中的寥寥几个。即便是你仅仅访问一次淘宝的首页,所涉及到的技术和系统规模都是你完全无法想 象的,是淘宝2000多名顶级的工程师们的心血结晶,其中甚至包括长江学者、国家科学技术最高奖得主等众多大牛。同样,百度、腾讯等的业务系统也绝不比淘宝简单。你需要知道的是,你每天使用的互联网产品,看似简单易用,背后却凝聚着难以想象的智慧与劳动。

你刚淘宝买了一件东西相关推荐

  1. 我在淘宝买了一件东西

    分享一篇前些天看到的很有意思的好文章<你刚才在淘宝上买了一件东西>       你发现快要过年了,于是想给你的女朋友买一件毛衣,你打开了http://www.taobao.com.这时你的 ...

  2. 你在淘宝买件东西背后的复杂技术

    你发现快要过年了,于是想给你的女朋友买一件毛衣,你打开了www.taobao.com.这时你的浏览器首先查询DNS服务器,将www.taobao.com转换成ip地址.不过首先你会发现,你在不同的地区 ...

  3. 转载一篇好文章《你刚才在淘宝上买了一件东西》

    转载<你刚才在淘宝上买了一件东西> 转载地址 https://blog.csdn.net/bingocoder/article/details/80721346 先mark下来,有空慢慢看 ...

  4. 揭秘淘宝买衣服潜规则,你们吃亏吃大了!

    本人,目前在一家淘宝店工作,淘宝也就是大部分亲们经常去消费购物的地方,凡是在淘宝买过衣服的亲,带某某品牌的,基本上都买到过高仿.A货甚至质量差的一塌糊涂的.相信凡是做过淘宝服装的同志们都会认同我所说的 ...

  5. 为什么都说淘宝假货多,却都去淘宝买

    人有三六九等.肉有五花三层,如果把淘宝比作一个农村集市最恰当不过了,商家入住门坎低,只要交1000保证金就可以入驻了,也不用月月有必交的店铺费用,你能做个新奇的小玩意儿,,或者农民种点什么瓜果农产品的 ...

  6. iOS 淘宝买 开发者证书 进行真机调试

    Apple的开发者账号99¥.(反正我舍不得.上淘宝买个证书就可以用自己的iphone/ipad来真机调试代码了) 怎么买? 1.你的apple设备的udid号(设备标识符) 2.支付RMB 从淘宝店 ...

  7. 家有妙招:教你一个在淘宝买东西打折的好方法

    教你一个在淘宝买东西打折的好方法 其实我们可以使用淘宝客来实现打折.下面是阿里妈妈对淘宝客的定义:淘宝客推广是一种按成交计费的推广模式,淘宝客只要从淘宝客推广专区获取商品代码,任何买家(包括您自己)经 ...

  8. 淘宝买的AC+退款经历

    一 2019年暑假两个月兼职,辛辛苦苦赚了点钱,买了人生第一台mbp.在买之前做足了功课,也去当地直营店看了看.由于本人强迫症,怕淘宝买的有瑕疵不好退货,就在官网买了19款13寸(定制了16g内存,直 ...

  9. 淘宝买零件组装一台手机,可以正常使用,想自己组装手机的可以看下

    淘宝买零件組裝一台手機,可以正常使用,史上最便宜的Iphone 这是一个很有想法的视频,用自己的手组装一部喜欢的手机,去市面上买部手机可能需要个三四千元的人民币,但自己动手的组装话因需要1500元左右 ...

最新文章

  1. 【错误记录】PyCharm 中从 GitHub 中 Clone 代码到本地报错 ( OpenSSL SSL_read: Connection was reset, errno 10054 )
  2. java的准动态(反射)
  3. 流式计算框架Storm编程案例:实时给手机品牌转大写并加上时间戳后缀代码示例
  4. 配置web项目session永不超时
  5. PXE-cobbler 无人值守装机------续
  6. python快速入门 数据输出和基本类型 常用的循环遍历等
  7. 悲痛!临近年关,一位 IT 创业者自杀,曾卖房给员工发工资
  8. 如何把博客园的博客弄出狂拽酷炫的效果
  9. Sensor框架理解
  10. spring IOC快速入门,属性注入,注解开发
  11. sqlite3 命令行操作
  12. 推荐一款比较不错实用的在线文本比较工具
  13. 《具体数学》(二)和式
  14. vnc远程控制linux端口5901,VNC远程控制Linux
  15. carry on till tomorrow
  16. linux安装阵列卡驱动程序,Linux系统下如何安装阵列卡驱动?
  17. 用户文件下载服务解决方案
  18. 自学的程序员一点竞争力都没有么?
  19. 发表论文大概需要经历以下流程
  20. c语言中compar的用法,compare的用法

热门文章

  1. 鸿蒙是不是把系统提供给友商,鸿蒙系统即将上线,却遭友商公开“嘲讽”,华为为何不受待见?...
  2. 厚黑架构师生存的7大武器
  3. JS三元运算和多条件运算
  4. 编辑器组件PDF-XChange Editor更新了,增加新的语言
  5. burpsuite安装和java环境
  6. kafka使用场景与设计原理
  7. vue-http与https互相转换
  8. 将jmeter永久改为中文界面
  9. “查找”学习提纲(二)——树型查找和散列查找
  10. HTB-oscplike-Blue+Devel+Optimum