本發(fā)明涉及容器鏡像分發(fā),尤其涉及一種容器鏡像分發(fā)方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、目前主流的開(kāi)源鏡像快速分發(fā)方案在技術(shù)原理上均采用依賴(lài)tracker服務(wù)器(中心服務(wù)器)的元數(shù)據(jù)集中型p2p(peer-to-peer,點(diǎn)對(duì)點(diǎn))網(wǎng)絡(luò)實(shí)現(xiàn)。tracker服務(wù)器主要用來(lái)記錄p2p鏡像分發(fā)網(wǎng)絡(luò)中的鏡像文件索引信息,即鏡像文件與該鏡像文件所在節(jié)點(diǎn)之間的對(duì)應(yīng)關(guān)系信息。該p2p網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)上均會(huì)部署一個(gè)守護(hù)進(jìn)程用來(lái)代理鏡像數(shù)據(jù)下載,每次接收到鏡像數(shù)據(jù)下載請(qǐng)求時(shí),該守護(hù)進(jìn)程會(huì)請(qǐng)求tracker服務(wù)器獲取當(dāng)前鏡像文件的下載位置,tracker服務(wù)器會(huì)根據(jù)自身所存儲(chǔ)的鏡像文件索引信息返回最優(yōu)的父節(jié)點(diǎn)供當(dāng)前節(jié)點(diǎn)進(jìn)行鏡像文件下載。當(dāng)節(jié)點(diǎn)需要進(jìn)行鏡像下載時(shí),p2p鏡像分發(fā)網(wǎng)絡(luò)中鏡像文件數(shù)據(jù)下載任務(wù)的調(diào)度,均依賴(lài)tracker服務(wù)中所存儲(chǔ)的鏡像文件索引信息,一旦鏡像分發(fā)網(wǎng)絡(luò)中tracker服務(wù)器出現(xiàn)故障或線(xiàn)路被屏蔽中斷時(shí),由于節(jié)點(diǎn)無(wú)法從tracker服務(wù)器中獲取鏡像文件索引信息,必然會(huì)影響到整個(gè)p2p鏡像分發(fā)網(wǎng)絡(luò)的可用性。
2、上述內(nèi)容僅用于輔助理解本發(fā)明的技術(shù)方案,并不代表承認(rèn)上述內(nèi)容是現(xiàn)有技術(shù)。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的主要目的在于提供一種容器鏡像分發(fā)方法、裝置、設(shè)備及存儲(chǔ)介質(zhì),旨在解決現(xiàn)有技術(shù)中p2p鏡像分發(fā)網(wǎng)絡(luò)由于依賴(lài)中心服務(wù)器所存在的潛在單點(diǎn)故障的技術(shù)問(wèn)題。
2、為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種容器鏡像分發(fā)方法,所述方法包括以下步驟:
3、攔截容器運(yùn)行時(shí)發(fā)出的鏡像元數(shù)據(jù)文件下載請(qǐng)求;
4、基于所述鏡像元數(shù)據(jù)文件下載請(qǐng)求,下載目標(biāo)鏡像元數(shù)據(jù)文件,并更新鏡像元數(shù)據(jù)文件索引,所述鏡像元數(shù)據(jù)文件索引存儲(chǔ)在鏡像分發(fā)網(wǎng)絡(luò)的節(jié)點(diǎn)中;
5、將所述目標(biāo)鏡像元數(shù)據(jù)文件返回至所述容器運(yùn)行時(shí),并攔截所述容器運(yùn)行時(shí)解析所述目標(biāo)鏡像元數(shù)據(jù)文件后發(fā)出的鏡像層文件下載請(qǐng)求;
6、基于所述鏡像層文件下載請(qǐng)求,下載目標(biāo)鏡像層文件,并更新鏡像層文件索引,所述鏡像層文件索引存儲(chǔ)在所述節(jié)點(diǎn)中。
7、可選地,所述更新鏡像元數(shù)據(jù)文件索引,包括:
8、基于gossip協(xié)議,向所述鏡像分發(fā)網(wǎng)絡(luò)通知所述目標(biāo)鏡像元數(shù)據(jù)文件的當(dāng)前下載位置,以更新所述節(jié)點(diǎn)存儲(chǔ)的鏡像元數(shù)據(jù)文件索引。
9、可選地,所述基于所述鏡像元數(shù)據(jù)文件下載請(qǐng)求,下載目標(biāo)鏡像元數(shù)據(jù)文件,包括:
10、根據(jù)所述鏡像元數(shù)據(jù)文件下載請(qǐng)求,確定所述目標(biāo)鏡像元數(shù)據(jù)文件;
11、基于預(yù)設(shè)下載范圍的元數(shù)據(jù)文件查詢(xún)優(yōu)先級(jí),在所述預(yù)設(shè)下載范圍內(nèi)查詢(xún)所述目標(biāo)鏡像元數(shù)據(jù)文件,所述預(yù)設(shè)下載范圍包括鏡像倉(cāng)庫(kù)、本地存儲(chǔ)以及鏡像分發(fā)網(wǎng)絡(luò),所述鏡像倉(cāng)庫(kù)的元數(shù)據(jù)文件查詢(xún)優(yōu)先級(jí)高于所述本地存儲(chǔ)的元數(shù)據(jù)文件查詢(xún)優(yōu)先級(jí),所述本地存儲(chǔ)的元數(shù)據(jù)文件查詢(xún)優(yōu)先級(jí)高于所述鏡像分發(fā)網(wǎng)絡(luò)的元數(shù)據(jù)文件查詢(xún)優(yōu)先級(jí);
12、在所述預(yù)設(shè)下載范圍內(nèi)查詢(xún)到所述目標(biāo)鏡像元數(shù)據(jù)文件時(shí),根據(jù)所述目標(biāo)鏡像元數(shù)據(jù)文件的下載路由信息,下載所述目標(biāo)鏡像元數(shù)據(jù)文件。
13、可選地,所述基于預(yù)設(shè)下載范圍的元數(shù)據(jù)文件查詢(xún)優(yōu)先級(jí),在所述預(yù)設(shè)下載范圍內(nèi)查詢(xún)所述目標(biāo)鏡像元數(shù)據(jù)文件,包括:
14、在所述鏡像倉(cāng)庫(kù)與所述本地存儲(chǔ)中未查詢(xún)到所述目標(biāo)鏡像元數(shù)據(jù)文件時(shí),在所述鏡像層文件索引中查詢(xún)所述目標(biāo)鏡像元數(shù)據(jù)文件;
15、在所述鏡像層文件索引中查詢(xún)到所述目標(biāo)鏡像元數(shù)據(jù)文件時(shí),確定在所述鏡像分發(fā)網(wǎng)絡(luò)中查詢(xún)到所述目標(biāo)鏡像元數(shù)據(jù)文件。
16、可選地,所述更新鏡像層文件索引,包括:
17、獲取所述目標(biāo)鏡像層文件的哈希值,確定所述目標(biāo)鏡像層文件的哈希值對(duì)應(yīng)的相近節(jié)點(diǎn)標(biāo)識(shí)碼;
18、基于所述相近節(jié)點(diǎn)標(biāo)識(shí)碼,在所述鏡像分發(fā)網(wǎng)絡(luò)的節(jié)點(diǎn)中確定通知節(jié)點(diǎn);
19、基于dht協(xié)議,向所述通知節(jié)點(diǎn)通知所述目標(biāo)鏡像層文件的當(dāng)前下載位置,以更新所述通知節(jié)點(diǎn)存儲(chǔ)的鏡像層文件索引。
20、可選地,所述基于所述鏡像層文件下載請(qǐng)求,下載目標(biāo)鏡像層文件,包括:
21、根據(jù)所述鏡像層文件下載請(qǐng)求,確定所述目標(biāo)鏡像層文件;
22、基于預(yù)設(shè)下載范圍的鏡像層文件查詢(xún)優(yōu)先級(jí),在所述預(yù)設(shè)查詢(xún)范圍中查詢(xún)所述目標(biāo)鏡像元數(shù)據(jù)文件,所述預(yù)設(shè)下載范圍包括鏡像倉(cāng)庫(kù)、本地存儲(chǔ)以及鏡像分發(fā)網(wǎng)絡(luò),所述本地存儲(chǔ)的鏡像層文件查詢(xún)優(yōu)先級(jí)高于所述鏡像分發(fā)網(wǎng)絡(luò)的鏡像層文件查詢(xún)優(yōu)先級(jí),所述鏡像分發(fā)網(wǎng)絡(luò)的鏡像層文件查詢(xún)優(yōu)先級(jí)高于所述鏡像倉(cāng)庫(kù)的鏡像層文件查詢(xún)優(yōu)先級(jí);
23、在所述預(yù)設(shè)查詢(xún)范圍中查詢(xún)到所述目標(biāo)鏡像層文件時(shí),下載所述目標(biāo)鏡像層文件。
24、可選地,所述基于預(yù)設(shè)下載范圍的鏡像層文件查詢(xún)優(yōu)先級(jí),在所述預(yù)設(shè)查詢(xún)范圍中查詢(xún)所述目標(biāo)鏡像元數(shù)據(jù)文件,包括:
25、在所述本地存儲(chǔ)中未查詢(xún)到所述目標(biāo)鏡像層文件時(shí),基于dht協(xié)議,在所述鏡像分發(fā)網(wǎng)絡(luò)的鏡像元數(shù)據(jù)文件索引中查詢(xún)所述目標(biāo)鏡像層文件;
26、在所述鏡像元數(shù)據(jù)文件索引中查詢(xún)到所述目標(biāo)鏡像層文件時(shí),確定所述鏡像分發(fā)網(wǎng)絡(luò)中查詢(xún)到所述目標(biāo)鏡像層文件。
27、此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種容器鏡像分發(fā)裝置,所述容器鏡像分發(fā)裝置包括:
28、請(qǐng)求攔截模塊,用于攔截容器運(yùn)行時(shí)發(fā)出的鏡像元數(shù)據(jù)文件下載請(qǐng)求;
29、文件下載模塊,用于基于所述鏡像元數(shù)據(jù)文件下載請(qǐng)求,下載目標(biāo)鏡像元數(shù)據(jù)文件,并更新鏡像元數(shù)據(jù)文件索引,所述鏡像元數(shù)據(jù)文件索引存儲(chǔ)在鏡像分發(fā)網(wǎng)絡(luò)的節(jié)點(diǎn)中;
30、所述請(qǐng)求攔截模塊,還用于將所述目標(biāo)鏡像元數(shù)據(jù)文件返回至所述容器運(yùn)行時(shí),并攔截所述容器運(yùn)行時(shí)解析所述目標(biāo)鏡像元數(shù)據(jù)文件后發(fā)出的鏡像層文件下載請(qǐng)求;
31、所述文件下載模塊,還用于基于所述鏡像層文件下載請(qǐng)求,下載目標(biāo)鏡像層文件,并更新鏡像層文件索引,所述鏡像層文件索引存儲(chǔ)在所述節(jié)點(diǎn)中。
32、此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種容器鏡像分發(fā)設(shè)備,所述容器鏡像分發(fā)設(shè)備包括:存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的容器鏡像分發(fā)程序,所述容器鏡像分發(fā)程序配置為實(shí)現(xiàn)如上文所述的容器鏡像分發(fā)方法的步驟。
33、此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)上存儲(chǔ)有容器鏡像分發(fā)程序,所述容器鏡像分發(fā)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上文所述的容器鏡像分發(fā)方法的步驟。
34、在本發(fā)明中,通過(guò)攔截容器運(yùn)行時(shí)發(fā)出的鏡像元數(shù)據(jù)文件下載請(qǐng)求,基于鏡像元數(shù)據(jù)文件下載請(qǐng)求,下載目標(biāo)鏡像元數(shù)據(jù)文件,更新鏡像分發(fā)網(wǎng)絡(luò)中節(jié)點(diǎn)存儲(chǔ)的鏡像元數(shù)據(jù)文件索引,將目標(biāo)鏡像元數(shù)據(jù)文件返回至所述容器運(yùn)行時(shí),并攔截容器運(yùn)行時(shí)解析目標(biāo)鏡像元數(shù)據(jù)文件后發(fā)出的鏡像層文件下載請(qǐng)求,基于鏡像層文件下載請(qǐng)求,下載目標(biāo)鏡像層文件,更新節(jié)點(diǎn)存儲(chǔ)的鏡像層文件索引。本發(fā)明采用p2p鏡像下載方式,將一部分鏡像層文件數(shù)據(jù)的下載與傳播轉(zhuǎn)移到節(jié)點(diǎn)與節(jié)點(diǎn)之間,可以提高大規(guī)模鏡像數(shù)據(jù)傳輸?shù)男屎退俾?,最大限度地利用網(wǎng)絡(luò)帶寬,從而規(guī)避潛在性能問(wèn)題及網(wǎng)絡(luò)瓶頸問(wèn)題,在此基礎(chǔ)上,相較于傳統(tǒng)的p2p鏡像分發(fā)網(wǎng)絡(luò)通常依賴(lài)于中心服務(wù)器,本發(fā)明可以實(shí)現(xiàn)鏡像分發(fā)網(wǎng)絡(luò)去中心化,不依賴(lài)中心服務(wù)器,所有鏡像文件索引信息以及鏡像文件均分散存儲(chǔ)在鏡像分發(fā)網(wǎng)絡(luò)的各個(gè)節(jié)點(diǎn)上,采用完全分布式存儲(chǔ)的模式,避免由于依賴(lài)中心服務(wù)器帶來(lái)的單點(diǎn)故障風(fēng)險(xiǎn),并且可以將節(jié)點(diǎn)統(tǒng)籌為一個(gè)分布式的容器鏡像倉(cāng)庫(kù),解決集群鏡像倉(cāng)庫(kù)離線(xiàn)后,節(jié)點(diǎn)無(wú)法拉取鏡像的問(wèn)題。