溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

京東丁俊:京東分布式K-V存儲(chǔ)設(shè)計(jì)與挑戰(zhàn)

發(fā)布時(shí)間:2020-08-11 21:33:32 來(lái)源:ITPUB博客 閱讀:302 作者:趙鈺瑩 欄目:軟件技術(shù)

  大多數(shù)企業(yè)夢(mèng)寐以求的存儲(chǔ)系統(tǒng)是什么樣的呢?當(dāng)圖片、文章甚至視頻需要存儲(chǔ)時(shí),你希望既不丟失還要提供高速讀寫(xiě)的能力;當(dāng)磁盤(pán)壞了,你的數(shù)據(jù)依然還在;當(dāng)用戶訪問(wèn)量成倍增長(zhǎng),讀寫(xiě)能力依然保持高速。當(dāng)大促來(lái)臨,用戶體驗(yàn)依然無(wú)差。這一切都是京東分布式K-V存儲(chǔ)的設(shè)計(jì)原動(dòng)力,京東商城-基礎(chǔ)架構(gòu)部丁俊在SACC大會(huì)《數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)與實(shí)踐》現(xiàn)場(chǎng)分享了京東分布式K-V存儲(chǔ)的設(shè)計(jì)與挑戰(zhàn)。

  京東分布式存儲(chǔ)兩大產(chǎn)品是非持久化存儲(chǔ)JIMDB與持久化存儲(chǔ)FBASE。其中,JIMDB兼容REDIS協(xié)議,在線彈性伸縮的,數(shù)據(jù)全部保存在內(nèi)存的K-V存儲(chǔ)系統(tǒng);FBASE支持多協(xié)議,支持范圍查找的持久化K-V存儲(chǔ)系統(tǒng)。對(duì)一些對(duì)讀寫(xiě)性能要求較高的場(chǎng)景,性能自然優(yōu)先于數(shù)據(jù)可靠性,JIMDB是合適的選擇;對(duì)數(shù)據(jù)可靠性要求高,數(shù)據(jù)量大,數(shù)據(jù)冷熱分布明顯的場(chǎng)景,選擇FBASE是明智的。

京東丁俊:京東分布式K-V存儲(chǔ)設(shè)計(jì)與挑戰(zhàn)

  丁俊表示,整個(gè)設(shè)計(jì)過(guò)程面臨著諸多挑戰(zhàn),比如故障檢測(cè)與恢復(fù)、在線擴(kuò)容、高可用以及升級(jí)等,JIMDB的故障檢測(cè)與恢復(fù)容易出現(xiàn)基數(shù)大、故障次數(shù)多,人工響應(yīng)慢和誤判等問(wèn)題,出現(xiàn)這種問(wèn)題的原因可能是部分網(wǎng)絡(luò)故障或者服務(wù)程序繁忙造成響應(yīng)慢。主要的解決方案是將故障檢測(cè)程序獨(dú)立部署,分散在不同機(jī)架上;投票決定,存活狀態(tài)一票否決;一個(gè)機(jī)房部署多組,每組負(fù)責(zé)部分實(shí)例;宿主機(jī)agent輔助檢測(cè)確認(rèn)。

京東丁俊:京東分布式K-V存儲(chǔ)設(shè)計(jì)與挑戰(zhàn)

  隨著近兩年京東618、雙11大促的火熱,業(yè)務(wù)增長(zhǎng)遠(yuǎn)超預(yù)期,資源緊缺成為一種常態(tài),這種情況下就需要考慮在線擴(kuò)容的問(wèn)題了。丁俊表示,擴(kuò)容觸發(fā)條件是單個(gè)分片內(nèi)存占用大小和進(jìn)出流量(CPU使用率),而單個(gè)分片的大小主要考慮擴(kuò)容過(guò)程的持續(xù)時(shí)間和CPU與內(nèi)存的使用率。

  在擴(kuò)容之前,最好提前把將要變更的拓?fù)湫畔⑾掳l(fā)給客戶端,客戶端捕捉到特定異常后使用臨時(shí)拓?fù)?,擴(kuò)容完成后臨時(shí)拓?fù)渥兏鼮檎酵負(fù)?,這三步可以保證平滑擴(kuò)容。但要注意數(shù)據(jù)遷移的最小單位為槽,單shard需要控制大小,避免遷移數(shù)據(jù)多時(shí)間長(zhǎng)。

  對(duì)于多副本異步復(fù)制,副本部署要求是跨物理機(jī)、跨機(jī)房、同城跨機(jī)房以及異地?cái)?shù)據(jù)中心。至于JIMDB異地災(zāi)備,可直接部署slave,內(nèi)存緩沖區(qū);經(jīng)過(guò)synclog模塊,異地機(jī)房只是一個(gè)遠(yuǎn)程副本;集群間有復(fù)制關(guān)系。

  如果需要升級(jí),丁俊表示,內(nèi)存中的數(shù)據(jù)需要做遷移,按照shard滾動(dòng)升級(jí),新版本的容器創(chuàng)建在同一臺(tái)宿主機(jī)上,遷移完成后客戶端捕捉到數(shù)據(jù)已遷移的異常,會(huì)使用新的拓?fù)洹?

  至于持久化存儲(chǔ)Fbase,KEY全局有序排列,支持多種復(fù)制模式,支持schema,支持模板列,插入時(shí)可以自動(dòng)添加列,存儲(chǔ)層LSM-Tree(Log-Structured Merge Tree)。適用場(chǎng)景是按key訪問(wèn),或者單個(gè)partition內(nèi)范圍掃描。缺點(diǎn)是不能全局范圍掃描,讀取必須帶有partition key,

  兼容redis協(xié)議、partition second index等特性的Table,一個(gè)partition對(duì)應(yīng)一個(gè)dataserver,有容量限制,需要提前規(guī)劃。緩存有塊緩存和KEY緩存兩種方式,按照hash規(guī)則進(jìn)行分區(qū)的,需要開(kāi)啟KEY級(jí)別的緩存。

  新一輪的電商狂歡節(jié)又要來(lái)臨,京東分布式K-V存儲(chǔ)系統(tǒng)可準(zhǔn)備好了嗎?丁俊表示,未來(lái)的K-V存儲(chǔ)將主要從redis數(shù)據(jù)結(jié)構(gòu)、支持二級(jí)索引、支持事務(wù)三方面優(yōu)化。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI