从个人网站到淘宝网 仰观Java时代淘宝的技术发展(5)

news/2024/5/12 18:04:32/文章来源:https://blog.csdn.net/thinkscape/article/details/7483877

FROM:

http://developer.51cto.com/art/201204/327050_4.htm?1334978897



从2003年的一个个人对个人(C2C)的商品交易网站到如今的淘宝网,其实在作为个人网站发展的时间里并不长。那么在这段时间里,淘宝究竟是如何发展的呢?在这篇文章里我们将找到淘宝网的发展历史以及所用到的技术。

AD:

已经有读者在迫不及待的问怎么去掉了IOE,别急,在去掉IOE之前还有很长的路要走。行癫他们买回来小型机之后,我们用上了Oracle,七公带着一帮DBA在优化SQL和存储,行癫带着几个架构师在研究数据库的扩展性。Oracle本身是一个封闭的系统,用Oracle怎么做扩展?用现在一个时髦的说法就是做“分库分表”。

我们知道一台Oracle的处理能力是有上限的,它的连接池有数量限制,查询速度跟容量成反比。简单的说,在数据量上亿、查询量上亿的时候,就到它的极限了。要突破这种极限,最简单的方式就是多用几个Oracle数据库。但一个封闭的系统做扩展,不像分布式系统那样轻松。我们把用户的信息按照ID来放到两个数据库里面(DB1/DB2),把商品的信息跟着卖家放在两个对应的数据库里面,把商品类目等通用信息放在第三个库里面(DBcommon)。这么做的目的除了增加了数据库的容量之外,还有一个就是做容灾,万一一个数据库挂了,整个网站上还有一半的数据能操作。

数据库这么分了之后,应用程序有麻烦了,如果我是一个买家,买的商品有DB1的也有DB2的,要查看“我已买到的宝贝”的时候,应用程序怎么办?必须到两个数据库里面分别查询出来对应的商品。要按时间排序怎么办?两个库里面“我已买到的宝贝”全部查出来在应用程序里面做合并。还有分页怎么处理?关键字查询怎么处理?这些东西交给程序员来做的话会很悲催,于是行癫在淘宝的第一个架构上的作品就来解决了这个问题,他写了一个数据库路由的框架DBRoute,这个框架在淘宝的Oracle时代一直在使用。后来随着业务的发展,这种分库的第二个目的——容灾的效果就没有达到。像评价、投诉、举报、收藏、我的淘宝等很多地方,都必须同时连接DB1和DB2,哪个库挂了都会导致整个网站挂掉。

上一篇说过,采用EJB其实是和Sun的工程师妥协的结果,在他们走了之后,EJB也逐渐被冷落了下来。在05、06年的时候,spring大放异彩,正好利用spring的反射(IoC)模式替代了EJB的工厂模式,给整个系统精简了很多代码。

上一篇还说过,为了减少数据库的压力,提高搜索的效率,我们引入了搜索引擎。随着数据量的继续增长,到了2005年,商品数有1663万,PV有8931万,注册会员有1390万,这给数据和存储带来的压力依然山大,数据量大,性能就慢。亲,还有什么办法能提升系统的性能?一定还有招数可以用,这就是缓存和CDN(内容分发网络)。

你可以想象,九千万的访问量,有多少是在商品详情页面?访问这个页面的时候,数据全都是只读的(全部从数据库里面读出来,不写入数据库),如果把这些读操作从数据库里面移到内存里,数据库将会多么的感激涕零。在那个时候我们的架构师多隆大神,找到了一个基于 Berkeley DB 的开源的缓存系统,把很多不太变动的只读信息放了进去。其实最初这个缓存系统还比较弱,我们并没有把整个商品详情都放在里面,一开始把卖家的信息放里面,然后把商品属性放里面,商品详情这个字段太大,放进去受不了。说到商品详情,这个字段比较恐怖,有人统计过,淘宝商品详情打印出来平均有5米长,在系统里面其实放在哪里都不招人待见。笔者清楚的记得,我来淘宝之后担任项目经理做的第一个项目就是把商品详情从商品表里面给移出来。这个字段太大了,查询商品信息的时候很多都不需要查看详情,它跟商品的价格、运费这些放在一个表里面,拖慢了整个表的查询速度。在05年的时候,我把商品详情放在数据库的另外一张表里面,再往后这个大字段被从数据库里面请了出来,这也让数据库再一次感激涕零。

