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

news/2024/5/12 15:42:57/文章来源:https://blog.csdn.net/thinkscape/article/details/7483870

FROM:

http://developer.51cto.com/art/201204/327050_3.htm



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

AD:

我的师父黄裳@岳旭强曾经说过,“好的架构图充满美感”,一个架构好不好,从审美的角度就能看得出来。后来我看了很多系统的架构,发现这个言论基本成立。那么反观淘宝前面的两个版本的架构,你看哪个比较美?

 

 

显然第一个比较好看,后面那个显得头重脚轻,这也注定了它不是一个稳定的版本,只存活了不到半年的时间。2004年初,SQL Relay的问题解决不了,数据库必须要用Oracle,那从哪里动刀?只有换开发语言了。换什么语言好呢?Java。Java是当时最成熟的网站开发语言,它有比较良好的企业开发框架,被世界上主流的大规模网站普遍采用,另外有Java开发经验的人才也比较多,后续维护成本会比较低。

到2004年上半年,淘宝网已经运行了一年的时间,这一年积累了大量的用户,也快速的开发了很多功能,当时这个网站已经很庞大了,而且新的需求还在源源不断的过来。把一个庞大的网站的开发语言换掉,无异于脱胎换骨,在换的过程中还不能拖慢业务的发展,这无异于边换边跑,对时间和技术能力的要求都非常高。做这样的手术,需要请第一流的专家来主刀。现在再考一下读者,如果你在这个创业团队里面,请什么样的人来做这事?我们的答案是请Sun的人。没错,就是创造Java语言的那家公司,世界上没有比他们更懂Java的了。除此之外,还有一个不为人知的原因,……(此处和谐掉200字,完整版见aliway)

这帮Sun的工程师的确很强大,在笔者2004年底来淘宝的时候,他们还在,有幸跟他们共事了几个月。现在摆在他们面前的问题是用什么办法把一个庞大的网站从PHP语言迁移到Java?而且要求在迁移的过程中,不停止服务,原来系统的bugfix和功能改进不受影响。亲,你要是架构师,你怎么做?有人的答案是写一个翻译器,如同把中文翻译成英文一样,自动翻译。我只能说你这个想法太超前了,换个说法就是“too simple, sometimes naive”。当时没有,现在也没有人能做到。他们的大致方案是给业务分模块,一个模块一个模块的替换。如用户模块,老的member.taobao.com继续维护,不添加新功能,新的功能先在新的模块上开发,跟老的共用一个数据库,开发完毕之后放到不同的应用集群上,另开个域名member1.taobao.com,同时替换老的功能,替换一个把老的模块上的功能关闭一个,逐渐的把用户引导到member1.taobao.com,等所有功能都替换完毕之后,关闭member.taobao.com。后来很长时间里面都是在用member1这样奇怪的域名,两年后有另外一家互联网公司开始做电子商务了,我们发现他们的域名也叫member1.xx.com、auction1.xx.com……

说了开发模式,再说说用到的Java MVC框架,当时的struts1.x是用的比较多的框架,但是用过webwork和struts2的同学可能知道,struts1.x在多人协作方面有很多致命的弱点,由于没有一个轻量框架作为基础,因此很难扩展,这样架构师对于基础功能和全局功能的控制就很难做到。而阿里巴巴的18个创始人之中,有个架构师,在Jakarta Turbine的基础上,做了很多扩展,打造了一个阿里巴巴自己用的MVC框架WebX ( http://www.openwebx.org/docs/Webx3_Guide_Book.html ),这个框架易于扩展,方便组件化开发,它的页面模板支持JSP和velocity等、持久层支持ibatis和hibernate等、控制层可以用EJB和Spring(Spring是后来才有的)。项目组选择了这个强大的框架,这个框架如果当时开源了,也许就没有webwork和struts2什么事了。另外,当时Sun在全世界大力推广他们的EJB,虽然淘宝的架构师认为这个东东用不到,但他们还是极力坚持。在经历了很多次的技术讨论、争论和争吵之后,这个系统的架构就变成了下图的样子:

 

Java应用服务器是Weblogic,MVC框架是WebX、控制层用了EJB、持久层是ibatis,另外为了缓解数据库的压力,商品查询和店铺查询放在搜索引擎上面。这个架构图是不是好看了一点了,亲?

这帮Sun的工程师开发完淘宝的网站之后,又做了一个很牛的网站,叫“支付宝”。

其实在任何时候,开发语言本身都不是系统的瓶颈,业务带来的压力更多的是压到了数据和存储上。上面一篇也说到,MySQL撑不住了之后换Oracle,Oracle的存储一开始在本机上,后来在NAS上,NAS撑不住了用EMC的SAN存储,再然后Oracle的RAC撑不住了,数据的存储方面就不得不考虑使用小型机了。在2004年的夏天,DBA七公、测试工程师郭芙和架构师行癫,踏上了去北京测试小型机的道路。他们带着小型机回来的时候,我们像欢迎领袖一样的欢迎他们,因为那个是我们最值钱的设备了,价格表上的数字吓死人。小型机买回来之后我们争相合影,然后Oracle就跑在了小型机上,存储方面从EMC低端cx存储到Sun oem hds高端存储,再到EMC dmx高端存储,一级一级的往上跳。

到现在为止,我们已经用上了IBM的小型机、Oracle的数据库、EMC的存储,这些东西都是很贵的,那些年可以说是花钱如流水啊。有人说过“钱能解决的问题,就不是问题”,但随着淘宝网的发展,在不久以后,钱已经解决不了我们的问题了。花钱买豪华的配置,也许能支持1亿PV的网站,但淘宝网的发展实在是太快了,到了10亿怎么办?到了百亿怎么办?在N年以后,我们不得不创造技术,解决这些只有世界顶尖的网站才会遇到的问题。后来我们在开源软件的基础上进行自主研发,一步一步的把IOE(IBM小型机、Oracle、EMC存储)这几个“神器”都去掉了。这就如同在《西游记》里面,妖怪们拿到神仙的兵器会非常厉害,连猴子都能够打败,但最牛的神仙是不用这些神器的,他们挥一挥衣袖、翻一下手掌就威力无比。去IOE这一部分会在最后一个章节里面讲,这里先埋个千里伏笔。

欲知后事如何,且听下回分解。


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

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

相关文章

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

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

从个人网站到淘宝网 仰观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;为自己的网站制作一个好看醒目的…