当前位置: 首页 > 技术落地

有谁知道淘宝是用什么语言开发的吗?

时间:2024-02-29 21:34:01 技术落地

淘宝的技术架构一直在变化,分为几个阶段: V1.0:小而快(2003.5 – 2004.5)淘宝诞生于2003年,采用LAMP经典架构(linux+apache+mysql+php),后端采用PHP语言V2.0:多层次结构,并开始制作自己的软件(2004.2 – 2008.3) 2004年,在淘宝业务发展的推动下,淘宝开发参考了电信运营商、银行等的一些企业解决方案,进行了改造将LAMP架构融入Oracle+IBM小型机的数据库架构和EMC存储方式。

为了和Oracle合作,php也被java彻底取代了。

V3.0:产品化思维、服务化框架(2007.10-2009.11) 2007年,淘宝年交易额突破400亿元,平均每天近亿笔,每天创造超过100万笔交易。

淘宝改造成分布式架构,引入缓存、分布式存储和分布式搜索引擎。

此时应用服务器使用JBoss,数据库从Oracle改为MySQL,语言仍然是java。

V4.0:系统化、智能化、专业化(2009.8-)从2010年开始,淘宝注重统一架构体系,考虑开发效率、运维标准化、高性能、高扩展性,并满足高可用和高可用的要求。

成本低,底层基础设施采用阿里云计算平台。

此时,Web后端语言没有改变,仍然是java。

顺便说一句,上图中的中间件也是用Java开发的。

Java语言在阿里巴巴被广泛使用。

系统大约90%是用Java技术构建的。

淘宝最早期使用PHP来开发系统,但2004年左右,阿里巴巴开始用Java取代PHP,之后阿里巴巴基本全线使用Java。

面对如此大量的用户和并发量,阿里巴巴被迫将Java的性能优化到了极致,也将MySQL等很多开源框架或中间件的性能压榨到了极致。

此外,阿里巴巴还贡献了很多且优秀的开源框架。

我们来看看阿里巴巴正在使用或已经使用了哪些技术。

最初,淘宝使用的是LAMP,即Linux + Apache + MySQL + PHP;随着业务量和并发量的增加,开始转向IOE,也就是IBM小型机。

+ Oracle + EMC存储,随着PV的不断上升,IOE框架已经到了瓶颈。

阿里巴巴提出了“去IOE”的口号。

随着PHP迁移到Java,分布式平台开始诞生;受邀SUN更换开发语言,我们开始使用Java作为基础语言,使用MVC框架+EJB+IBatis,后来改为Spring+IBatis;关于缓存,我们从最早的ESI进行页面片段缓存,到TBstore分布式Key-Value缓存,发展到现在的自动开发分布式缓存系统Tair;负载均衡技术:Nginx和HAProxy,都是工作在网络第七层的反向代理软件;加入阿里云后,有一个负载均衡服务SLB,提供给所有阿里云用户使用;分布式服务框架,流行的Dubbo。

阿里巴巴后来选择了HSF来进行系统间的调用。

它是一个分布式RPC框架;消息中间件:Notify是阿里巴巴自研的消息服务引擎,也支持淘宝核心系统双十之一;分布式数据库访问:TDDL是指淘宝分布式数据层。

数据存储可自由扩展,不再受单机容量瓶颈。

后来更名为DRDS(分布式关系数据库服务)。

我们来看看阿里巴巴贡献了哪些开源项目。

FastJSON:用Java语言实现的JSON解析器和生成器,性能良好; Dubbo:高性能分布式服务框架,可以通过高性能RPC实现服务之间的调用; Druid:高效的JDBC连接池和监控组件; AliSQL:一个开源数据库,基于MySQL正式版的一个分支; RocketMQ:分布式消息中间件; ApasaraCache:飞天缓存,基于Redis改进的K/V数据库; FastDFS:一个开源的分布式文件系统; OceanBase:支持海量数据的高性能分布式数据库系统; Zeus:完整的Hadoop运行平台,支持任务的全生命周期; Otter:基于数据库增量日志分析,是一个分布式数据库同步系统,可以准实时地将数据同步到其他数据库。

当然,这些项目只是阿里巴巴开源项目的一小部分。

目前阿里巴巴的系统基本上全方面都使用了Java,其技术水平也是世界一流的。

我将继续分享我对Java开发、架构设计、程序员职业发展等方面的见解,希望得到大家的关注。

我是@豆杰巴科技,很高兴回答这个问题。

很多IT大佬已经在技术层面回答过这个问题了,我就不再重复了。

我只说一件事。

通过这个问题,我发现提问题的家伙可能对技术更感兴趣。

问这个问题的完整方式应该是比较全面的。

我会帮助那家伙添加它,或者它可能对其他有需要的朋友有帮助。

事实上,淘宝是一个超级庞大、复杂的IT项目。

简化之后,整个淘宝包括前端和后端。

前端就是我们能看到的,比如电脑网页版的淘宝、安卓手机的淘宝APP、iPhone的淘宝APP、手机H5版本。

它们都使用不同的开发语言,甚至同一个终端也可能使用它们。

混合开发;如果你问前端,这个问题是这样的:淘宝安卓APP是用什么语言开发的?淘宝的后台对用户来说是不可见的。

是支撑整个前端运行的基础。

就像我们看到一辆汽车在行驶时,不仅仅是车轮在转动。

汽车有发动机、变速箱、转向、刹车等,当一系列部件协同工作时,这些可以比作淘宝的后端。

因为淘宝的业务极其复杂,后端不是语言,无法用一种语言完成。

甚至有可能每个业务都会使用不同的语言,利用不同语言的特点。

那么具体的后端问题可以是:淘宝后台订单系统用什么语言开发,用什么数据库?希望以上内容对大家有所帮助。

如果你喜欢,请关注我。

谢谢。