到现在为止,整个商品详情的页面都在缓存里面了,眼尖的读者可能会发现现在的商品详情不全是“只读”的信息了,这个页面上有个信息叫“浏览量”,这个数字每刷新一次页面就要“写入”数据库一次,这种高频度实时更新的数据能用缓存吗?如果不用缓存,一天几十亿的写入,数据库会怎么样?一定会挂掉。那怎么办?亲……

CDN这个工作相对比较独立,跟别的系统一样,一开始我们也是采用的商用系统。后来随着流量的增加,商用的系统已经撑不住了,LVS的创始人章文嵩博士带人搭建了淘宝自己的CDN网络。在本文的引言中我说过淘宝的CDN系统支撑了800Gbps以上的流量,作为对比我们可以看一下国内专业做CDN的上市公司ChinaCache的介绍——“ChinaCache……是中国第一的专业CDN服务提供商,向客户提供全方位网络内容快速分布解决方案。作为首家获信产部许可的CDN服务提供商,目前ChinaCache在全国50多个大中城市拥有近300个节点,全网处理能力超过500Gbps,其CDN网络覆盖中国电信、中国网通、中国移动、中国联通、中国铁通和中国教育科研网等各大运营商。”——这样你可以看得出淘宝在CDN上面的实力,这在全世界都是数一数二的。另外因为CDN需要大量的服务器,要消耗很多能源(消耗多少?在前两年我们算过一笔帐,淘宝上产生一个交易,消耗的电足以煮熟4个鸡蛋)。这两年章文嵩的团队又在研究低功耗的服务器,在绿色计算领域也做了很多开创性的工作。淘宝CDN的发展需要专门一个章节来讲,想先睹为快的可以看一下笔者对章文嵩的专访:http://qing.weibo.com/1866752224/6f4460e033000jme.html

回想起刚用缓存那段时间,笔者还是个小菜鸟,有一个经典的错误常常犯,就是数据库的内容更新的时候,忘记通知缓存系统,结果在测试的时候就发现我改过的数据怎么在页面上没变化呢。后来做了一些页面上的代码,修改CSS和JS的时候,用户本地缓存的信息没有更新,页面上也会乱掉,在论坛上被人说的时候,我告诉他用ctrl+F5刷新页面,然后赶紧修改脚本文件的名称,重新发布页面。学会用ctrl+F5的会员对我佩服的五体投地,我却惭愧的无地自容。

有些技术的发展是顺其自然的,有些却是突如其来的。到2007年的时候,我们已经有几百台应用服务器了,这上面的java应用服务器是weblogic,而weblogic是非常贵的,比这些服务器本身都贵。有一段时间多隆研究了一下jboss,说我们换掉weblogic吧,于是又省下了不少银两。那一年,老马举办了第一届的“网侠大会”,会上来的大侠中有一位是上文提到的章文嵩,还有一位曾经在jboss团队工作,我们也把这位大侠留下了,这样我们用起jboss更加有底气了。

这些杂七杂八的修改,我们对数据分库、放弃EJB、引入Spring、加入缓存、加入CDN、采用开源的Jboss,看起来没有章法可循,其实都是围绕着提高容量、提高性能、节约成本来做的,由于这些不算大的版本变迁,我们姑且叫它2.1版吧,这个版本从构图上来看有3只脚,是不是稳定了很多?

架构图如下:


(未完)


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_852326.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从个人网站到淘宝网 仰观Java时代淘宝的技术发展(6)

