淘宝网的技术和产品架构和开源应用(转载)

 淘宝网,是一个在线商品数量突破一亿,日均成交额超过两亿元人民币,注册用户接近八千万的大型电子商务网站,是亚洲最大的购物网站。那么对于淘宝网这样大规模的一个网站,我猜测你们必定会很是关心整个网站都采用了什么样的技术、产品和架构,也会很想了解在淘宝网中是否采用了开源的软件或者是彻底采用的商业软件。那么下面我就简单的介绍一下淘宝网中应用的开源软件。

    对于规模稍大的网站来讲,其IT必然是一个服务器集群来提供网站服务,数据库也必然要和应用服务分开,有单独的数据库服务器。对于像淘宝网这样规模的网站而言,就是应用也分红不少组。那么下面,我就从应用服务器操做系统、应用服务器软件、Web Server、数据库、开发框架等几个方面来介绍一下淘宝网中开源软件的应用。

前端

Linux 操做系统

    咱们首先就从应用服务器的操做系统提及。一个应用服务器,从软件的角度来讲他的最底层首先是操做系统。要先选择操做系统,而后才是操做系统基础上的应用软件。在淘宝网,咱们的应用服务器上采用的是Linux操做系统。Linux操做系统从1991年第一次正式被公布到如今已经走过了十七个年头,在PC Server上有普遍的应用。硬件上咱们选择PC Server而不是小型机,那么Server的操做系统供咱们选择的通常也就是Linux,FreeBSD, windows 2000 Server或者Windows Server 2003。若是不许备采用微软的一系列产品构建应用,而且有能力维护Linux或者FreeBSD,再加上成本的考虑,那么仍是应该在Linux和 FreeBSD之间进行选择。能够说,如今Linux和FreeBSD这两个系统难分伯仲,很难说哪一个必定比另一个要优秀不少、可以全面的超越对手,应该是各有所长。那么在选择的时候有一个因素就是企业的技术人员对于哪一种系统更加的熟悉,这个熟悉一方面是系统管理方面,另一方面是对于内核的熟悉,对内核的熟悉对于性能调优和对操做系统进行定制剪裁会有很大的帮助。而应用全面的优化、提高性能也是从操做系统的优化开始的。

 

JBoss Applcation Server 应用服务器

    在肯定了服务器的硬件、服务器的操做系统以后,下面咱们来讲说业务系统的构建。淘宝网有不少业务系统应用是基于JEE规范的系统。还有一些是C C++构建的应用或者是Java构建的Standalone的应用。那么咱们要选择一款实现了JEE规范的应用服务器。咱们的选择是JBoss Applcation Server。JBoss AS是RedHat的一个开源的支持JEE规范的应用服务器。在几年前,若是采用Java技术构建互联网应用或者企业级应用,在开源软件中的选择通常也就是Apache组织的Tomcat、JBoss的 JBoss AS和Resin。严格意义上讲,Tomcat和Resin并不能算是一个应用服务器,他们是实现了部分J2EE规范的一个容器。而商业软件的选择就是 IBM的WebSphere和BEA的WebLogic。到了如今,除了JBoss AS外,Apache的Geronimo,Sun的Glassfish也都是很优秀的JEE应用服务器。也给如今的开发人员提供了更多的选择。具体对于目前JEE应用服务器的比较。这边就不在赘述。

    在应用服务器前端,咱们采用了Web Server作了一次转发,咱们选择的Web服务器是大名鼎鼎的Apache。几年前,Apache几乎是Linux系统上开源Web Server的惟一选择。那个时候虽然也有一些其余的开源的Web Server,可是从功能和稳定性上来讲都没法和Apache相对。在今天来讲,Lighty也会是一个很是好的选择。Lighty是一个很是轻量级、占用内存资源也比较少的Web Server。虽然功能上没有Apache强大,可是在很多场景下,性能是很是出色、强于Apache的。而微软的IIS,就只能工做在Windows的系统上了。而且使用IIS的话,基本上也就是选择了ISAPI、ASP或者ASP.NET进行Web应用的开发了。

 

