京東私有云三大技術(shù)方向解析

責(zé)任編輯:editor006

作者:郭雪梅

2015-04-03 16:17:32

摘自:CSDN

去年11 11時,曾有數(shù)家媒體對京東的云基礎(chǔ)架構(gòu)服務(wù)進行過采訪。通過細(xì)粒度部署,大幅降低了維護成本,目前已經(jīng)擴展到3000+臺機器,并廣泛支持了商品詳情頁、搜索、推薦和廣告等應(yīng)用。

去年11.11時,曾有數(shù)家媒體對京東的云基礎(chǔ)架構(gòu)服務(wù)進行過采訪。當(dāng)時京東云平臺首席架構(gòu)師、系統(tǒng)技術(shù)部負(fù)責(zé)人劉海鋒就京東文件系統(tǒng)、分布式緩存與高速KV服務(wù)、新消息隊列、新服務(wù)框架等進行了闡述。幾個月后,3月30日,在華為ICT北京站巡展時,CSDN云計算有機會與劉海鋒深入溝通,看看這個70多人的團隊如何實現(xiàn)從開源到自研的技術(shù)跨越,如何利用OpenStack+Docker技術(shù)實現(xiàn)容器管理,又將如何在今年底實現(xiàn)對京東所有機器實現(xiàn)自動化運維的目標(biāo)。

  京東云平臺首席架構(gòu)師、系統(tǒng)技術(shù)部負(fù)責(zé)人 劉海鋒

要強調(diào)的是,劉海鋒和他的團隊所負(fù)責(zé)的是京東私有云項目(京東基礎(chǔ)云服務(wù))。不是對外提供云服務(wù)的京東公有云。而這種共存的狀態(tài),在亞馬遜、阿里、騰訊以及其他多家互聯(lián)網(wǎng)企業(yè)中都存在。

京東的發(fā)展速度有目共睹。反應(yīng)到業(yè)務(wù)與產(chǎn)品上,就是國際化、拍拍、廣告、商城、金融、智能硬件、新業(yè)務(wù)的齊頭并進。而底層,自然需要穩(wěn)固的,能夠?qū)崿F(xiàn)“IT資源云化”的基礎(chǔ)平臺。劉海鋒和他的團隊從2013年開始,就聚焦在存儲服務(wù)、中間件、彈性計算三大方面,通過API為京東業(yè)務(wù)提供服務(wù)支持。

存儲:JFS,JIMDB和統(tǒng)一存儲

千萬/天的商品圖片,千萬/天的交易訂單,千萬/天的電子簽收,億/天的庫房記錄.......越來越多的非結(jié)構(gòu)化數(shù)據(jù)給京東的存儲帶來了巨大挑戰(zhàn)。使用過商用產(chǎn)品,使用過開源產(chǎn)品,但無一能跟上京東業(yè)務(wù)的發(fā)展速度。為此,2013年8月,劉海鋒的團隊開始自主研發(fā)大規(guī)模分布式存儲系統(tǒng)——京東文件系統(tǒng)(JFS)。

  京東大規(guī)模分布式文件系統(tǒng)(JFS)

JFS技術(shù)點:

Paxos replication

Unified Storage of BLOBs/files/blocks

Append-only storage engine

Reed-Solomon coding

Scalable metadata management

Hadoop Integration

如今JFS已經(jīng)是3.0版本。圖片服務(wù),訂單履約、物流數(shù)據(jù)交換、電子簽收、內(nèi)部云存儲服務(wù)和虛擬機與容器卷存儲都已在JFS上。劉海鋒說:“京東的每一張圖片都存在JFS平臺上。自研的系統(tǒng)通過主動復(fù)制策略,保證絕對的強一致性,而復(fù)制算法,能夠保證在機器故障、磁盤故障、甚至文件誤刪除等問題存在時,數(shù)據(jù)都不會丟失。”

與數(shù)據(jù)暴增相對應(yīng)的是緩存必然越來越多。正如數(shù)據(jù)庫天才Jim Gray曾說:“Memory is new disk.”而Redis和Memcache面對大內(nèi)存業(yè)務(wù)的挑戰(zhàn)也已不夠。在Redis基礎(chǔ)上做出技術(shù)“質(zhì)變”,京東自研了分布式緩存與高速NoSQL——JIMDB。

JIMDB技術(shù)點:

精確故障檢測與自動切換;

RAM/SSD混合存儲;

