文章目錄
前言
京東發(fā)展歷程
京東商城技術(shù)的演進(jìn)
京東自研技術(shù)
京東前端框架Nerv
京東后端架構(gòu)
京東的服務(wù)框架
分布式數(shù)據(jù)庫(kù)StarDB
京東云
移動(dòng)端
Flutter在京東的實(shí)踐
大數(shù)據(jù)
咚咚架構(gòu)
ShardingSphere
京東人物譜
參考
“京東可以高速發(fā)展到今天的規(guī)模的原因,其中最核心的是堅(jiān)持“倒三角”戰(zhàn)略:建立出色的團(tuán)隊(duì);打造財(cái)務(wù)、物流和技術(shù)三大核心系統(tǒng);降低成本、提升效率;為用戶帶來最佳體驗(yàn)。在《京東技術(shù)解密》一書中,大家會(huì)看到技術(shù)驅(qū)動(dòng)的力量,這也是京東第一次全面展示自己的技術(shù)體系。” –劉強(qiáng)東
京東將整個(gè)倒三角形分為四個(gè)橫向,最底層是“團(tuán)隊(duì)”,倒數(shù)第二層是“物流系統(tǒng)、IT系統(tǒng)及財(cái)務(wù)系統(tǒng)”,倒數(shù)第三層是“成本和效率”,最上面一層是“產(chǎn)品、價(jià)格和服務(wù)”。這四部分對(duì)京東的意義分別是基礎(chǔ)、供應(yīng)鏈、關(guān)鍵KPI以及用戶體驗(yàn)。
前言
京東的崛起,就是一部草根長(zhǎng)成大樹的歷史,是中國(guó)電子商務(wù)從零摸索出一條自己道路的歷史。京東的每一步,都走得很實(shí)在,用戶需要什么,就去解決什么。
劉強(qiáng)東,江蘇宿遷人,1974年出生。1992年攜500塊錢和76個(gè)雞蛋考入人大社會(huì)科學(xué)系,1993年開始自學(xué)計(jì)算機(jī),便開始在中關(guān)村給人裝電腦,大學(xué)畢業(yè)時(shí),已有二十幾萬積蓄,在校門口花24萬左右買下一個(gè)餐廳,但幾個(gè)月后虧光。然后在一家日本企業(yè)待了近兩年,1998年在中關(guān)村租下一個(gè)柜臺(tái)賣光盤。明碼標(biāo)價(jià)、正品行貨、售后培訓(xùn),憑著這幾招贏得了很多顧客青睞,于是生意不斷擴(kuò)張。2003年轉(zhuǎn)入線上銷售,從此走上開掛之路。
京東發(fā)展歷程
1998年----京東成立
2001年----成為光磁產(chǎn)品首屈一指的代理商
2004年----多媒體網(wǎng)正式開通
2007年----正式更名為京東商城
2010年----京東商城團(tuán)購(gòu)頻道正式上線
2012年----京東商城的火車票預(yù)訂頻道上線
2012年2月,京東商城酒店預(yù)訂業(yè)務(wù)上線
2013年2月,京東完成新一輪7億美元融資,投資方包括加拿大安大略教師退休基金和沙特億萬富翁阿爾瓦利德王子控股的王國(guó)控股集團(tuán)以及公司- -些主要股東跟投
2013年3月30日,京東,去商城化,全面改名為京東,隨后更換LOGO。2013年3月30日,啟用http://JD.COM域名,并將360buy的域名切換至JD.此外,“京東商城”這一官方名稱將被縮減為“京東"。
2013年4月23日,京東宣布注冊(cè)用戶正式突破1億。
2013年7月30日,京東CEO劉強(qiáng)東表示,京東已經(jīng)成立了金融集團(tuán)。
2014年4月2日,京東集團(tuán)正式進(jìn)行分拆,其中包括兩個(gè)子集團(tuán)、- 一個(gè)子公司和一個(gè)事業(yè)部,涉及金融、拍拍及海外業(yè)務(wù)。具體的分拆方式是:京東集團(tuán)下設(shè)京東商城集團(tuán)、金融集團(tuán)、子公司拍拍網(wǎng)和海外事業(yè)部,京東創(chuàng)始人劉強(qiáng)東會(huì)擔(dān)任京東集團(tuán)CEO。
2014年5月22日上午9點(diǎn),京東集團(tuán)在美國(guó)納斯達(dá)克掛牌上市(股票代碼: JD)。美國(guó)也迎來了中國(guó)最大的赴美IPO。
2014年11月,京東集團(tuán)宣布大家電“京東幫服務(wù)店"在河北省趙縣正式開業(yè)。
2015年1月9日晚間,京東(Nasdaq:JD)、 易車網(wǎng)(NYSE:BITA) 和騰訊(SEHK: 00700)聯(lián)合宣布,三方已達(dá)成最終協(xié)議,京東和騰訊以現(xiàn)金和獨(dú)家資源的形式對(duì)易車網(wǎng)投資約13億美元。
2015年10月17日,騰訊集團(tuán)與京東集團(tuán)在京聯(lián)合宜布推出全新戰(zhàn)略合作項(xiàng)目-京騰計(jì)劃。
2015年10月10日,京東集團(tuán)發(fā)布公告稱,因C2C (個(gè)人對(duì)消費(fèi)者)模式當(dāng)前監(jiān)管難度較大,無法杜絕假冒偽劣商品,決定到12月31日時(shí)停止提供其C2C模式(拍拍網(wǎng))的電子商務(wù)平臺(tái)服務(wù),并在三個(gè)月的過渡期后將其徹底關(guān)閉。
京東商城技術(shù)的演進(jìn)
京東商城網(wǎng)站經(jīng)歷了ASP、.NET、Java三個(gè)階段。
2003年,劉強(qiáng)東著手建設(shè)自己的網(wǎng)站,開發(fā)人員為曹鵬和另一個(gè)程序員,技術(shù)為ASP。因?yàn)锳SP簡(jiǎn)單,上手快。把網(wǎng)站建起來,把商品擺起來,把訂單下下來,這就是當(dāng)時(shí)網(wǎng)站要解決的問題,至于用什么技術(shù)去實(shí)現(xiàn),那是其次的。2003年,從外部購(gòu)買了一套ASP在線商城軟件,并在此基礎(chǔ)上逐步開發(fā)維護(hù),形成了第一代網(wǎng)站“京東多媒體網(wǎng)”。
2004~2006年,技術(shù)人員一共5人左右。2005年,劉強(qiáng)東力排眾議,關(guān)閉了所有線下12家門店,專攻電子商務(wù)。到2007年6月,日訂單量已突破3000單,從那時(shí)起,我就知道有個(gè)網(wǎng)站叫京東,也開始在上面買些簡(jiǎn)單的數(shù)碼產(chǎn)品。
2007年8月,第一筆風(fēng)投到位,劉強(qiáng)東可以大展拳腳了。
2008年,開始從ASP轉(zhuǎn)向.Net。2008年夏天,Donny帶著一幫人,在通州一個(gè)高檔小區(qū)的一座三層別墅里,十來個(gè)人,進(jìn)行了三個(gè)多月的封閉開發(fā),完成了向.Net的升級(jí)改造。日子雖苦,但一日三餐有專門做飯的阿姨好飯好菜伺候,倒也安逸自在。唯獨(dú)晚上蚊蟲襲來,攪得一簾幽夢(mèng)。
新版網(wǎng)站一直運(yùn)行到2010年,訂單量從日均幾千單增長(zhǎng)到十幾萬單,實(shí)現(xiàn)了飛躍式的發(fā)展。
2010年,POP平臺(tái)上線
2012年5月,Java版交易系統(tǒng)上線,標(biāo)志著.NET向Java架構(gòu)的轉(zhuǎn)移;主要原因是服務(wù)端程序已經(jīng)朝Linux平臺(tái)遷移的大勢(shì)所趨,加上Windows和及開發(fā)工具Visual Studio的成本過高。同時(shí),所有系統(tǒng)按SOA架構(gòu)設(shè)計(jì),對(duì)外提供服務(wù),禁止系統(tǒng)直接讀取數(shù)據(jù)庫(kù);數(shù)據(jù)庫(kù)也從SQL Server換成了MySQL,緩存上由主要使用Memcached轉(zhuǎn)為結(jié)合Redis共同使用。
2010年,開始搭建POP(Platform Open Plan)平臺(tái),轉(zhuǎn)型Java。
京東自研技術(shù)
京東前端框架Nerv
Nerv 是一款由京東凹凸實(shí)驗(yàn)室打造的類 React 前端框架。目前已廣泛運(yùn)用在京東商城(JD.COM)核心業(yè)務(wù)及TOPLIFE全站。Nerv 基于React標(biāo)準(zhǔn),使用 Virtual Dom 技術(shù),擁有和 React 一致的 API 與生命周期,如果你已經(jīng)對(duì) React 使用非常熟悉,那么使用 Nerv 開發(fā)對(duì)你來說絕對(duì)是零學(xué)習(xí)成本。
與此同時(shí),相比于 React 以及市面其他同類型框架,Nerv 更具體積輕量,性能高效的特點(diǎn)。并且,它符合當(dāng)下國(guó)情,可以完美兼容 IE8 及以上瀏覽器。
官網(wǎng):https://nerv.aotu.io/
文檔:https://nervjs.github.io/docs/
GitHub:https://github.com/NervJS/nerv
京東后端架構(gòu)
京東無線服務(wù)端架構(gòu):
京東的服務(wù)框架
售后系統(tǒng)使用的就是基礎(chǔ)的三層架構(gòu)。應(yīng)用層有不同身份的三個(gè)端入口,服務(wù)層提供了一些業(yè)務(wù)支持和數(shù)據(jù)支持,數(shù)據(jù)層目前使用到了MySQL和Redis以及ElasticSearch。當(dāng)然還有一些中間件使用,比如rpc框架,zk配置中心,worker分布式定時(shí)任務(wù),jmq消息。還有完善的基礎(chǔ)設(shè)施,統(tǒng)一監(jiān)控和日志采集。
JSF雛形——ASF
JSF早期叫做ASF,當(dāng)時(shí)的選擇如下:
RPC框架:基于dubbo2.3.2做配置擴(kuò)展,以及功能擴(kuò)展包括:rest(resteasy)、webservice(cxf)、kryo/thrift序列化、調(diào)用壓縮等;
注冊(cè)中心:Zookeeper,RPC框架直接接入數(shù)據(jù)源;
監(jiān)控中心:監(jiān)控服務(wù)+HBase;
管理平臺(tái):讀取Zookeeper做管理平臺(tái),提供基本的上下線、黑白名單等功能。
現(xiàn)在的JSF構(gòu)成,目前的JSF幾乎是全部自研
RPC框架:輕量級(jí),更佳的性能,兼容舊版本協(xié)議;
注冊(cè)中心:基于DB作為數(shù)據(jù)源,前置Index服務(wù);支持十倍接入量;部分邏輯放在注冊(cè)中心減少客戶端負(fù)擔(dān);
監(jiān)控中心:監(jiān)控Proxy服務(wù)+InfluxDB(2015后改為ElasticSearch);
管理端:基于DB,功能更強(qiáng)大,提供完善的服務(wù)治理管理功能;打通京東應(yīng)用管理平臺(tái),提供應(yīng)用依賴關(guān)系梳理;
HTTP網(wǎng)關(guān):基于Netty,支持跨語(yǔ)言調(diào)用。
目前的JSF是基于DB做的數(shù)據(jù)最終一致,也就是AP系統(tǒng)。注冊(cè)中心主要實(shí)現(xiàn)的就是服務(wù)列表的注冊(cè)訂閱推送,服務(wù)配置的獲取下發(fā),服務(wù)狀態(tài)的實(shí)時(shí)查看等功能。注冊(cè)中心節(jié)點(diǎn)是無狀態(tài)的,可水平擴(kuò)展的。整個(gè)注冊(cè)中心集群下的所有注冊(cè)中心幾點(diǎn)都是等價(jià)的。
JSF優(yōu)化與特點(diǎn):
引入Index服務(wù)概念:該服務(wù)就是一個(gè)最簡(jiǎn)單HTTP的服務(wù),用于找注冊(cè)中心節(jié)點(diǎn)(同機(jī)房或者壓力最小或者其它特定場(chǎng)景),可以認(rèn)為是不會(huì)掛的服務(wù),RPC框架會(huì)優(yōu)先連該服務(wù)拿注冊(cè)中心地址,這樣子的好處是注冊(cè)中心地址變化后,RPC框架不用修改任何設(shè)置;
注冊(cè)中心內(nèi)存有服務(wù)列表全量緩存,連不上數(shù)據(jù)庫(kù)也保證可讀;
數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)更適合各種維度展示、過濾、分析等,例如根據(jù)分組/IP/應(yīng)用/機(jī)房等不同維度;
注冊(cè)中心就是個(gè)JSF服務(wù),監(jiān)控到壓力大即可進(jìn)行動(dòng)態(tài)水平擴(kuò)展,不會(huì)出現(xiàn)2015年雙十一那樣的事故了;
服務(wù)列表推送邏輯改進(jìn):例如原來100個(gè)Provider,現(xiàn)在加1個(gè)節(jié)點(diǎn),之前的SAF是需要下發(fā)101個(gè)節(jié)點(diǎn),自己判斷加了哪個(gè)節(jié)點(diǎn),進(jìn)行長(zhǎng)鏈接建立;現(xiàn)在的改進(jìn)是:修改為下發(fā)一個(gè)add事件,告知RPC框架加了1個(gè)節(jié)點(diǎn),RPC框架進(jìn)行長(zhǎng)鏈接建立;這樣做大大減少了推送的數(shù)據(jù)量;
注冊(cè)中心與RPC框架可各種交互:注冊(cè)中心和RPC框架是長(zhǎng)鏈接,而且JSF是支持Callback的,注冊(cè)中心可以調(diào)用RPC框架進(jìn)行服務(wù)列表變化之外的操作;例如查看狀態(tài),查看配置,配置下發(fā)等。
分布式數(shù)據(jù)庫(kù)StarDB
2021京東云峰會(huì)上,京東云正式對(duì)外發(fā)布自主設(shè)計(jì)研發(fā)的金融級(jí)國(guó)產(chǎn)分布式數(shù)據(jù)庫(kù) StarDB,支持海量數(shù)據(jù)高并發(fā)在線事務(wù)處理,具備無感分布式、金融級(jí)高可用、高度兼容MySQL、彈性伸縮、安全合規(guī)、智能運(yùn)維管控等重要特性。
京東云
① 京東宙斯:開放接口與合作伙伴進(jìn)行系統(tǒng)與業(yè)務(wù)對(duì)接。
② 京東云鼎:電商應(yīng)用云托管平臺(tái)。
③ 京東云擎:為應(yīng)用開發(fā)者提供便捷的應(yīng)用開發(fā)、部署和托管服務(wù)。
④ 京東云峰:為應(yīng)用開發(fā)者提供便捷的移動(dòng)應(yīng)用客戶端的開發(fā)服務(wù)。
⑤ 京東云匯:為所有參與者提供的社區(qū)互動(dòng)平臺(tái)。
移動(dòng)端
① 虛擬試鏡:與清華大學(xué)合作,結(jié)合增強(qiáng)現(xiàn)實(shí)技術(shù)和試戴活動(dòng)運(yùn)營(yíng)。
② 虛擬試衣間:Z3D虛擬試衣系統(tǒng),帶你玩轉(zhuǎn)京東試衣間。
Flutter在京東的實(shí)踐
隨著2018年底Google正式發(fā)布了Flutter預(yù)覽版本,京東內(nèi)部也越來越多的研發(fā)團(tuán)隊(duì)有用Flutter進(jìn)行開發(fā)業(yè)務(wù)的訴求。京東正式啟動(dòng)研發(fā)并內(nèi)部發(fā)布了JDFlutter引擎。在官方Flutter引擎之上,做了額外的優(yōu)化和功能擴(kuò)展:
Flutter工程改造: 對(duì)Flutter開發(fā)環(huán)境和dart代碼管理進(jìn)行優(yōu)化,可以無縫集成到現(xiàn)有APP中并支持自動(dòng)化dart編譯打包,便于開發(fā)和調(diào)試。
路由及多頁(yè)面管理: 對(duì)原生頁(yè)面和flutter頁(yè)面實(shí)現(xiàn)了集中路由管理,可以雙向傳參、跳轉(zhuǎn)并且進(jìn)行了共享內(nèi)存優(yōu)化。
擴(kuò)展UI組件庫(kù): 官方支持的Material和Cupertino樣式不能滿足需求,京東在內(nèi)部實(shí)現(xiàn)了自定義樣式的組件庫(kù)。
原生能力擴(kuò)展: 對(duì)官方原生能力進(jìn)行了擴(kuò)展,封裝了包括網(wǎng)絡(luò)、登陸、埋點(diǎn)等等基礎(chǔ)能力的打通并提供了50+原生擴(kuò)展API。
Android端動(dòng)態(tài)化支持: 在Android端實(shí)現(xiàn)了動(dòng)態(tài)化支持,可以線上熱更新業(yè)務(wù)。iOS端暫不支持動(dòng)態(tài)化。
目前京東商城、京東視頻、京東到家、京東物流、7Fresh等APP都有業(yè)務(wù)采用JDFlutter進(jìn)行開發(fā)。
大數(shù)據(jù)
① 實(shí)時(shí)數(shù)據(jù)采集
"長(zhǎng)江"項(xiàng)目:將異構(gòu)數(shù)據(jù)源實(shí)時(shí)同步到實(shí)時(shí)數(shù)據(jù)倉(cāng)庫(kù);
"南水北調(diào)"項(xiàng)目:將數(shù)據(jù)同步到離線數(shù)據(jù)倉(cāng)庫(kù);
② 流式數(shù)據(jù)采集
"漢江"項(xiàng)目:基于Storm提供實(shí)時(shí)計(jì)算API;
③ 實(shí)時(shí)查詢服務(wù)
"三峽"項(xiàng)目:基于Spark和PrestoDB解決海量數(shù)據(jù)下的即時(shí)查詢;
④ 實(shí)時(shí)數(shù)據(jù)挖掘
"東海"項(xiàng)目:將數(shù)據(jù)挖掘?qū)崟r(shí)化服務(wù)線上的推薦和搜索;
咚咚架構(gòu)
咚咚之于京東相當(dāng)于旺旺之于淘寶,它們都是服務(wù)于買家和賣家的溝通。1.0 版本的技術(shù)架構(gòu)實(shí)現(xiàn)是非常直接且簡(jiǎn)單粗暴的:
2012開始升級(jí):
2013:
更細(xì)化的應(yīng)用服務(wù)和架構(gòu)分層方式:
ShardingSphere
Sharding-JDBC 的 ShardingSphere 主要由張亮個(gè)人主導(dǎo),是一款基于 Java JDBC 接口實(shí)現(xiàn)的數(shù)據(jù)庫(kù)分庫(kù)分表管理框架。
2018 年 11 月,伴隨著 ShardingSphere 正式進(jìn)入 Apache 孵化,隨后又于 17 個(gè)月之后正式畢業(yè)成為 Apache 頂級(jí)項(xiàng)目,在先后完成了社區(qū)組建,同時(shí)遵循 Apache 的規(guī)則將 ShardingSphere 所有權(quán)從公司與個(gè)人轉(zhuǎn)向社區(qū)所有之后,ShardingSphere 基本完成了第二階段的轉(zhuǎn)變。
京東人物譜
京東技術(shù)牛人眾多,以下只列舉幾個(gè)代表性的:
(1)鄧正平
組建了京東移動(dòng)團(tuán)隊(duì)、主導(dǎo)了京東智能化業(yè)務(wù)技術(shù)研發(fā)、現(xiàn)在為京東智能化物聯(lián)網(wǎng)業(yè)務(wù)開疆拓土。既有一線的軟件開發(fā)和系統(tǒng)架構(gòu)設(shè)計(jì)經(jīng)驗(yàn),又有多年的團(tuán)隊(duì)管理以及業(yè)務(wù)成功開拓經(jīng)驗(yàn),讓他有常人所不能及的戰(zhàn)略眼光和高度,更有敢為人先、不斷創(chuàng)新的開拓精神。
(2)楊思勇
首先帶領(lǐng)團(tuán)隊(duì)向Java方向轉(zhuǎn)移、奠定了京東的Java平臺(tái)基礎(chǔ)、編碼規(guī)劃、MVC框架,積極適應(yīng)環(huán)境,擁抱變化,不斷學(xué)習(xí),保持樂觀的精神去戰(zhàn)斗。而且,重點(diǎn)是:研發(fā)的MM們都很喜歡這個(gè)怪蜀黍。
(3)趙剛
長(zhǎng)期研究圖形圖像與智能技術(shù),擁有多項(xiàng)技術(shù)專利與軟件著作權(quán),在京東期間開發(fā)了世界先進(jìn)的Z3D虛擬試衣技術(shù),較好地解決了長(zhǎng)期困擾服裝電商界的用戶個(gè)性化試衣、低成本仿真、多層次服裝搭配等難題。它特別喜歡鉆研技術(shù),16年來一直堅(jiān)持在一線開發(fā),典型的技術(shù)男。
(4)李東
主導(dǎo)開發(fā)京東物流核心系統(tǒng)-青龍系統(tǒng),生活中愛家、愛NBA、愛寫代碼的好男人。他堅(jiān)信:架構(gòu)工作是一個(gè)不斷重構(gòu)自己思想和追求用戶極致體驗(yàn)的過程。
(5)劉海鋒
帶領(lǐng)團(tuán)隊(duì)自主研發(fā)了分布式文件系統(tǒng)JFS(Jingdong FileSystem)與分布式緩存與高速鍵值存儲(chǔ)服務(wù)JimDB,使得京東云技術(shù)產(chǎn)生了質(zhì)的飛躍。他堅(jiān)信擁抱變化,迎接挑戰(zhàn),相信技術(shù)的力量,是京東云搭建骨頭的人。
參考
京東零售云
京東零售開源技術(shù)
京東架構(gòu)專家分享京東架構(gòu)之路
京東前端框架
談?wù)劸〇|的服務(wù)框架
審核編輯 黃宇
-
API
+關(guān)注
關(guān)注
2文章
2368瀏覽量
66752 -
京東
+關(guān)注
關(guān)注
2文章
1108瀏覽量
50076
發(fā)布評(píng)論請(qǐng)先 登錄
電子發(fā)燒友榮獲電子工業(yè)出版社博文視點(diǎn) “2025 年度卓越合作伙伴”
芯干線邀您相約2025亞洲電源技術(shù)發(fā)展論壇
MediaTek Pentonic平臺(tái)推動(dòng)智能電視顯示技術(shù)發(fā)展
一文讀懂 PWM控制背光亮度原理
一文讀懂:鋰離子電池的基本結(jié)構(gòu)與應(yīng)用
京東方華燦淺談氮化鎵材料與技術(shù)發(fā)展
一文讀懂儲(chǔ)能變流器PCS
一文讀懂光模塊
從原理到應(yīng)用,一文讀懂半導(dǎo)體溫控技術(shù)的奧秘
無刷雙饋電機(jī)專利技術(shù)發(fā)展
一文讀懂超聲波換能器:原理、應(yīng)用與未來趨勢(shì)
輪邊驅(qū)動(dòng)電機(jī)專利技術(shù)發(fā)展
Gartner發(fā)布云技術(shù)發(fā)展的六大趨勢(shì)
一文讀懂京東技術(shù)發(fā)展簡(jiǎn)史
評(píng)論