Oracle 10g 数据库 和MySQL并用

    说完了咱们采用的操做系统、应用服务器、WebServer后,下面就来谈谈咱们的数据库。在淘宝网的应用中,采用了两种关系型数据库管理系统。一个是 Oracle公司的Oracle 10g,另一个是Sun MySQL的MySQL。Oracle是一款优秀的、普遍采用的商业数据库管理软件。有很强大的功能和安全性,能够处理相对海量的数据。而MySQL是一款很是优秀的开源数据库管理软件,很是适合用多台PC Server组成多点的存储节点阵列(这里我所指的不是MySQL自身提供的集群功能),每单位的数据存储成本也很是的低廉。用多台PC Server安装MySQL组成一个存储节点阵列,经过MySQL自身的Replication或者应用自身的处理,能够很好的保证容错(容许部分节点失效),保证应用的健壮性和可靠性。能够这么说,在关系数据库管理系统的选择上,能够考虑应用自己的状况来决定。

    一个互联网应用,除了服务器的操做系统,Web Server软件,应用服务器软件,数据库软件外,咱们还会涉及到一些其余的系统,好比一些中间件系统、文件存储系统、搜索、分布式框架、缓存系统等等。在淘宝网,这些系统都是自主开发的,没有采用目前商业的或者开源的产品。有些系统,会存在着一些开源的产品或者商业产品。可是,考虑到淘宝网本身的需求和大并发量的压力,这些系统都选择了自主开发。

 

采用TAOBAO公司内部的开发框架

    前面谈的都是系统级的产品,下面咱们说说开发框架的使用。可能有朋友想问,做为一个如此大规模的网站,淘宝网的Web展示层采用的是什么框架,是怎么实现的呢?曾经也有到淘宝的应聘者问过我这个问题,他问我说是否是用的struts。我告诉他说不是的。其实淘宝网的Web展示层的框架用的不是 struts,不是webwork,不是spring mvc等等。淘宝网的Web展示层的框架用的是集团内部自主开发的一套Web框架。这个框架可以解决一些其余Web框架不能解决的、在淘宝的应用中又会出现并须要解决的问题。在淘宝的多个应用中,也采用了一些开源的框架,好比Spring、iBatis、jBPM、Hessian、Mina等等。这些开源软件的采用为咱们构建应用系统提供了很大的帮助。

    采用开源软件构建系统,我想有两个很大的好处:

    一个是下降成本。假设你有1000台应用服务器,若是你每台服务器上采用的不是JBoss AS或者其余开源的软件,而是使用商业的Oracle BEA的Weblogic或者IBM的WebSphere,那么为这1000台机器的应用购买License的费用是很是高的。

    另一个好处(我以为最大的好处)是你能够看到软件的源码,你能够研究了解软件内部的工做过程、原理。这对于应用设计、开发、查错、优化都是很是有帮助的

 

taobao.com的开源观念

    对于开源软件的应用,有些人可能担忧质量的问题,有些人可能担忧软件自己发展更新的问题,等等。对于质量的问题,我想如今不少的开源软件尤为是一些很著名的开源软件都有很完善的组织,有完善的开发、测试、发布流程。在一个新版本完成前,会有屡次的测试版本发布,最后才是正式版。这和商业软件是同样的。而且由于代码公开,反而更加的容易发现错误,提升质量。至于第二个问题,我想跟第一个问题同样,关键是组织和规划而不在是否开源,而且在不少著名的开源软件背后,会有厂商在进行支持。软件自己的发展应该是不会成为问题的,不太会出现软件忽然中止发展的状况。

    在从此的发展中,咱们仍是会一如既往的关注开源软件的发展,也还会根据须要采用不一样的开源软件。在选择一个开源产品的时候,我会考虑如下几点:

1.这个软件目前的功能和它的RoadMap

2.软件自己的架构

3.该软件开发的活跃度

4.该开源软件是不是遵照该领域内的国际规范的

5.在同类产品中,要挑选有比较优点的。而且要考虑可能存在的移植代价。这个移植指的是采用了这款开源软件后现有系统的移植,或者是从这个开源软件到

其余软件的移植     对于企业级系统、互联网应用来讲,采用开源软件不只能够下降成本,更重要的是可以真正了解软件的内部工做机制。还能够在如今的基础上进行加强和定制,也可以从开源软件中借鉴到不少好的设计和实现。但愿国内能有更多的企业在使用开源软件的同时,也能开源自身的一些软件,或者可以成为一些开源软件的贡献者。而做为淘宝网,咱们也会很是积极的参与到开源的活动中,也会努力为开源的发展作出咱们应有的贡献。
相关文章
相关标签/搜索