1

淘寶的技術(shù)架構(gòu)一直在變的,分幾個(gè)階段:

V1.0:小而快(2003.5 – 2004.5)

2003年淘寶誕生,用的是LAMP經(jīng)典架構(gòu)(linux+apache+mysql+php),后端用的是php語(yǔ)言

V2.0:多層次結(jié)構(gòu),開(kāi)始做自己的軟件(2004.2 – 2008.3)

2004年在淘寶業(yè)務(wù)發(fā)展的推動(dòng)下,淘寶開(kāi)發(fā)參考了電信運(yùn)營(yíng)商、銀行等的一些企業(yè)解決方案,將LAMP架構(gòu)改造為Oracle+IBM小型機(jī)的數(shù)據(jù)庫(kù)架構(gòu)和EMC存儲(chǔ)方式。為了配合Oracle,php也徹底被替換為java。

V3.0:產(chǎn)品化思維及服務(wù)導(dǎo)向框架(2007.10-2009.11)

2007年,淘寶全年的交易額超過(guò)400億元,平均近1億多一天,每天有100多萬(wàn)筆交易被創(chuàng)建。淘寶被改造成分布式架構(gòu),引入緩存,分布式存儲(chǔ)和分布式搜索引擎。這時(shí)候應(yīng)用服務(wù)器使用的是JBoss,數(shù)據(jù)庫(kù)又從Oracle變成了MySQL,語(yǔ)言還是java。

V4.0:系統(tǒng)化、智能化、專(zhuān)業(yè)化(2009.8-)

從2010年開(kāi)始,淘寶網(wǎng)重點(diǎn)著眼于統(tǒng)一架構(gòu)體系,從整體系統(tǒng)層面考慮開(kāi)發(fā)效率、運(yùn)維標(biāo)準(zhǔn)化、高性能、高可擴(kuò)展性、高可用、低成本方面的要求,底層的基礎(chǔ)架構(gòu)統(tǒng)一采用了阿里云計(jì)算平臺(tái)。這時(shí)候的web后端語(yǔ)言沒(méi)變,還是java。

順便說(shuō)一下,上圖的中間件也是java開(kāi)發(fā)的,java語(yǔ)言在阿里應(yīng)用非常廣,大約90%以上的系統(tǒng)是由Java技術(shù)構(gòu)建。

最佳貢獻(xiàn)者
2

淘寶網(wǎng)在最早的時(shí)候使用的 PHP 開(kāi)發(fā)的系統(tǒng),不過(guò)在 04 年左右,阿里開(kāi)始把 PHP 換成 Java,然后阿里基本上全線使用的 Java。

因?yàn)槊鎸?duì)著如此量級(jí)的用戶(hù)和并發(fā)量,所以逼著阿里把 Java 的性能優(yōu)化到極致,并且對(duì)于很多開(kāi)源框架或中間件,也將其的性能壓榨到極致,比如 MySQL,另外阿里也貢獻(xiàn)了極多及優(yōu)秀的開(kāi)源框架。

讓我們看看阿里都用到或用過(guò)哪些技術(shù)

  • 最初淘寶使用的是 LAMP,也就是 Linux + Apache + MySQL + PHP;隨著業(yè)務(wù)量和并發(fā)量的上升,開(kāi)始轉(zhuǎn)用 IOE,也就是 IBM 小型機(jī) + Oracle + EMC 存儲(chǔ),然后隨著 PV 的繼續(xù)上升,IOE 的框架已經(jīng)到了瓶頸,阿里提出了“去 IOE”的口號(hào),隨著 PHP 向 Java 的遷移,分布式平臺(tái)開(kāi)始誕生;

  • 邀請(qǐng) SUN 公司更換開(kāi)發(fā)語(yǔ)言,開(kāi)始使用 Java 做基礎(chǔ)語(yǔ)言,采用 MVC 框架 + EJB + IBatis ,后續(xù)改為 Spring + IBatis;

  • 關(guān)于緩存,從最早的 ESI 做頁(yè)面片段緩存,到 TBstore 分布式 Key-Value 緩存,發(fā)展到現(xiàn)在的自研分布式緩存系統(tǒng) Tair;

  • 負(fù)載均衡技術(shù):Nginx、HAProxy,都是工作在網(wǎng)絡(luò)第七層的反向代理軟件;上了阿里云之后,有一個(gè)負(fù)載均衡的服務(wù) SLB,提供給所有的阿里云用戶(hù)使用;

  • 分布式服務(wù)框架,紅極一時(shí)的 Dubbo,阿里后來(lái)選擇了 HSF 用于系統(tǒng)間的調(diào)用,是一個(gè)分布式 RPC 框架;

  • 消息中間件:Notify 是阿里自研的消息服務(wù)引擎,也是支撐雙十一的核心系統(tǒng)之一;

  • 分布式數(shù)據(jù)庫(kù)訪問(wèn):TDDL 是 Taobao 分布式數(shù)據(jù)層的意思,數(shù)據(jù)存儲(chǔ)可以自由擴(kuò)展,不再受單機(jī)容量的瓶頸,后來(lái)改了個(gè)名字叫做 DRDS (分布式關(guān)系數(shù)據(jù)庫(kù)服務(wù))。


