今年11.11,京東數(shù)據(jù)中心操作系統(tǒng)(JDOS)阿基米德已經(jīng)全面接管了應(yīng)用資源調(diào)度。每日調(diào)度百萬臺容器實例運轉(zhuǎn),每日為離線計算提供了多達3000萬核。小時的計算資源,SLA履約率達到98.3%.在保證業(yè)務(wù)的正常運行下,集群的平均資源利用率提升3倍。僅在11.11備戰(zhàn)期間,通過資源調(diào)度節(jié)省數(shù)億元服務(wù)器采購成本。本文對京東阿基米德項目的架構(gòu)和核心技術(shù)進行分享,希望能為業(yè)界提供一些參考。
另外,由InfoQ舉辦的ArchSummit全球架構(gòu)師峰會即將于12月8-11日北京舉行,大會與阿里巴巴合作策劃了雙11架構(gòu)專場,并邀請了頂級技術(shù)專家擔任出品人,設(shè)置了“新一代DevOps”、“人工智能與業(yè)務(wù)應(yīng)用”、“架構(gòu)升級與優(yōu)化”等17個熱門話題,目前大會日程已出,歡迎前來討論交流。
調(diào)度困境
JDOS(Jingdong Datacenter Operating System) 2.0于2016年推出,基于kubernetes進行了深度定制,并在國內(nèi)率先將kubernetes引入大規(guī)模生產(chǎn)環(huán)境,經(jīng)歷了2017年618的考驗,逐步完善了內(nèi)核、網(wǎng)絡(luò)、存儲、監(jiān)控、鏡像中心等生態(tài)建設(shè)后,調(diào)度系統(tǒng)的優(yōu)化逐漸提上了日程。在長期的容器運營過程中,團隊積累了大量的監(jiān)控數(shù)據(jù),也發(fā)現(xiàn)了很多痛點。
·京東有大量的服務(wù)器資源,而資源使用不夠充分。
·在大促前各個業(yè)務(wù)主要靠新增機器來應(yīng)對高峰瞬時流量。
·應(yīng)用業(yè)務(wù)系統(tǒng)資源申請量和使用量之間差距巨大。
·資源使用呈現(xiàn)明顯的高峰低谷,不同的機器的資源使用率差距較大。
·資源碎片導致的資源浪費嚴重。
對于以上種種問題,簡單的調(diào)度分配資源算法已經(jīng)無法滿足復雜的調(diào)度需求,阿基米德項目應(yīng)運而生。阿基米德項目是作為JDOS的核心調(diào)度組件,是撬動整個數(shù)據(jù)中心的支點,負責整個京東數(shù)據(jù)中心的資源調(diào)度與驅(qū)逐。
應(yīng)用畫像
應(yīng)用對于資源的使用存在一定的規(guī)律。一般常規(guī)的做法是將其對于資源使用的特點,分為計算密集型、內(nèi)存密集型、存儲密集型等。這種簡單的做法無法從CPU/內(nèi)存/存儲/網(wǎng)絡(luò)多個資源維度和時間維度上對于資源的使用進行描述。我們采用了強化機器學習算法,根據(jù)應(yīng)用的歷史數(shù)據(jù),提取其資源使用的特征,進而將不同的應(yīng)用進行歸類,形成應(yīng)用畫像。
應(yīng)用畫像可以為調(diào)度提供依據(jù)。不同的應(yīng)用根據(jù)應(yīng)用畫像的結(jié)果,進行親和/反親和的調(diào)度,將不同類的應(yīng)用容器調(diào)度在一起,使其資源需求得到時空互補,而不會相互影響。同時對于一個應(yīng)用中多個容器,可以依據(jù)應(yīng)用畫像對容器的健康狀態(tài)進行評估預警,及早進行容器的自動擴容或者遷移,以免影響業(yè)務(wù)。另外,應(yīng)用畫像還為之后應(yīng)用的資源使用提出指導意見,以便其在保證資源使用的同時,防止資源超配導致的浪費。
Serverless與延遲容忍
在以往的技術(shù)架構(gòu)中,大量的業(yè)務(wù)應(yīng)用屬于長期服務(wù)(long-running services),其特點是需要長時間提供服務(wù)。而實際上,許多應(yīng)用并不需要長期提供服務(wù)。以圖片轉(zhuǎn)換應(yīng)用為例,商戶上傳的商品圖片需要轉(zhuǎn)換成多種尺寸,東莞機房托管 ,并在圖片中打上水印/logo等,并上傳到存儲中。圖片轉(zhuǎn)換應(yīng)用只需要在用戶上傳圖片時提供服務(wù),其他時間并不需要占用資源;而且應(yīng)用對于延遲不敏感,允許最長幾十秒級別的延遲執(zhí)行。對于這種事件驅(qū)動、延遲容忍的應(yīng)用,我們推動其由長期服務(wù),美國網(wǎng)站空間 香港網(wǎng)頁寄存,轉(zhuǎn)向使用JDOS提供的serverless架構(gòu)。serverless的架構(gòu)在將長期服務(wù)轉(zhuǎn)為離線計算任務(wù)方面發(fā)揮了巨大的作用。
serverless的應(yīng)用任務(wù)和大數(shù)據(jù)的離線計算任務(wù),抽象為統(tǒng)一的批處理任務(wù)(batch jobs)。批處理任務(wù)提交到阿基米德時,需要提供任務(wù)描述,描述內(nèi)容包括任務(wù)函數(shù)、任務(wù)類型、資源描述以及任務(wù)的延遲容忍時間等,由阿基米德進行調(diào)度執(zhí)行。延遲容忍時間是指該任務(wù)可以容忍的最長延遲執(zhí)行時間。也就是說任務(wù)提交后不必立即執(zhí)行,可以容忍一定時間后才獲得資源執(zhí)行,這就為阿基米德的調(diào)度規(guī)劃提供了重要依據(jù),以便其提前進行流水線編排規(guī)劃。
資源碎片與時空復用
不同批次采購的服務(wù)器的資源配比不同,而不同的應(yīng)用申請的資源配比也不同。基于資源適配的調(diào)度算法容易導致一臺服務(wù)器上的CPU的配額已經(jīng)分配完畢,但是內(nèi)存還空余幾十GB或者內(nèi)存分配完畢,CPU還空余幾核。這種情況我們稱之為資源碎片。