淘宝网技术架构的发展过程
淘宝网从2003年开始创办到今,已经成为了个快速发展,海量数据交易的大型网站,截止2011年,在线商品数达到了6.8亿,pv(用户浏览量,在一定程度上能代表网站的承载量)达到了30亿,uv达到8500万,用户数达到5.5亿,活跃用户数达到一亿,成交额从2008年的999亿达到了2011年的6300亿,并每年继续以很快的额速度增长。这些巨大数字的背后是伴随着网站的发展技术的变迁。
版本1.0:这是一个淘宝网最初开发的版本,当时采用的是LAMP:(linux apache mysql php)的架构。这也是当时流行的web框架,其低层的存储数据库采用mySQL读写分离的方式,采用主库备库的方式,备库是主库的镜像拷贝,主要负责读数据的操作,主库则进行最新数据的读写操作,并把最新的数据更新到备库,保持数据的实时性。主备分离有几个好处:1.能便于异地容灾,主库挂了,备库能快速应用起来,介绍的down机器的时间。2. 主库一般进行增删改的操作,从库进行读操作,这样就介绍了主库的压力,能够起到负载均衡的作用。 3.能进行数据的集中分发。
但是mySQL数据库引擎有一个特点,每读一条数据时都要全表锁住,这样就造成性能的损失,因此开始考虑把mySQL数据库转换成oracle数据库。但是这样又出现了一个新的问题,php和oracle是很不兼容搭配的,oracle数据库有;连接池的概念,而且连接数量也很少。曾经的易贝遇到这个问题时引入BEA中间件解决这个问题,但是价格很高,这对于刚发展起来的淘宝网是一个不能忍受的问题。这时,淘宝内部的架构师就在php和数据库之间加了一个中间层SQL relay,但是这个中间层的一个致命的缺点是容易出现死机的问题。
2004.2--2005.3,v2.0版本出来了,这个版本与前一版本的主要不同主要体现在下面几个方面:
A: 从php开发语言转化成了java语言,由于遇到了抓换语言高学习成本的问你,当时就外包给了发明java语言的sun公司的员工的人,一是考虑到了他们能保证转换语言的速度,另一个原因也许就是他们也曾经帮助易贝解决过类似的问题,这样能从那边挖掘到更多的信息和经验。
B: 自己做了一个mvc的框架webx,但是虽然struct的框架很流行,但是由于其低层封装太死难以控制。
C:项目的管理工具应用了Antx。
D:引入了搜索引擎ISearch。这样就可以在数据库中建立索引,能把节点索引数据dump到数据库中。提高查询效率。
不过,当时的web部署服务器采用的是BEA公司的weblogic,虽然淘宝业务的扩大,服务器已经增加到了1000来台,而EBA公司需要进行每年一个cpu一千美金的收费。这样不得不又要变化其他的部署服务器,一个在很久以前就有架构师试验的一个部署到的jboss的论坛系统的基础,使得采用jboss服务器部署毋庸置疑,而且也有好的经验积累的。
。。。待续