2008年淘宝的交易额是1000亿规模,2009年的时候是2000亿规模,2010年淘宝网的交易额4000亿规模,如何构建一个支撑这么大交易规模的高性能、并发的电子商务平台网站呢? 以下结合网络资料,研究一下淘宝网的技术架构变迁。
淘宝网从2003年开始建立的,从1.0到1.5的版本.2005年开始2.0的版本,2012年4.0的版本上线。
淘宝网从2003年开始建立的,从1.0到1.5的版本.2005年开始2.0的版本,2012年4.0的版本上线。
马云的创业团队共10个人,马云以及他的秘书,8个里面有3个开发人员,三丰、多龙(音)、虚竹,还有UED的二当家,三位运营人员,小宝、阿柯和破天,总经理是财神。团队开始研发是2003年4月7日,一个月后的5月10日淘宝第一个版本上线。这段时间,创业团队关在小区里面写代码,每天早上9点到晚上1、2点。
淘宝网第一个版本MALT架构,采用PHP+MySQL
首先花2000美金买了一个淘宝怎么代付款MALT架构网站,很精典的LAMP技术架构,刚开始的编程语言和数
据库是PHP+MySQL,然后配套开发后台管理系统。一开始部署在一台单机服务器上,流量增长后,把发邮件功能部署在一台机器上,后来再增加机器出来。
2004年MySQL撑不住了,数据存储的引擎很大缺点会锁表,一读的话把表锁住了,读的量一上来经常会锁掉,然后重启。MySQL撑不住了,开始考虑换Oracle,除了Oracle强大之外还有一个原因是阿里巴巴那些年03、04年Oracle人才积累达到非常强大的水平。那时Oracle给全球的研发人员发一个称号“ACE”,那时全球三百多位,那时中国十来位,而阿里巴巴有三位。阿里巴巴在Oracle方面能力非常强大。
换了Oracle有一个问题,PHP跟Oracle很不搭的东西,PHP一个用户访问过来建立一个连接切掉一个连接,而Oracle提供的连接数量非常有限的,因为有连接池的功能。怎么用PHP来连接Oracle?我们就抄袭别人看,eBay用的太贵,没有用。了一个日本的,但是上了一个当,总重启。中间件也撑不住了。存储原来放在服务器本身的硬盘上,这个硬盘的支撑能力比较薄弱,存储也撑不住了。
从PHP迁移到Java,有一个问题要解决,如何选择开发团队?请SUN的人做的,快速重构这样一个系统。
把管会员用户信息的模块单独部署在某个集成上,然后替换掉。我们做一个member1.taobao,而member下线,把其他的交易一个个替换掉,要不要再替换回来呢?我们没有替换回来,直接在线上运行,member1.taobao,导致另外一家很强大的互联网公司也是这么来做的。现在看到的是架构框架。阿里巴巴自己做了MVC框架,控制层用了EJB,当时SUN的人鼓吹EJB很好。搜索引擎是为了减轻数据库的压力。搜索引擎一开始是在服务器的本地硬盘上做,后来用NAS的存储。
一个是性能、一个是容量、一个是成本。为了这几个点进行优化。一开始用一个Oracle数据库,大概推算一下,一个Oracle数据库容纳多少数据,支撑多少访问量,差不多到亿的级别满了不够用了,淘宝绝对不是想承载一个亿的数据,所以进行了分库的处理。一个Oracle切成两个数据库的存储。接着在Java做分库路由的控制。接着缓存,淘宝用缓存几乎用到极致,淘宝商品详情全部在缓存里面取的,每天有几十亿的流量,数据库里面肯定都接不住。
还用到了CDN,后面会有一个话题讲淘宝双十一,很重要的角是CDN,淘宝双十一已经达到了873G每秒,中国最大的CDN服务商,上市说明书里面支撑500多个G,淘宝是873G。
一开始Weblogic没交钱,后来要交钱,很贵,就开始用Jboss。SUN的人走了后把EJB丢掉了。
进展到这个版本叫做2.1,有分库、加入CDN,做了一些架构方面的处理。再往后发展会怎样呢?就像人一样,每一步不一样,当大到一定程度以后新的问题出来了。2.1版本里面存储问题非常严重。最大的问题还是存储,永远不够,我们用了IOE之后,相当长一段时间比较稳定,花那么多钱是有效果的。
挑战最大的不是数据库的存储,而是文件存储,见证TFS的诞生
淘宝上有很多图片文件,非常多。2010年的时候大概有280多亿的图片数量,现在应该超过1000亿的图片数量。一开始用的低端的存储,低端不行用中端的,再用高端,越来越贵,一扩容增加十几万的成本。再往上扩,集网络不够用了,实在没地方扩展了怎么办?
2006年的时候,淘宝网决定开发一个分布式的文件存储系统,非常幸运的是2007年初的时候,在硅谷一家伟大的公司公布了一篇论文,GFS的存储体系,论文公布出来之后,两周之内淘宝出来一套淘宝网的文件存储系统,叫TFS,事情神奇的不是谷歌雪中送炭,神奇
2006年的时候,淘宝网决定开发一个分布式的文件存储系统,非常幸运的是2007年初的时候,在硅谷一家伟大的公司公布了一篇论文,GFS的存储体系,论文公布出来之后,两周之内淘宝出来一套淘宝网的文件存储系统,叫TFS,事情神奇的不是谷歌雪中送炭,神奇
的是也有一家也开发了TFS。淘宝和谷歌有一些不一样的,谷歌存放文件名索引的东西反而成为瓶颈,扩容能力有限制,因为文件名有意义。但是淘宝文件名不需要有什么意义。因为淘宝上面存储的图片取名字没有意义的。还有交易快照,原来淘宝拍下商品记下ID号,跟原来商品关联的,原来的商品不能修改,修改交易出问题了,那时存储有限。后来存储方面有TFS了,交易弄下来之后,把商品拍一个快照出来,作为文件存储下来,每一笔交易包含图片、信息号。原来商品的图片不敢太大,淘宝灰蒙蒙的压缩非常严重,而现在可以很大的图片。
还有一个故事是性能的问题。刚才说到缓存,一开始淘宝网用页面端的缓存,把页面分成几个片断,商品页面上有卖家的信息,不会变的,作为一个文件存储在硬盘上去,这是页面端ESI的缓存。后来发现数据也必须十月缓存,商家的信息每个商品都要用,数据库里取每一天是几百亿取数据的访问量,这么多的访问量如果不用缓存是撑不住的。淘宝自己研究了KV的缓存系统,淘宝网自己写了一个缓存系统,淘宝商品详情可以放进去。比如说验证码,每天生成一万个验证码进去,用户随机取。用数据库的缓存memcached出来了,参照了它的方案,有了内存的方案叫Tair,是自己缓存系统,为什么淘宝不用memcached的东西,因为淘宝要用这些东西的时候太早了,还没有任何人给我们,只好自己创造,走自主研发的道
路。
发布评论