再看看阿里貢獻(xiàn)過(guò)哪些開(kāi)源項(xiàng)目

  • FastJSON:一個(gè)性能很好的 Java 語(yǔ)言實(shí)現(xiàn)的 JSON 解析器和生成器;

  • Dubbo:高性能的分布式服務(wù)框架,可以通過(guò)高性能的 RPC 實(shí)現(xiàn)服務(wù)之間的調(diào)用;

  • Druid:一個(gè)高效的 JDBC 連接池、監(jiān)控組件;

  • AliSQL:開(kāi)源數(shù)據(jù)庫(kù),是基于 MySQL 官方版本的一個(gè)分支;

  • RocketMQ:分布式消息中間件;

  • ApasaraCache:飛天緩存,基于 Redis 改進(jìn)的 K/V 數(shù)據(jù)庫(kù);

  • FastDFS:一個(gè)開(kāi)源的分布式文件系統(tǒng);

  • OceanBase:個(gè)支持海量數(shù)據(jù)的高性能分布式數(shù)據(jù)庫(kù)系統(tǒng);

  • Zeus:是一個(gè)完整的 Hadoop 作業(yè)平臺(tái),它支持了任務(wù)的整個(gè)生命周期;

  • Otter:基于數(shù)據(jù)庫(kù)增量日志解析,將數(shù)據(jù)準(zhǔn)實(shí)時(shí)同步到另外的數(shù)據(jù)庫(kù)中,是一個(gè)分布式數(shù)據(jù)庫(kù)同步系統(tǒng)。


當(dāng)然,這些項(xiàng)目只是阿里開(kāi)源項(xiàng)目中很小的一部分,目前阿里系基本是全線 Java,而且技術(shù)水平在國(guó)際上也是一流的。

我將持續(xù)分享Java開(kāi)發(fā)、架構(gòu)設(shè)計(jì)、程序員職業(yè)發(fā)展等方面的見(jiàn)解,希望能得到你的關(guān)注。

3

我是 @豆姐扒科技,很高興回答這個(gè)問(wèn)題。

技術(shù)層面上面已經(jīng)有很多IT大佬回答了,我就不重復(fù)了,只說(shuō)一件事。

通過(guò)這個(gè)問(wèn)題,發(fā)現(xiàn)提問(wèn)的小老弟對(duì)技術(shù)可能比較感興趣,這個(gè)問(wèn)題完整的問(wèn)法應(yīng)該更全面一點(diǎn),我?guī)托±系苎a(bǔ)充一下,或者能夠?qū)ζ渌枰呐笥延袔椭?/p>

其實(shí)淘寶是一個(gè)超級(jí)巨大,超級(jí)復(fù)雜的IT項(xiàng)目,簡(jiǎn)化之后整個(gè)淘寶包括了前端和后端。

前端就是我們能夠看到,比如電腦網(wǎng)頁(yè)版的淘寶網(wǎng)、安卓手機(jī)的淘寶APP、蘋(píng)果手機(jī)的淘寶APP、還有移動(dòng)H5版本,它們分別都會(huì)用到不同的開(kāi)發(fā)語(yǔ)言,甚至同一個(gè)端也有可能采用混合開(kāi)發(fā);

如果是問(wèn)前端這個(gè)問(wèn)題是這樣的:淘寶安卓端APP是用什么語(yǔ)言開(kāi)發(fā)的?

淘寶網(wǎng)后端是用戶(hù)看不到的,是支撐整個(gè)前端運(yùn)行的基礎(chǔ),就像我們看一臺(tái)車(chē)能跑,其實(shí)不光是輪子在轉(zhuǎn)動(dòng),汽車(chē)?yán)锩媸怯邪l(fā)動(dòng)機(jī)、變速箱、轉(zhuǎn)向、制動(dòng)等等一系列的部件在配合,這些就可以類(lèi)比成淘寶網(wǎng)的后端。

