首页 > 基础设施 > 正文

开源软件在淘宝网的应用

2009-02-19 09:16:25  来源:IT168

摘要:开源软件的历史,我们可以追溯到上个世纪的八十年代。在1983年9月27日,麻省理工学院人工智能实验室(MIT Artificial Intelligence Lab)的Richard M. Stallman在net.unix-wizards以及net.usoft的newsgroups上贴
关键词: 开源软件 淘宝网

    开源软件的历史,我们可以追溯到上个世纪的八十年代。在1983年9月27日,麻省理工学院人工智能实验室(MIT Artificial Intelligence Lab)的Richard M. Stallman在net.unix-wizards以及net.usoft的newsgroups上贴了一份标题为 “new UNIX implementation” 的讯息。这就是如今广为人知的GNU计划的开始。在那则被视为「GNU 宣言」草稿的讯息中,Richard M. Stallman阐述个人的理念与计划的目的-完成一个命名为GNU的“Free UNIX”操作系统,希望藉此寻找理念相同者共襄盛举。从第一个Emacs开始到如今,已经过去了二十多年,现在已经有大量的开源软件可以供我们选择使用,从必须的操作系统到应用服务器软件,从中间件到日常办公软件,从数据库系统到我们的图片处理、视频音频播放等等。可以说我们在日常的生活,不论是娱乐,办公,还是构建企业级应用,都可以完全的采用开源的软件。

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

    一个很小规模的网站,比如说一个企业内部的OA系统,我们只需要架设一台服务器,然后在这台服务器上安装Web服务器,应用服务器,数据库,最后将业务应用部署在这个服务器上,就可以开始工作了。但是对于规模稍大的网站来说,就必须是一个服务器集群来提供网站服务,数据库也必然要和应用服务分开,有单独的数据库服务器。那么对于像淘宝网这样规模的网站,不仅仅是数据库和应用分开服务器部署,就是应用也是分成了很多组,并不是所有应用都绑在一起的。那么下面,我就从应用服务器操作系统、应用服务器软件、WebServer、数据库、开发框架等几个方面来介绍一下淘宝网中开源软件的应用。

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

    在确定了服务器的硬件、服务器的操作系统之后,下面我们来说说业务系统的构建。淘宝网有很多业务系统应用是基于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应用服务器的比较。这边就不在赘述。

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

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

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


第三十五届CIO班招生
国际CIO认证培训
首席数据官(CDO)认证培训
责编:

免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。