一種基于阿里云對象存儲oss的檔案系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種基于阿里云對象存儲OSS的檔案系統(tǒng),屬于云存儲技術(shù)領(lǐng)域,業(yè)務(wù)流轉(zhuǎn)如下:1)應(yīng)用能過自己的方式請需要上傳的圖片或文件上傳到檔案系統(tǒng)的文件服務(wù)器上。2)上傳成功后,應(yīng)用調(diào)用檔案系統(tǒng)的服務(wù),將文件的基本信息提供給檔案系統(tǒng)服務(wù),檔案系統(tǒng)將文件的相關(guān)信息保存到數(shù)據(jù)庫中。3)文件基本信息保存成功后,檔案系統(tǒng)將文件上傳到oss服務(wù)器中。4)檔案系統(tǒng)提供給管理者一個管理平臺,可查看當(dāng)前文件的狀態(tài),文件存儲在oss的邏輯名稱、文件的物理名稱等,以及是否啟用已刪除的文件。本發(fā)明基于阿里對象存儲的檔案系統(tǒng),是阿里云對外提供的海量、安全和高可靠的云存儲服務(wù)。容量和處理能力的彈性擴(kuò)展。
【專利說明】
一種基于阿里云對象存儲OSS的檔案系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及云存儲技術(shù)領(lǐng)域,具體地說是一種基于阿里云對象存儲OSS的檔案系統(tǒng)。
【背景技術(shù)】
[0002]檔案系統(tǒng),作為現(xiàn)在各業(yè)務(wù)系統(tǒng)中需要用到文件上傳,是不可缺少的一個中心服務(wù),但由于目前文件、圖片等的管理存在的太多的復(fù)雜性,包括大文件傳輸、流程控制、動態(tài)擴(kuò)容、平臺相關(guān)性等。
[0003]目前我們大部分的檔案系統(tǒng),都是將文件存儲在文件服務(wù)器上,存在的問題如下:(I)擴(kuò)展性差,當(dāng)目標(biāo)文件服務(wù)器的空間不足時,需要擴(kuò)展服務(wù)器容量,我們需要人工的購買硬件、然后將硬件加入到服務(wù)器中,這樣對于用戶來說,需要停機(jī)服務(wù),然后再開機(jī)服務(wù),即影響了系統(tǒng)的實(shí)時性,也增加了成本,無法保證彈性擴(kuò)容。(2)當(dāng)大批量的用戶在實(shí)時讀寫文件時,會產(chǎn)生大量的并發(fā)性,很容易導(dǎo)致系統(tǒng)癱瘓。(3)僵硬的圖片存儲,無法支持縮略、裁剪、水印、壓縮和格式轉(zhuǎn)換等圖片處理功能。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的技術(shù)任務(wù)是提供一種基于阿里云對象存儲OSS的檔案系統(tǒng),解決服務(wù)器擴(kuò)展性差、大批量用戶實(shí)時讀寫文件時容易導(dǎo)致系統(tǒng)癱瘓的問題,基于阿里對象存儲(Object Storage Service)的檔案系統(tǒng),是阿里云對外提供的海量、安全和高可靠的云存儲服務(wù),RESTFul API的平臺無關(guān)性,容量和處理能力的彈性擴(kuò)展。
[0005]本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:
一種基于阿里云對象存儲OSS的檔案系統(tǒng),業(yè)務(wù)流轉(zhuǎn)如下:
1)應(yīng)用能過自己的方式請需要上傳的圖片或文件上傳到檔案系統(tǒng)的文件服務(wù)器上;
2)上傳成功后,應(yīng)用調(diào)用檔案系統(tǒng)的服務(wù),將文件的基本信息(包括系統(tǒng)編號、業(yè)務(wù)編號、表單編號、文件類型、文件擴(kuò)展名、物理文件名稱、邏輯文件名稱、文件描述、用戶代碼)提供給檔案系統(tǒng)服務(wù),檔案系統(tǒng)將文件的相關(guān)信息保存到數(shù)據(jù)庫中;
3)文件基本信息保存成功后,檔案系統(tǒng)將文件上傳到oss服務(wù)器中。同時給相應(yīng)的用戶返回查詢、刪除、下載接口,使得用戶只關(guān)注的于上傳的動作,具體文件上傳到oss上及在OSS上的存儲大小、安全性全部由OSS管理;
4)檔案系統(tǒng)提供給管理者一個管理平臺,可查看當(dāng)前文件的狀態(tài),文件存儲在oss的邏輯名稱、文件的物理名稱等,以及是否啟用已刪除的文件;
所述檔案系統(tǒng)提供三個應(yīng)用接口,具體步驟如下:
1)檔案系統(tǒng)文件新增服務(wù)CreateArchiveFile(String jsonstr);
2)檔案系統(tǒng)文件查詢服務(wù)QueryArchiveFile(String jsonstr);
3)檔案系統(tǒng)文件刪除服務(wù)DeleteArchiveFile(String jsonstr)。
[0006]所述檔案系統(tǒng)文件新增服務(wù)CreateArchiveFiIe,應(yīng)用能過自己的方式請需要上傳的圖片或文件上傳到檔案系統(tǒng)的文件服務(wù)器上,調(diào)用CreateArchi veFi Ie服務(wù),請求上傳文件的json串,主要包括業(yè)務(wù)數(shù)據(jù)內(nèi)容為:系統(tǒng)編號、業(yè)務(wù)編號、表單編號、文件類型、文件擴(kuò)展名、物理文件名稱、邏輯文件名稱、文件描述、用戶代碼。
[0007]所述檔案系統(tǒng)文件查詢服務(wù)QueryArchiveFile,應(yīng)用調(diào)用檔案系統(tǒng)的QueryArchiveFiIe服務(wù),請求的json串,主要包括系統(tǒng)編號、業(yè)務(wù)編號、表單編號、用戶代碼,可以返回當(dāng)前用戶所有已經(jīng)上傳的文件列表。
[0008]所述檔案系統(tǒng)文件刪除服務(wù)DeleteArchiveFile,應(yīng)用調(diào)用檔案系統(tǒng)的QueryArchiveFiIe服務(wù),請求的json串,主要包括:物理文件名稱。
[0009]本發(fā)明的一種基于阿里云對象存儲OSS的檔案系統(tǒng)與現(xiàn)有技術(shù)相比,具有以下有益效果:
檔案系統(tǒng)基于阿里對象存儲(Object Storage Service),是阿里云對外提供的海量、安全和高可靠的云存儲服務(wù)的特點(diǎn),在其基礎(chǔ)上進(jìn)行了服務(wù)接口的開放化,為用戶提供簡單、高效的服務(wù)接口。對于用戶來說,他們只是需要上傳相應(yīng)的文件,而不需要去關(guān)注存儲空間是否足夠。當(dāng)大批量用戶訪問檔案系統(tǒng)時,檔案系統(tǒng)會將請求發(fā)送到oss服務(wù)器,由oss進(jìn)行文件的分發(fā)式請求處理,保證了大并發(fā)下用戶訪問正常。同時我們的服務(wù)接口會保存文件的相關(guān)信息,對于管理者來說,可以實(shí)時的查看文件的相關(guān)狀態(tài)及做相應(yīng)的文件處理。
【附圖說明】
[0010]圖1是本發(fā)明檔案系統(tǒng)文件上傳示意圖;
圖2本發(fā)明檔案系統(tǒng)文件上傳實(shí)施框圖。
【具體實(shí)施方式】
[0011 ]下面結(jié)合附圖對本發(fā)明作進(jìn)一步說明。
[0012]如圖1所示按先后順序,檔案系統(tǒng)文件上傳分以下幾步:
(I)應(yīng)用能過自己的方式請需要上傳的圖片或文件上傳到檔案系統(tǒng)的文件服務(wù)器上。
[0013](2)上傳成功后,應(yīng)用調(diào)用檔案系統(tǒng)的服務(wù),將文件的基本信息(包括系統(tǒng)編號、業(yè)務(wù)編號、表單編號、文件類型、文件擴(kuò)展名、物理文件名稱、邏輯文件名稱、文件描述、用戶代碼)提供給檔案系統(tǒng)服務(wù),檔案系統(tǒng)將文件的相關(guān)信息保存到數(shù)據(jù)庫中。
[0014](3)文件基本信息保存成功后,檔案系統(tǒng)將文件上傳到oss服務(wù)器中。同時給相應(yīng)的用戶返回查詢、刪除、下載接口,使得用戶只關(guān)注的于上傳的動作,具體文件上傳到OSS上及在OSS上的存儲大小、安全性全部由OSS管理。
[0015]圖2為文件上傳的具體實(shí)現(xiàn)步驟:
(I)用戶如果沒有安全I(xiàn)D和密鑰,要先申請。
[0016](2)創(chuàng)建上傳文件的客戶端對象。
[0017]( 3)查詢是否有文件存儲對象,如果不存在,則創(chuàng)建該對象,同時設(shè)置相應(yīng)的讀寫權(quán)限。
[0018](4)上傳具體的文件。
[0019]檔案系統(tǒng)目前提供三個應(yīng)用接口,具體步驟如下:
(I)檔案系統(tǒng)文件新增服務(wù)CreateArchiveFile (String jsonstr); 應(yīng)用能過自己的方式請需要上傳的圖片或文件上傳到檔案系統(tǒng)的文件服務(wù)器上,調(diào)用CreateArchiveFiIe服務(wù),請求上傳文件的json串,主要包括業(yè)務(wù)數(shù)據(jù)內(nèi)容為:系統(tǒng)編號、業(yè)務(wù)編號、表單編號、文件類型、文件擴(kuò)展名、物理文件名稱、邏輯文件名稱、文件描述、用戶代碼。
[0020] (2)檔案系統(tǒng)文件查詢服務(wù)QueryArchiveFile (String jsonstr);
應(yīng)用調(diào)用檔案系統(tǒng)的QueryArchiveFiIe服務(wù),請求的json串,主要包括系統(tǒng)編號、業(yè)務(wù)編號、表單編號、用戶代碼。可以返回當(dāng)前用戶所有已經(jīng)上傳的文件列表。
[0021 ] (3)檔案系統(tǒng)文件刪除服務(wù)DeleteArchiveFile (String jsonstr);
應(yīng)用調(diào)用檔案系統(tǒng)的QueryArchiveFiIe服務(wù),請求的json串,主要包括:物理文件名稱。
[0022]文件上傳,我們需要定義文件上傳的路徑,即文件服務(wù)器的路徑,然后建立oss文件上傳的本地對象OSSClient client = new 0SSClient(ACCESS_ID, ACCESS_KEY);在進(jìn)行上傳之前,我們要看是否有已經(jīng)存在的Bucket,如果Bucket沒有創(chuàng)建,那么創(chuàng)建新Bucket ,client.createBucket(bucketName);還需要驗(yàn)證是否有權(quán)限上傳,設(shè)置權(quán)限為client.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);設(shè)置成公共讀寫權(quán)限。文件上傳主要能過調(diào)用cl ient.putOb ject (bucketName,key , input,objectMeta);將文件上傳到oss服務(wù)器,文件上傳的內(nèi)部實(shí)現(xiàn)見附圖2。具體部署如下:
1、首先需要阿里云的用戶中創(chuàng)建用于訪問OSS的安全密鑰的安全I(xiàn)D(AccessKey ID)及安全密鑰(Access Key Secret);
2、使用默認(rèn)的OSS服務(wù)器地址創(chuàng)建OSSClient對象,OSSClientclient = new0SSClient(ACCESS_ID, ACCESS_KEY);
3、在進(jìn)行上傳之前,我們要看是否有已經(jīng)存在的文件存儲對象(Bucket),創(chuàng)建方法如下:
private static void CreateBucket(0SSC1ient client, String bucketName)throws OSSExcept1n, ClientExcept1n{
try {
Il創(chuàng)建bucket
client.createBucket(bucketName);
} catch (ServiceExcept1n e) {
if (!OSSErrorCode.BUCKET_ALREADY_EXISTS.equals(e.getErrorCode
())){
Il如果Bucket已經(jīng)存在,則忽略 throw e;
}
}
4、需要設(shè)置權(quán)限上傳,設(shè)置權(quán)限為:
private static void setBucketPublicReadable(OSSClient client, StringbucketName)
throws OSSExcept1n, ClientExcept1n { //設(shè)置bucket的訪問權(quán)限,public-read-wri te權(quán)限client.setBucketAcl(bucketName,CannedAccessControIList.PubIi cReadffr i te);
}
權(quán)限有三種類型:CannedAccessControlLi st.Private私有權(quán)限、CannedAcce s sContro I Li st.Pub IicRead 公共讀、CannedAccessControlList.Pub IicReadWrite公共讀寫
5、文件上傳:
private static void uploadFiIe(OSSClient client, String bucketName,String key, String filename)
throws OSSExcept1n, ClientExcept1n, FileNotFoundExcept1n { File file = new File(filename);
ObjectMetadata objectMeta = new ObjectMetadataO;objectMeta.setContentLength(f iIe.length());
//可以在metadata中標(biāo)記文件類型 objectMeta.setContentType(,,image/jpeg〃);
InputStream input = new FileInputStream(file); client.putObject(bucketName,key,input,objectMeta);
}
文件下載:
文件下載,對于本地下載的情況,我們需要提供的是存儲路徑,對于遠(yuǎn)程調(diào)用接口的形式,由于我們在上傳文件的時候,可以根據(jù)定義好的規(guī)則,直接返回文件的url,用戶可以直接根據(jù)該urI下載,客戶端下載可調(diào)用client.getObject(new GetObjectRequest(bucketName, key) ,new File(filename)),部分代碼如下:
private static void downloadFile(OSSClient client, String bucketName,String key, String filename)
throws OSSExcept1n, ClientExcept1n {
/ /生成監(jiān)聽bucket中的文件夾
ObjectListing ObjectListing = client.1istObjects(bucketName); List<OSSObjectSummary> allfileList = ObjectListing.getObjectSummaries();
String objName ;
//循環(huán)讀取容器中的文件
for (int i = O; i < allfileList.size(); i++) { objName = allfileList.get(i).getKeyO;
client.getObject(new GetObjectRequest(bucketName,objName), new File(filename+objName));
}
} 文件刪除:
文件刪除,刪除接口 DeleteArchiveFile,我們可以單獨(dú)刪除一個文件,也可以批量刪除一個Bucket下的所有文件,遍歷文件可以用ObjectListing.getObjectSummaries();刪除文件可以用cl ient.deleteOb ject (bucketName,objectName);部分刪除代碼如下:private static void deleteBucket(OSSClient client, String bucketName)throws OSSExcept1n, ClientExcept1n {
ObjectListing ObjectListing = client.1istObjects(bucketName);List<0SS0bjectSummary> deleteList = ObjectListing.getObjectSummaries();
System.0ut.println(deleteList);
for (int i = 0; i < deleteList.size(); i++) {
String objectName = deleteList.get(i).getKeyO;
//如果不為空,先刪除bucket下的文件
client.deIeteObject(bucketName,objectName);
}
}
【主權(quán)項(xiàng)】
1.一種基于阿里云對象存儲OSS的檔案系統(tǒng),其特征在于,業(yè)務(wù)流轉(zhuǎn)如下: 1)應(yīng)用能過自己的方式請需要上傳的圖片或文件上傳到檔案系統(tǒng)的文件服務(wù)器上; 2)上傳成功后,應(yīng)用調(diào)用檔案系統(tǒng)的服務(wù),將文件的基本信息(包括系統(tǒng)編號、業(yè)務(wù)編號、表單編號、文件類型、文件擴(kuò)展名、物理文件名稱、邏輯文件名稱、文件描述、用戶代碼)提供給檔案系統(tǒng)服務(wù),檔案系統(tǒng)將文件的相關(guān)信息保存到數(shù)據(jù)庫中; 3)文件基本信息保存成功后,檔案系統(tǒng)將文件上傳到oss服務(wù)器中,同時給相應(yīng)的用戶返回查詢、刪除、下載接口,使得用戶只關(guān)注的于上傳的動作,具體文件上傳到oss上及在OSS上的存儲大小、安全性全部由OSS管理; 4)檔案系統(tǒng)提供給管理者一個管理平臺,可查看當(dāng)前文件的狀態(tài),文件存儲在oss的邏輯名稱、文件的物理名稱等,以及是否啟用已刪除的文件; 所述檔案系統(tǒng)提供三個應(yīng)用接口,具體步驟如下: 1)檔案系統(tǒng)文件新增服務(wù)CreateArchiveFile(String jsonstr); 2)檔案系統(tǒng)文件查詢服務(wù)QueryArchiveFile(String jsonstr); 3)檔案系統(tǒng)文件刪除服務(wù)DeleteArchiveFile(String jsonstr)。2.根據(jù)權(quán)利要求1所述的一種基于阿里云對象存儲OSS的檔案系統(tǒng),其特征在于檔案系統(tǒng)文件新增服務(wù)CreateArchi veFi Ie,應(yīng)用能過自己的方式請需要上傳的圖片或文件上傳到檔案系統(tǒng)的文件服務(wù)器上,調(diào)用CreateArchiveFiIe服務(wù),請求上傳文件的json串,主要包括業(yè)務(wù)數(shù)據(jù)內(nèi)容為:系統(tǒng)編號、業(yè)務(wù)編號、表單編號、文件類型、文件擴(kuò)展名、物理文件名稱、邏輯文件名稱、文件描述、用戶代碼。3.根據(jù)權(quán)利要求1所述的一種基于阿里云對象存儲OSS的檔案系統(tǒng),其特征在于檔案系統(tǒng)文件查詢服務(wù)QueryArchi veFi Ie,應(yīng)用調(diào)用檔案系統(tǒng)的QueryArchi veFi Ie服務(wù),請求的json串,主要包括系統(tǒng)編號、業(yè)務(wù)編號、表單編號、用戶代碼,可以返回當(dāng)前用戶所有已經(jīng)上傳的文件列表。4.根據(jù)權(quán)利要求1所述的一種基于阿里云對象存儲OSS的檔案系統(tǒng),其特征在于檔案系統(tǒng)文件刪除服務(wù)DeleteArchi veFi Ie,應(yīng)用調(diào)用檔案系統(tǒng)的QueryArchiveFi Ie服務(wù),請求的json串,主要包括:物理文件名稱。
【文檔編號】G06F17/30GK105824932SQ201610155390
【公開日】2016年8月3日
【申請日】2016年3月18日
【發(fā)明人】于明偉
【申請人】浪潮軟件集團(tuán)有限公司