因?yàn)樘詫毜臉I(yè)務(wù)的極度復(fù)雜,所以后端也不是一種語(yǔ)言,也不可能由一種語(yǔ)言完成,甚至可能每一個(gè)業(yè)務(wù)會(huì)用不同的語(yǔ)言,利用不同語(yǔ)言的特點(diǎn)。

所以后端具體的問(wèn)題可以這樣:淘寶后端訂單系統(tǒng)是用什么語(yǔ)言開(kāi)發(fā)的,用的什么數(shù)據(jù)庫(kù)?


以上,希望對(duì)大家有幫助,喜歡的話請(qǐng)關(guān)注我,謝謝。

4

早期php

現(xiàn)在主要是java

阿里是全世界使用java最廣泛的公司之一

5

您的閱讀,歡迎關(guān)注胖哥。

淘寶作為全球數(shù)一數(shù)二的大流量網(wǎng)站,可以說(shuō)是技術(shù)和業(yè)務(wù)完美融合的典型,業(yè)務(wù)驅(qū)動(dòng)著技術(shù)不斷升級(jí),反過(guò)來(lái)技術(shù)又加快了業(yè)務(wù)的發(fā)展,所以才有了阿里巴巴這么大體量和業(yè)務(wù)量的公司。

淘寶現(xiàn)在的開(kāi)發(fā)語(yǔ)言是全線Java體系,整體Java架構(gòu),這也是中國(guó)電商平臺(tái)甚至大部分互聯(lián)網(wǎng)公司都采用的開(kāi)發(fā)語(yǔ)言,像京東,蘇寧,國(guó)美,滴滴,美團(tuán)都是Java體系。

淘寶采用Java作為主要開(kāi)發(fā)語(yǔ)言,在不斷業(yè)務(wù)發(fā)展過(guò)程中,也積極參與到Java開(kāi)源的世界,并貢獻(xiàn)了很多有實(shí)戰(zhàn)經(jīng)驗(yàn)的開(kāi)源架構(gòu),這對(duì)Java的推廣起到了很好的作用,并讓中國(guó)的技術(shù)有了全球的貢獻(xiàn)度,讓中國(guó)慢慢從技術(shù)的使用者變成了技術(shù)的創(chuàng)新者,所以另一層面來(lái)說(shuō)阿里巴巴讓中國(guó)Java走向了世界。

說(shuō)起淘寶研發(fā)出來(lái),經(jīng)過(guò)各種大促實(shí)戰(zhàn)并無(wú)償開(kāi)源出來(lái)的框架很多很多,其中最出名的有以下幾種:

FastJson

Dubbo

Altas

這幾天華為被美國(guó)再三制裁,這讓我們很氣憤,同時(shí)希望國(guó)人發(fā)奮圖強(qiáng),在科技和技術(shù)上能站穩(wěn)腳跟,讓那些川建國(guó)們狠狠打臉。

6

淘寶使用的語(yǔ)言是Java,同時(shí)阿里來(lái)源了很多技術(shù)。 如fastjson,dubbo....

7

如果想了解淘寶的技術(shù)發(fā)展路線,推薦看一下《淘寶技術(shù)這十年》這本書(shū)。里面有很詳細(xì)的從一開(kāi)始的用PHP語(yǔ)言,架構(gòu)用最簡(jiǎn)單的LAMP;到后來(lái)?yè)Q成JAVA,架構(gòu)換成IOE(IBM+Oracle+EMC);再到隨著用戶(hù)越來(lái)越多,并發(fā)越來(lái)越大,淘寶去IOE(數(shù)據(jù)庫(kù)換成mysql,服務(wù)器換成分布式架構(gòu),引入緩存);最后業(yè)務(wù)上也是逐漸拆分解耦。同時(shí)也正是淘寶的技術(shù)發(fā)展催生了阿里云。

8

如果你知道什么是中臺(tái),什么是微服務(wù),就不會(huì)問(wèn)出這么初級(jí)的問(wèn)題了。。。用什么語(yǔ)言重要么?

9

Java,中臺(tái)

想要學(xué)做網(wǎng)站,APP不一定仿照別人的語(yǔ)言,任何一門(mén)語(yǔ)言都是可以做得,這個(gè)就得看開(kāi)發(fā)的簡(jiǎn)易度。

你的回答

單擊“發(fā)布您的答案”,即表示您同意我們的服務(wù)條款