淘宝的技术架构一直在变的,分几个阶段:
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亿元,平均近1亿多一天,每天有100多万笔交易被创建。淘宝被改造成分布式架构,引入缓存,分布式存储和分布式搜索引擎。这时候应用服务器使用的是JBoss,数据库又从Oracle变成了MySQL,语言还是java。
V4.0:系统化、智能化、专业化(2009.8-)
从2010年开始,淘宝网重点着眼于统一架构体系,从整体系统层面考虑开发效率、运维标准化、高性能、高可扩展性、高可用、低成本方面的要求,底层的基础架构统一采用了阿里云计算平台。这时候的web后端语言没变,还是java。
顺便说一下,上图的中间件也是java开发的,java语言在阿里应用非常广,大约90%以上的系统是由Java技术构建。
淘宝网在最早的时候使用的 PHP 开发的系统,不过在 04 年左右,阿里开始把 PHP 换成 Java,然后阿里基本上全线使用的 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 是 Taobao 分布式数据层的意思,数据存储可以自由扩展,不再受单机容量的瓶颈,后来改了个名字叫做 DRDS (分布式关系数据库服务)。
再看看阿里贡献过哪些开源项目
FastJSON:一个性能很好的 Java 语言实现的 JSON 解析器和生成器;
Dubbo:高性能的分布式服务框架,可以通过高性能的 RPC 实现服务之间的调用;
Druid:一个高效的 JDBC 连接池、监控组件;
AliSQL:开源数据库,是基于 MySQL 官方版本的一个分支;
RocketMQ:分布式消息中间件;
ApasaraCache:飞天缓存,基于 Redis 改进的 K/V 数据库;
FastDFS:一个开源的分布式文件系统;
OceanBase:个支持海量数据的高性能分布式数据库系统;
Zeus:是一个完整的 Hadoop 作业平台,它支持了任务的整个生命周期;
Otter:基于数据库增量日志解析,将数据准实时同步到另外的数据库中,是一个分布式数据库同步系统。
当然,这些项目只是阿里开源项目中很小的一部分,目前阿里系基本是全线 Java,而且技术水平在国际上也是一流的。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。
早期php
现在主要是java
阿里是全世界使用java最广泛的公司之一
我是 @豆姐扒科技,很高兴这个问题。
技术层面上面已经有很多IT大佬了,我就不重复了,只说一件事。
通过这个问题,发现提问的小老弟对技术可能比较感兴趣,这个问题完整的问法应该更全面一点,我帮小老弟补充一下,或者能够对其它需要的朋友有帮助。
其实淘宝是一个超级巨大,超级复杂的IT项目,简化之后整个淘宝包括了前端和后端。
前端就是我们能够看到,比如电脑网页版的淘宝网、安卓手机的淘宝APP、苹果手机的淘宝APP、还有移动H5版本,它们分别都会用到不同的开发语言,甚至同一个端也有可能采用混合开发;
如果是问前端这个问题是这样的:淘宝安卓端APP是用什么语言开发的?
淘宝网后端是用户看不到的,是支撑整个前端运行的基础,就像我们看一台车能跑,其实不光是轮子在转动,汽车里面是有发动机、变速箱、转向、制动等等一系列的部件在配合,这些就可以类比成淘宝网的后端。
因为淘宝的业务的极度复杂,所以后端也不是一种语言,也不可能由一种语言完成,甚至可能每一个业务会用不同的语言,利用不同语言的特点。
所以后端具体的问题可以这样:淘宝后端订单系统是用什么语言开发的,用的什么数据库?
以上,希望对大家有帮助,喜欢的话请关注我,谢谢。