在線橫向擴容;

異步、同步、局部復(fù)制;

全自動化接入與管理。

通過細(xì)粒度部署,大幅降低了維護成本,目前已經(jīng)擴展到3000+臺機器,并廣泛支持了商品詳情頁、搜索、推薦和廣告等應(yīng)用。

如果說JFS和JIMDB是已經(jīng)完成的技術(shù),代表了分布式存儲和緩存與高速NoSQL。那么京東下一步自然是統(tǒng)一存儲服務(wù):支持文件/對象/大表的多數(shù)據(jù)模型和多IDC復(fù)制存儲、單IDC緩存加速。而且根據(jù)業(yè)務(wù)需求,將引入SQL與事務(wù)支持。

中間件:消息隊列與服務(wù)框架

支撐的業(yè)務(wù)模型越復(fù)雜,彼此的消息傳遞就越重要。而由于京東在倉儲物流持續(xù)發(fā)力,全國各地有數(shù)百個庫房。這些庫房里面會部署10-20臺服務(wù)器。由此,消息隊列(MQ)在京東的訂單管道、核心機房、倉儲庫房中就更加重要。劉海鋒將之形容為:“MQ for the datacenter is like the pipes for Unix/Linux.”

京東的MQ有三個階段:JQ ->AMQ ->JMQ。前兩者都是開源軟件。面對“日均消息數(shù)過百億”的挑戰(zhàn),AMQ已完全無法應(yīng)對。比如有的大隊列可能是1個發(fā)送者,有100個消費者,很多開源系統(tǒng)可能會存100份,但這幾乎沒有必要。通過完全的自主研發(fā)JMQ,只要存一份,消費者可以通過偏移量或指針去訪問。JMQ更好地實現(xiàn)了:機房斷電不丟消息;組提交技術(shù);透明壓縮;靈活復(fù)制。劉海鋒如此評價:“JMQ在去年雙十一中表現(xiàn)完美。”

除此以外,越來越多的在線服務(wù),需要統(tǒng)一編程、統(tǒng)一協(xié)議、統(tǒng)一接入、統(tǒng)一監(jiān)控和統(tǒng)一治理。但面對數(shù)萬服務(wù)接口和數(shù)萬臺服務(wù)器(很多服務(wù)器還分布在不同區(qū)域),如何使各模塊可降級、可監(jiān)控、可分解等,能夠真正在內(nèi)部API化、對外接口開放,需要更適宜的服務(wù)框架——JSF。

彈性計算:軟件定義數(shù)據(jù)中心與容器集群調(diào)度

如果打開京東應(yīng)用圖譜,搜索、圖片、廣告、訂單、Hadoop、Spark、MPI等都占據(jù)了不同的機器資源。實際上,不止是京東,幾乎所有互聯(lián)網(wǎng)或分支較多的傳統(tǒng)企業(yè)都面臨資源被劃分的“七零八落”的現(xiàn)狀。每一種應(yīng)用都會占用不同機器資源。但隨著機器的增加,要實現(xiàn)資源云化以及自動化運維,這一挑戰(zhàn),必須面對。

  京東彈性計算云規(guī)劃

劉海峰稱之為:“彈性計算云。”一方面,將業(yè)務(wù)與機器解耦,全自動化維護;另一方面,高資源利用率+高服務(wù)質(zhì)量+高效生產(chǎn)。在IDC資源上,通過OpenStack、Docker和JFS實現(xiàn)基礎(chǔ)服務(wù),以及部署集成、彈性伸縮的平臺服務(wù),最終實現(xiàn)應(yīng)用系統(tǒng)。

舉個例子,商品詳情頁能夠?qū)崿F(xiàn)按照流量訪問自動調(diào)度資源,比如利用OpenStack+Docker實現(xiàn)緩存容器化,在流量控制、快速部署、版本管理方面做的更好。

對Docker的嘗試從什么時候開始?有哪些收獲?

