本發(fā)明涉及數(shù)據(jù)存儲(chǔ),特別是一種分布式文件存儲(chǔ)方法。具體是一種基于shardingsphere分布式?sql?事務(wù)和查詢(xún)引擎、minio開(kāi)源協(xié)議的對(duì)象存儲(chǔ)服務(wù)、mysql數(shù)據(jù)庫(kù)的分布式文件存儲(chǔ)方法。
背景技術(shù):
::1、隨著互聯(lián)網(wǎng)和大數(shù)據(jù)的發(fā)展,互聯(lián)網(wǎng)海量非結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)爆炸式增長(zhǎng),如:電商網(wǎng)站的海量商品圖片,視頻網(wǎng)站的海量視頻文件,社交網(wǎng)站的海量圖片等等,都需要海量文件存儲(chǔ)技術(shù)。而傳統(tǒng)行業(yè)的文件存儲(chǔ)都是和應(yīng)用服務(wù)集成在一起,且部署在同一臺(tái)服務(wù)器上,無(wú)法滿(mǎn)足海量文件的存儲(chǔ),在文件達(dá)到一定數(shù)量時(shí),就會(huì)存在訪(fǎng)問(wèn)性能?chē)?yán)重下降、存儲(chǔ)空間不足且難以擴(kuò)容、文件難以跨應(yīng)用共享等一系列的問(wèn)題。2、mini0?是一個(gè)基于apache?license?v2.0開(kāi)源協(xié)議的對(duì)象存儲(chǔ)服務(wù),非常適合于存儲(chǔ)大容量非結(jié)構(gòu)化的數(shù)據(jù),例如圖片、視頻、文件、備份數(shù)據(jù)等,一個(gè)對(duì)象文件可以是任意大小,從幾kb到最大5t不等。3、shardingsphere是一款開(kāi)源的分布式數(shù)據(jù)庫(kù)中間件,旨在充分合理地在分布式的場(chǎng)景下利用關(guān)系型數(shù)據(jù)庫(kù)的計(jì)算和存儲(chǔ)能力,通過(guò)將數(shù)據(jù)水平或垂直拆分,然后將拆分后的數(shù)據(jù)存儲(chǔ)在不同的數(shù)據(jù)庫(kù)或表中,從而減輕單庫(kù)單表的數(shù)據(jù)存儲(chǔ)、查詢(xún)壓力,從而提升數(shù)據(jù)操作的性能。因此,我們結(jié)合mini0與shardingsphere的技術(shù)優(yōu)勢(shì),提出一種分布式文件存儲(chǔ)的方法,可以很好的解決分布式場(chǎng)景下海量文件與文件元信息的存儲(chǔ)、查詢(xún)、刪除等問(wèn)題。技術(shù)實(shí)現(xiàn)思路1、本發(fā)明解決現(xiàn)有技術(shù)不足提供一種分布式文件存儲(chǔ)方法;目的在于解決海量文件存儲(chǔ)面臨的復(fù)雜性、可擴(kuò)展性、數(shù)據(jù)備份、數(shù)據(jù)一致性和可靠性等問(wèn)題。2、一種分布式文件存儲(chǔ)方法,包括:3、步驟1:調(diào)用文件存儲(chǔ)服務(wù)提供的文件上傳接口,通過(guò)接口將文件與文件元信息數(shù)據(jù)提交,通過(guò)ngnix代理轉(zhuǎn)發(fā)到文件存儲(chǔ)服務(wù)應(yīng)用中;文件存儲(chǔ)服務(wù)應(yīng)用提供的文件上傳接口是一個(gè)http的post請(qǐng)求接口,文件與文件元信息數(shù)據(jù)通過(guò)json字符串提交的接口后臺(tái)處理;4、步驟2:文件存儲(chǔ)服務(wù)應(yīng)用和minio集群中的客戶(hù)端節(jié)點(diǎn)進(jìn)行通信,發(fā)起文件上傳請(qǐng)求,路由到最近可用存儲(chǔ)服務(wù)器ramacher,ramacher負(fù)責(zé)對(duì)文件進(jìn)行分片和復(fù)制,將文件分成10mb大小的片段,每個(gè)片段被獨(dú)立的上傳到集群的不同服務(wù)器;當(dāng)所有片段上傳完成后,ramacher將這些片段合并成一個(gè)完整的文件,并使用客戶(hù)端節(jié)點(diǎn)中的文件元信息,文件元信息由文件名、大小和類(lèi)型組成,來(lái)生成文件唯一標(biāo)識(shí)id;5、在文件存儲(chǔ)服務(wù)應(yīng)用和minio集群進(jìn)行文件上傳之前,需要搭建minio文件服務(wù)器集群建立一個(gè)文件存儲(chǔ)服務(wù)應(yīng)用,利用springboot環(huán)境搭建一個(gè)上傳文件、查詢(xún)、刪除和保存文件元信息的應(yīng)用服務(wù);搭建文件存儲(chǔ)服務(wù)應(yīng)用時(shí)需要引入minio的java客戶(hù)端對(duì)minio集群中的文件操作;其次,文件存儲(chǔ)服務(wù)應(yīng)用集成了shardingsphere分表分庫(kù)組件分表分庫(kù);6、步驟3:通過(guò)http形式調(diào)用文件存儲(chǔ)服務(wù)應(yīng)用的上傳接口上傳文件,如果文件上傳失敗,文件存儲(chǔ)服務(wù)應(yīng)用會(huì)拋出異常,并返回上傳失敗的提示信息;7、步驟4:如果文件上傳成功,minio集群將返回文件元信息包括文件路徑;8、步驟5:文件存儲(chǔ)服務(wù)應(yīng)用接受到minio集群客戶(hù)端返回的文件存儲(chǔ)路徑,利用雪花算法給每個(gè)文件生成文件唯一標(biāo)識(shí)id,調(diào)用shardingsphere組件api進(jìn)行文件元信息的數(shù)據(jù)分片,將文件元信息作為唯一標(biāo)識(shí)id,并將文件名、大小、文件存儲(chǔ)路徑保存到mysql數(shù)據(jù)庫(kù)中;9、步驟6:文件存儲(chǔ)服務(wù)應(yīng)用最終將文件存儲(chǔ)結(jié)果返回給接口調(diào)用方,存儲(chǔ)成功會(huì)返回文件唯一標(biāo)識(shí)id,根據(jù)文件唯一標(biāo)識(shí)id調(diào)用文件存儲(chǔ)服務(wù)應(yīng)用提供的文件查看、刪除接口實(shí)現(xiàn)文件的查看、刪除。10、所述步驟2中minio集群會(huì)將文件分成10mb大小的片段復(fù)制到其他服務(wù)器上。11、所述步驟5中數(shù)據(jù)分片通過(guò)shardingsphere根據(jù)文件唯一標(biāo)識(shí)id按哈希算法取模,結(jié)果范圍規(guī)定到0-n,n表示mysql集群的服務(wù)器個(gè)數(shù),若mysql集群的服務(wù)器個(gè)數(shù)是2,那么n=2;如果文件唯一標(biāo)識(shí)id按哈希算法取模結(jié)果為0,則存儲(chǔ)在數(shù)據(jù)庫(kù)db1中,如果文件唯一標(biāo)識(shí)id按哈希算法取模結(jié)果為1,則存儲(chǔ)在數(shù)據(jù)庫(kù)db2中;在db1和db2中分別創(chuàng)建table1和table2兩張表,將儲(chǔ)存在db1或db2的文件元信息id總數(shù)除以2取余,若余數(shù)為0則存儲(chǔ)在表table1中,否則存儲(chǔ)在table2中。12、有益效果13、1、本專(zhuān)利綜合集成各個(gè)中間件的優(yōu)勢(shì),以minio為文件存儲(chǔ)的基礎(chǔ),以shardingsphere和mysql為輔助存儲(chǔ)文件元信息,通過(guò)存儲(chǔ)服務(wù)應(yīng)用api為對(duì)外開(kāi)放文件上傳、查詢(xún)、刪除的能力,創(chuàng)造了shardingsphere、minio、mysql、存儲(chǔ)服務(wù)應(yīng)用的組合儲(chǔ)存方式,為海量文件存儲(chǔ)提供具有可擴(kuò)展性、易備份、高性能的分布式文件存儲(chǔ)方法。14、2、本專(zhuān)利使用shardingsphere結(jié)合mysql數(shù)據(jù)庫(kù)存儲(chǔ)文件元信息數(shù)據(jù),利用shardingsphere靈活的數(shù)據(jù)分片、高可用性和橫向擴(kuò)展能力,提高文件元信息查詢(xún)性能、簡(jiǎn)化海量文件元信息的數(shù)據(jù)庫(kù)處理能力。15、3、本專(zhuān)利通過(guò)存儲(chǔ)服務(wù)對(duì)外提供文件上傳、查詢(xún)、刪除的能力,降低了使用成本,快速接入的能力。技術(shù)特征:1.一種分布式文件存儲(chǔ)方法,其特征在于包括如下步驟:2.根據(jù)權(quán)利要求1所述的一種分布式文件存儲(chǔ)方法,其特征在于所述步驟2中minio集群會(huì)將文件分成10mb大小的片段復(fù)制到其他服務(wù)器上。3.根據(jù)權(quán)利要求1所述的一種分布式文件存儲(chǔ)方法,其特征在于所述步驟5中數(shù)據(jù)分片通過(guò)shardingsphere根據(jù)文件唯一標(biāo)識(shí)id按哈希算法取模,結(jié)果范圍規(guī)定到0-n,n表示mysql集群的服務(wù)器個(gè)數(shù),若mysql集群的服務(wù)器個(gè)數(shù)是2,那么n=2;如果文件唯一標(biāo)識(shí)id按哈希算法取模結(jié)果為0,則存儲(chǔ)在數(shù)據(jù)庫(kù)db1中,如果文件唯一標(biāo)識(shí)id按哈希算法取模結(jié)果為1,則存儲(chǔ)在數(shù)據(jù)庫(kù)db2中;在db1和db2中分別創(chuàng)建table1和table2兩張表,將儲(chǔ)存在db1或db2的文件元信息id總數(shù)除以2取余,若余數(shù)為0則存儲(chǔ)在表table1中,否則存儲(chǔ)在table2中。技術(shù)總結(jié)本發(fā)明涉及數(shù)據(jù)存儲(chǔ)
技術(shù)領(lǐng)域:
:,特別是一種分布式文件存儲(chǔ)方法。具體是一種基于ShardingSphere分布式SQL事務(wù)和查詢(xún)引擎、MinIO開(kāi)源協(xié)議的對(duì)象存儲(chǔ)服務(wù)、Mysql數(shù)據(jù)庫(kù)的分布式文件存儲(chǔ)方法。本專(zhuān)利綜合集成各個(gè)中間件的優(yōu)勢(shì),以MinIO為文件存儲(chǔ)的基礎(chǔ),以ShardingSphere和Mysql為輔助存儲(chǔ)文件元信息,通過(guò)存儲(chǔ)服務(wù)應(yīng)用API為對(duì)外開(kāi)放文件上傳、查詢(xún)、刪除的能力,為海量文件存儲(chǔ)提供具有可擴(kuò)展性、易備份、高性能的分布式文件存儲(chǔ)方法。技術(shù)研發(fā)人員:魏得龍,邊文龍,孔永永,王江受保護(hù)的技術(shù)使用者:中電萬(wàn)維信息技術(shù)有限責(zé)任公司技術(shù)研發(fā)日:技術(shù)公布日:2025/1/9