FROM: http://developer.51cto.com/art/201204/327050_5.htm 从2003年的一个个人对个人(C2C)的商品交易网站到如今的淘宝网,其实在作为个人网站发展的时间里并不长。那么在这段时间里,淘宝究竟是如何发展的呢&#x…

爬动漫网站数据_通过这三种动漫爱上数据科学和技术

爬动漫网站数据Yes, it might seem weird to mention anime, data science, and technology in the same breath. But you might be surprised to learn that there’s quite a deep connection across these domains. I am interested in all three (along with reading, list…

网站文件下载代码

效果图&#xff1a; 页面视图代码&#xff1a; <div style"float: right; padding-right: 5px;">Excel模板&#xff1a;Html.ActionLink("下载模版.xls", "GetFile") </div> 控制器代码&#xff1a; //下载模板public FileResult Ge…

【闲趣】CSDN RSS订阅:将你的博客订阅至个人网站

文章目录引言RSS是什么将CSDN博客订阅至我的网站将【知乎每日精选】订阅到我的网站我不是程序员&#xff0c;我怎么订阅RSS订阅地址RSS订阅器RSS实战&#xff1a;Outlook订阅CSDN引言 在翻阅个人文章的时候发现了个不起眼的东西&#xff0c;我好像在别的地方也见过这个标识。 …

英语老师不想让你知道的一些网站

1、练习听力美国国家公共广播电台NPR&#xff1a;http://www.npr.org/特点&#xff1a;标准美式英语。建议&#xff1a;每天花三十分钟左右&#xff0c;反复听英语广播&#xff0c;这是听力过关的必经之路。点击网页中左边“BROWSE TOPICS”下面的“News”选项。选择自己有兴趣…

Java开源建站工具

美国程序员Jon Scott Stevens&#xff0c;公布了他的创业公司所使用的开发工具清单。 他的语言平台是Java&#xff0c;开发项目是一个网站&#xff08;还未上线&#xff09;。所用到的工具都是开源的&#xff0c;可以免费得到。 在目前的创业者之中&#xff0c;用Java作为网站…

如何利用云服务器搭建个人网站

你是否想要搭建一个网站&#xff0c;却苦苦找不到方法&#xff0c;你是否看到别人搭建的网站&#xff0c;自己羡慕不已&#xff0c;今天&#xff0c;就教大家来搭建一个简单的个人网站。 在这里&#xff0c;我采用的是腾讯云服务器搭建的。首先&#xff0c;需要注册腾讯云账号&…

微信域名防屏蔽防封系统,轻松微信中域名网站被屏蔽被封的问题

做微信营销活动&#xff0c;域名没被封过&#xff0c;那你的营销人生肯定是不完整的。如果做到微信域名防封呢&#xff1f;这就要借助一些工具来实现有效的防封措施了。 第一步 你需要有一个微信域名检测接口&#xff0c;自己开发或是购买都可以。 第二步 配置你的程序&#xf…

【Vue项目心得笔记】电商网站的“面包屑”

标题说的“面包屑”是下图所示的小方块&#xff0c;可以方便的筛选用户需要的物品的各种属性。 利用vue设计出这种面包屑需要很多的请求 面包屑包括在主页全部商品分类点击的面包屑&#xff0c;输入关键字产生的面包屑&#xff0c;点击下方品牌产生的面包屑&#xff0c;还有点…

在阿里云服务器上使用Nginx部署https协议的网站

前写过一篇文章是在阿里云服务器上用Apache切换https协议&#xff1a;将博客迁移阿里云并且切换成https解析的过程 这一次&#xff0c;换成使用Nginx来部署&#xff0c;相比之下&#xff0c;比Apache的配置要简单一些 如何申请SSL证书就按下不表了&#xff0c;非常简单&#xf…

安卓如何将edittext获取到数子传到另一个页面处理_白杨SEO:网站聚合页面是什么、好处及怎么做?重复页怎么处理?【收藏】...

前言&#xff1a; 这是白杨SEO公众号原创第 118 篇。为什么想到写这个呢&#xff0c;在上周星期天&#xff08;12.22日&#xff09;白杨SEO年终线下交流沙龙中有嘉宾提到这个聚合页面&#xff0c;看很多新人不太懂&#xff0c;所以这篇就来写写哈~说明下&#xff0c;大家都知道…

jquery set长度_从零做网站开发:基于Flask和JQuery,实现表格管理平台

摘要&#xff1a;本文将为大家带来基于Flask框架和JQuery实现管理平台网站的开发功能。【写在前面】你要开发网站&#xff1f; 嗯。。会Flask吗&#xff1f; 什么东西&#xff0c;没听过。。。会JQuery吗&#xff1f; 是python的库吗 &#xff1f;那你会什么&#xff1f; 我会F…

如何让传统ASP.NET网站在Docker中运行

本文主要描述如何让传统ASP.NET网站在Docker中运行&#xff0c;侧重Docker image 搭建。 使用条件&#xff1a; Docker for windows 用户切换到Windows 容器模式Windows Server 2016 用户 开启 Windows Container 关于Docker for windows&#xff0c;nanoserver,Windows Cont…

Scrapy爬取图片网站——最详细的入门爬虫教程,新手入门干货,不进来看一下?

开始前准备 这次爬虫使用scrapy&#xff0c;所以用到的工具必然是python3.7&#xff0c;scrapy&#xff0c;pycharm这些东西&#xff0c; 目标网站&#xff1a;http://pic.netbian.com 彼岸图网&#xff0c;个人非常喜欢的图片网站&#xff0c;完全公开免费&#xff0c;几乎没…

天猫浏览型应用的CDN静态化架构演变(大型网站架构篇)(转)

转自&#xff1a;http://www.iteye.com/news/28732-CDN-Architecture-Tmall在天猫双11活动中&#xff0c;商品详情、店铺等浏览型系统&#xff0c;通常会承受超出日常数倍甚至数十倍的流量冲击。随着历年来双11流量的大幅增加&#xff0c;每年这些浏览型系统都要面临容量评估、…

大型网站架构演化(转)

《大型网站技术架构》读书笔记&#xff1a;1.1大型网站软件系统的特点与传统企业应用系统相比&#xff0c;大型互联网应用系统有以下特点。高并发&#xff0c;大流量高可用海量数据用户分布广泛&#xff0c;网络情况复杂安全环境恶劣需求快速变更&#xff0c;发布频繁渐进式发展…

高访问量高性能高可扩展性网站架构(概括性理论)(转)

转自&#xff1a;http://www.iteye.com/news/29730 摘要&#xff1a;随着数据暴增&#xff0c;单服务器开始疲于应对海量用户的访问。自本期《问底》&#xff0c;徐汉彬将带大家开启异地跨集群分布式系统打造&#xff0c;本次关注的重点则是架构从单机到分布式集群的转变。 Web…

第四天 网站、数据库、系统等基本知识

网站分类 根据所用编程语言分&#xff1a;asp网站、PHP网站、jsp网站、asp.net网站等 根据网站用途分&#xff1a;门户网站&#xff08;综合网站&#xff09;、行业网站、娱乐网站等 根据网站功能分&#xff1a;单一网站&#xff08;企业网站&#xff09;、多功能网站&#…

在线生成Favicon的九个网站

Favicon可以是一个网站的重要标识,它的作用是在地址栏的左端及用户的收藏夹里显示你的标志,让用户一眼即可认出你.一个好的Favicon会让你的网站更加深入人心. 前不久Google更换了自己的Favicon&#xff0c;但引来了不少的争议.所以&#xff0c;为自己的网站制作一个好看醒目的…

API从网站中解放出来,也许会带来web3.0

最近互联网上最火爆的事情就是FaceBook和Google OpenSocial&#xff0c;除了前者估值150亿美金和后者给我们提供了一个“大牌公司着急上火”的故事以外&#xff0c;让人最为激动的是&#xff0c;禁锢在某个网站架构里的“API”似乎松动了&#xff0c;放佛要解放出来&#xff0c…