System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及分布式對象存儲系統,尤其是涉及一種桶自動分片方法及裝置、介質、設備。
技術介紹
1、隨著互聯網的發展,互聯網的數據量越來越大,分布式對象存儲系統應運而生。作為一種新的網絡存儲架構,分布式對象存儲系統適用于圖片及視頻等非結構化數據的存儲,并且具有快存儲、高速直接訪問磁盤以及文件存儲分布式共享的特點,在互聯網中得到廣泛的發展與應用。目前分布式對象存儲系統中已支持桶對象索引動態重新分片功能,即當桶內對象索引的數量到達閾值時,會自動觸發對該桶對象索引的重新分片,即將該桶內原始分片上所有對象索引經過重新計算,映射到新的分片上,再把原始分片上的對象索引全部刪除,最后更新桶信息。
2、現有分片方案存在極大的弊端,例如,桶內分片數量為1024個,每個分片可以承載10萬個對象索引,檢測到桶內對象索引的個數大于1.24億時,則開始對該桶進行重新分片。在重新分片期間,要對該桶進行加鎖,然后會按照原分片的順序,從0-1023將每個分片上的所有對象索引列舉出來,經過一定的分配計算,得到新的目的分片,再把該對象索引寫到目的分片上,直到所有對象索引復制完成,才會對該桶解鎖。加鎖期間,對該桶的所有寫請求都會被阻塞而失敗。而且隨著桶內對象索引數量的增多,轉移時間越長,那么重新分片的持續時間越長,對前端業務造成的影響就越大,用戶體驗感越差。
3、綜上可見,如何降低重分片耗時,從而降低對前端業務的負面影響是有待解決的問題。
技術實現思路
1、針對以上至少一個技術問題,本專利技術實施
2、根據第一方面,本專利技術實施例提供的桶自動分片方法包括:
3、在對象被上傳到分布式對象存儲系統的過程中,對每一個桶內的對象索引的數量進行監測;
4、根據監測到的每一個桶內的對象索引的數量,確定該桶是否符合預設重新分片規則;若是,則將該桶對應的分片任務記錄到任務列表中;
5、確定當前處于待分配任務狀態的對象存儲網關客戶端;
6、將所述任務列表中的每一個分片任務分配給一個當前處于待分配任務狀態的對象存儲網關客戶端,以使分配得到分片任務的對象存儲網關客戶端通過多個子線程將該分片任務對應的桶內的原始分片中的各個對象索引復制到目標分片中,實現對該分片任務對應的桶的重新分片。
7、在一個實施例中,所述將所述任務列表中的每一個分片任務分配給一個當前處于待分配任務狀態的對象存儲網關客戶端,包括:
8、若所述任務列表中的分片任務的數量小于等于當前處于待分配任務狀態的對象存儲網關客戶端的數量,則將每一個分片任務分配給一個當前處于待分配任務狀態的對象存儲網關客戶端,各個分配任務分配給的對象存儲網關客戶端不同;在每一次分片任務分配后,將所述分片任務與對象存儲網關客戶端之間的對應關系記錄到日志池中,并刪除該對象存儲網關客戶端之前的對應關系;
9、若所述任務列表中的分片任務的數量大于當前處于待分配任務狀態的對象存儲網關客戶端的數量,則為每一個當前處于待分配任務狀態的對象存儲網關客戶端分配一個分片任務,且各個對象存儲網關客戶端分配得到的分片任務不同;在有對象存儲網關客戶端完成分片任務并恢復為待分配任務狀態時,為恢復為待分配任務狀態的對象存儲網關客戶端一一對應分配剩余未分配的分片任務;在每一次分片任務分配后,將所述分片任務與對象存儲網關客戶端之間的對應關系記錄到日志池中,并刪除該對象存儲網關客戶端之前的對應關系。
10、在一個實施例中,所述根據監測到的每一個桶內的對象索引的數量,確定該桶是否符合預設重新分片規則,包括:
11、若所述預設重新分片規則為桶內的對象索引的數量達到第一閾值,則判斷監測到的每一個桶內的對象索引的數量是否達到所述第一閾值;若達到所述第一閾值,則該桶符合所述預設重新分片規則;若未達到所述第一閾值,則該桶不符合所述預設重新分片規則;
12、和/或,若所述預設重新分片規則為桶內單個分片上對象索引的數量達到第二閾值,則根據每一個桶內的對象索引的數量和該桶內原始分片的數量,計算該桶內單個分片上對象索引的數量,判斷該桶內單個分片上對象索引的數量是否達到所述第二閾值;若達到所述第二閾值,則該桶符合所述預設重新分片規則;若未達到所述第二閾值,則該桶不符合所述預設重新分片規則。
13、在一個實施例中,所述將所述任務列表中的每一個分片任務分配給一個當前處于待分配任務狀態的對象存儲網關客戶端之前,所述方法還包括:
14、判斷當前時間是否在調度時間內;
15、若在所述調度時間內,則執行所述將所述任務列表中的每一個分片任務分配給一個當前處于待分配任務狀態的對象存儲網關客戶端的步驟;
16、若不在所述調度時間內,則等待直到進入所述調度時間再執行所述將所述任務列表中的每一個分片任務分配給一個當前處于待分配任務狀態的對象存儲網關客戶端的步驟。
17、在一個實施例中,每一個桶內的每一個分片的狀態包括尚未重分狀態、正在重分狀態和重分完成狀態;其中:
18、尚未重分狀態的分片為新建且尚未進行重分的分片,針對尚未重分狀態的分片不阻塞讀寫操作;正在重分狀態的分片為正在進行重分的原始分片,針對正在重分狀態的分片阻塞任何操作;重分完成狀態的分片為已經完成重分的原始分片,針對重分完成狀態的分片不阻塞讀寫操作,且在重分完成狀態的分片被清理之前,存在寫入請求時,寫入數據同時寫入到已經完成重分的原始分片和對應的目標分片中。
19、在一個實施例中,所述對象存儲網關客戶端通過多個子線程將該分片任務對應的桶內的原始分片中的各個對象索引復制到目標分片中的過程包括:
20、開啟n個子線程和一個主線程;其中,每一個線程用于負責將m/n個原始分片的對象索引復制到目標分片的工作;每一個子線程在完成一個原始分片的對象索引復制到目標分片的工作后通知所述主線程,以使所述主線程為該子線程分配下一個需要重分的原始分片,直到該子線程完成m/n個原始分片的對象索引復制到目標分片的工作;m為該桶內的原始分片的數量,n為線程的數量;每一個子線程將一個原始分片的對象索引復制到目標分片的過程包括:將該原始分片的狀態標記為正在重分狀態,以阻塞對該原始分片的任何操作;依次列舉出該原始分片上所有的對象索引,計算每一個對象索引對應的目標分片的id,將每一個對象索引復制到對應id的目標分片上,直到該原始分片上所有的對象索引都被復制到對應的目標分片上,將該原始分片的狀態標記為重分完成狀態,以解除該原始分片的阻塞操作;
21、當n個子線程都成功完成各自對應的所有原始分片的重分工作后,返回該桶的重分成功的消息,并清理各個原始分片。
22、在一個實施例中,所述對象存儲網關客戶端通過多個子線程將該分片任務對應的桶內的原始分片中的各個對象索引復制到目標分片中的過程還包括:若任意一個子線程未成功完成自己的任意一個原始分片的重分工作,則返回該桶的重分失敗的消息,清理各個目標本文檔來自技高網...
【技術保護點】
1.一種桶自動分片方法,其特征在于,包括:
2.根據權利要求1所述的方法,其特征在于,所述將所述任務列表中的每一個分片任務分配給一個當前處于待分配任務狀態的對象存儲網關客戶端,包括:
3.根據權利要求1所述的方法,其特征在于,所述根據監測到的每一個桶內的對象索引的數量,確定該桶是否符合預設重新分片規則,包括:
4.根據權利要求1所述的方法,其特征在于,所述將所述任務列表中的每一個分片任務分配給一個當前處于待分配任務狀態的對象存儲網關客戶端之前,所述方法還包括:
5.根據權利要求1所述的方法,其特征在于,每一個桶內的每一個分片的狀態包括尚未重分狀態、正在重分狀態和重分完成狀態;其中:
6.根據權利要求5所述的方法,其特征在于,所述對象存儲網關客戶端通過多個子線程將該分片任務對應的桶內的原始分片中的各個對象索引復制到目標分片中的過程包括:
7.根據權利要求6所述的方法,其特征在于,所述對象存儲網關客戶端通過多個子線程將該分片任務對應的桶內的原始分片中的各個對象索引復制到目標分片中的過程還包括:若任意一個子線程未成
8.一種桶自動分片裝置,其特征在于,包括:
9.一種計算機可讀存儲介質,其特征在于,其上存儲有計算機程序,當所述計算機程序在計算機中執行時,令計算機執行實現權利要求1~7中的任一項所述的方法。
10.一種計算設備,其特征在于,包括存儲器和處理器,所述存儲器中存儲有可執行代碼,所述處理器執行所述可執行代碼時,實現權利要求1~7中的任一項所述的方法。
...【技術特征摘要】
1.一種桶自動分片方法,其特征在于,包括:
2.根據權利要求1所述的方法,其特征在于,所述將所述任務列表中的每一個分片任務分配給一個當前處于待分配任務狀態的對象存儲網關客戶端,包括:
3.根據權利要求1所述的方法,其特征在于,所述根據監測到的每一個桶內的對象索引的數量,確定該桶是否符合預設重新分片規則,包括:
4.根據權利要求1所述的方法,其特征在于,所述將所述任務列表中的每一個分片任務分配給一個當前處于待分配任務狀態的對象存儲網關客戶端之前,所述方法還包括:
5.根據權利要求1所述的方法,其特征在于,每一個桶內的每一個分片的狀態包括尚未重分狀態、正在重分狀態和重分完成狀態;其中:
6.根據權利要求5所述的方法,其特征在于,所述對象存儲網關客戶端通過多個子線程將該分片任務對應的桶內的原始分...
【專利技術屬性】
技術研發人員:張圣明,李超,王騰飛,高偉男,
申請(專利權)人:浪潮云信息技術股份公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。