劉海鋒:我們對Docker的應(yīng)用從2014年8月份開始的。最終目標(biāo)是希望能夠為研發(fā)人員、數(shù)據(jù)中心技術(shù)工程師和業(yè)務(wù)系統(tǒng)之間搭建一個橋梁,使工作更簡潔、高效,數(shù)據(jù)中心服務(wù)器利用率大幅提高。所以京東底層基礎(chǔ)架構(gòu)分兩層:軟件定義數(shù)據(jù)中心(基礎(chǔ)服務(wù)),將機器做成虛擬化的,容器化的,虛擬網(wǎng)絡(luò)IP,共享存儲等;平臺服務(wù),順暢將京東應(yīng)用和平臺融合。這是一個復(fù)雜的系統(tǒng)工程,而Docker在平臺服務(wù)層面,能夠發(fā)揮很好的作用。我們將其作為京東私有云的輕量級應(yīng)用,主要是用的引擎、實例,并和Openstack“嫁接”,用OpenStack去管理Docker,如給它分配一個獨立的IP等。針對Docker我們還稍微做了些改造,比如網(wǎng)絡(luò)方面,以及存儲方面。這樣,每個容器或者每個虛擬機和原來物理機區(qū)別不大,很容易接受。比如用在郵件申請服務(wù),一些特殊場景下的虛擬機提供(京東內(nèi)部對安全性已有保證)。而在其上層,則是完全自研的系統(tǒng)進行調(diào)度、控制、監(jiān)控、管理和部署。效果很好。舉個例子,之前部署是部署界面選擇、打包、機器分配、部署、檢查、成功。但現(xiàn)在一個程序要上線,直接點部署,成功后直接通知你。中間環(huán)節(jié),包含審批、申請等全部取消。再如,雙十一加機器之后,很少假期后有人會選擇減機器。這樣無形中有很大浪費。而現(xiàn)在,直接部署,平臺實現(xiàn)統(tǒng)一控制,隨流量自動擴容,自動縮減。如此下來,資源利用率大幅提升,成本卻會明顯降低。

除了管理Docker外,OpenStack還有哪些應(yīng)用?

劉海鋒:京東彈性云的基礎(chǔ)服務(wù)就是Docker+OpenStack+JFS。OpenStack變化很快,很難有那么多精力來追隨。所以我們找到穩(wěn)定版本,經(jīng)過調(diào)整后進行了很多開發(fā),比如Jing dong Data Center OS就是其中的一個分支。另外是管理Docker和應(yīng)對故障。如當(dāng)物理機故障、容器故障出現(xiàn)后,如何通過OpenStack快速檢測、快速報警、快速響應(yīng)。而這些開發(fā),我們計劃在年底或者明年初反饋給社區(qū)。

開源軟件基礎(chǔ)上進行研發(fā),大部分都會走向完全自研?

劉海鋒:有可能。無論是OpenStack還是Docker,作為通用型平臺,都是越來越龐大和臃腫。很多功能都是我們不需要的。所以依照發(fā)展的需求,我們現(xiàn)在有工程師在自己寫。

舊有資源云化會面臨很多挑戰(zhàn)。哪些是你們遇到的?

劉海鋒:業(yè)務(wù)需要應(yīng)用支持。很多老應(yīng)用最初使用的都是物理機,而且非常空閑,有可能一個小程序占了128MB的一臺服務(wù)器。所以這些應(yīng)用需要從物理機遷移到云上。但如何遷移,比較困難。這不是技術(shù)問題。所以京東是有專門的項目經(jīng)理在推動的。而我們來提供簡單、易于使用的遷移工具。現(xiàn)在,京東幾乎所有應(yīng)用都在分批遷移,涉及各個部門,各個業(yè)務(wù)線。

曾提到Hadoop應(yīng)用。JFS和Hadoop有集成么?

劉海鋒:是,我們團隊不用Hadoop。但JFS會實現(xiàn)對Hadoop的集成。這樣在線和離線數(shù)據(jù)統(tǒng)一存儲就很容易實現(xiàn),作為整套方案也更能擴展元數(shù)據(jù),降低成本。

京東彈性計算云項目的主要挑戰(zhàn)與最終愿景是?

劉海鋒:求規(guī)模和零事故的矛盾。如何在保持穩(wěn)定的情況下擴大規(guī)模,因為只有規(guī)模大了,收益才大。我們每天都很謹(jǐn)慎小心來做,希望盡快實現(xiàn)萬臺規(guī)模的控制。 現(xiàn)在我們內(nèi)部的彈性云項目僅僅進行到1/5左右。后面會更快速地展開。最終彈性云將管理所有機器資源,生產(chǎn)虛擬機或容器或物理機,托管調(diào)度各類業(yè)務(wù)包括應(yīng)用與存儲、在線與離線,成為業(yè)務(wù)的基石,讓研發(fā)生活更美好。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號