一種數(shù)據(jù)合并方法和設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本申請涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其是涉及一種數(shù)據(jù)合并方法和設(shè)備。
【背景技術(shù)】
[0002]LSM Tree (Log Structured Merge Tree,日志結(jié)構(gòu)歸并樹)是一種數(shù)據(jù)存儲模型,該數(shù)據(jù)存儲模型通常將數(shù)據(jù)劃分為內(nèi)存和磁盤多級。其中,對于數(shù)據(jù)的寫操作,并不將數(shù)據(jù)直接寫入到磁盤上,即不直接修改磁盤上的數(shù)據(jù),而是將數(shù)據(jù)寫入內(nèi)存,因而具備較高的寫入性能。進一步的,為了釋放內(nèi)存或者提高讀性能,通過合并操作將內(nèi)存中的數(shù)據(jù)持久化到磁盤文件中(或者將多個磁盤文件進行合并),即通過合并操作將內(nèi)存中的數(shù)據(jù)寫入到磁盤中。
[0003]但是,執(zhí)行合并操作會占用系統(tǒng)大量的10(輸入輸出)資源,直接影響系統(tǒng)正常讀寫操作的吞吐和響應(yīng)時間,導致系統(tǒng)讀寫服務(wù)發(fā)生強烈抖動,這種抖動在高并發(fā)情況下對延時的影響非常大,導致系統(tǒng)的整體穩(wěn)定性很差。
【發(fā)明內(nèi)容】
[0004]本申請實施例提供一種數(shù)據(jù)合并方法和設(shè)備,以有效的控制合并操作對資源的消耗情況,有效避免了對讀寫服務(wù)的影響,提高系統(tǒng)的整體穩(wěn)定性。
[0005]本申請實施例提供一種數(shù)據(jù)合并方法,該方法應(yīng)用于包括數(shù)據(jù)平臺、數(shù)據(jù)更新服務(wù)器和多個數(shù)據(jù)存儲服務(wù)器的系統(tǒng)中,在需要將所述數(shù)據(jù)更新服務(wù)器內(nèi)的數(shù)據(jù)合并到所述多個數(shù)據(jù)存儲服務(wù)器時,所述方法包括以下步驟:
[0006]所述數(shù)據(jù)平臺確定當前需要進行數(shù)據(jù)合并的數(shù)據(jù)存儲服務(wù)器,并將所述數(shù)據(jù)存儲服務(wù)器的外部讀寫流量切換到其它數(shù)據(jù)存儲服務(wù)器;
[0007]在外部讀寫流量被切換到其它數(shù)據(jù)存儲服務(wù)器之后,所述數(shù)據(jù)平臺將所述數(shù)據(jù)更新服務(wù)器內(nèi)的數(shù)據(jù)合并到所述數(shù)據(jù)存儲服務(wù)器中;
[0008]在數(shù)據(jù)被合并到所述數(shù)據(jù)存儲服務(wù)器完成之后,所述數(shù)據(jù)平臺將所述數(shù)據(jù)存儲服務(wù)器的已經(jīng)切換到其它數(shù)據(jù)存儲服務(wù)器的外部讀寫流量恢復到所述數(shù)據(jù)存儲服務(wù)器。
[0009]所述方法進一步包括:
[0010]在確定當前需要進行數(shù)據(jù)合并的數(shù)據(jù)存儲服務(wù)器的過程中,所述數(shù)據(jù)平臺判斷當前是否存在沒有合并數(shù)據(jù)更新服務(wù)器內(nèi)數(shù)據(jù)的數(shù)據(jù)存儲服務(wù)器;如果存在,則所述數(shù)據(jù)平臺從沒有合并數(shù)據(jù)更新服務(wù)器內(nèi)數(shù)據(jù)的數(shù)據(jù)存儲服務(wù)器中選擇一個當前需要進行數(shù)據(jù)合并的數(shù)據(jù)存儲服務(wù)器;如果不存在,則所述數(shù)據(jù)平臺從數(shù)據(jù)更新服務(wù)器內(nèi)刪除已經(jīng)合并到數(shù)據(jù)存儲服務(wù)器的數(shù)據(jù)。
[0011]所述數(shù)據(jù)平臺將所述數(shù)據(jù)存儲服務(wù)器的外部讀寫流量切換到其它數(shù)據(jù)存儲服務(wù)器,具體包括:
[0012]所述數(shù)據(jù)平臺生成流量控制表,在所述流量控制表中,所述數(shù)據(jù)存儲服務(wù)器的流量比重為O ;以使所述客戶端從所述數(shù)據(jù)平臺讀取所述流量控制表,并在發(fā)送外部讀寫流量時,按照所述流量控制表中記錄的數(shù)據(jù)存儲服務(wù)器的流量比重向所述數(shù)據(jù)存儲服務(wù)器發(fā)送外部讀寫流量;
[0013]所述數(shù)據(jù)平臺將所述數(shù)據(jù)存儲服務(wù)器的已經(jīng)切換到其它數(shù)據(jù)存儲服務(wù)器的外部讀寫流量恢復到所述數(shù)據(jù)存儲服務(wù)器,具體包括:所述數(shù)據(jù)平臺生成流量控制表,在所述流量控制表中,所述數(shù)據(jù)存儲服務(wù)器的流量比重為特定比重數(shù)值,所述特定比重數(shù)值是未對所述數(shù)據(jù)存儲服務(wù)器進行數(shù)據(jù)合并時,所述數(shù)據(jù)存儲服務(wù)器對應(yīng)的流量比重;以使所述客戶端從所述數(shù)據(jù)平臺讀取所述流量控制表,并在發(fā)送外部讀寫流量時,按照所述流量控制表中記錄的數(shù)據(jù)存儲服務(wù)器的流量比重向所述數(shù)據(jù)存儲服務(wù)器發(fā)送外部讀寫流量。
[0014]所述方法進一步包括:
[0015]在將所述數(shù)據(jù)更新服務(wù)器內(nèi)的數(shù)據(jù)合并到所述數(shù)據(jù)存儲服務(wù)器的過程中,如果有外部讀寫流量需要由所述數(shù)據(jù)存儲服務(wù)器進行處理,則所述數(shù)據(jù)平臺監(jiān)測所述數(shù)據(jù)存儲服務(wù)器的資源消耗情況;如果所述資源消耗情況滿足預設(shè)策略,則所述數(shù)據(jù)平臺停止將所述數(shù)據(jù)更新服務(wù)器內(nèi)的數(shù)據(jù)合并到所述數(shù)據(jù)存儲服務(wù)器中;如果所述資源消耗情況不滿足預設(shè)策略,則所述數(shù)據(jù)平臺繼續(xù)將所述數(shù)據(jù)更新服務(wù)器內(nèi)的數(shù)據(jù)合并到所述數(shù)據(jù)存儲服務(wù)器中。
[0016]所述資源消耗情況具體包括以下之一或者任意組合:內(nèi)存資源消耗情況、線程資源消耗情況、中央處理器CPU資源消耗情況、輸入輸出1資源消耗情況、網(wǎng)絡(luò)資源消耗情況。
[0017]所述數(shù)據(jù)更新服務(wù)器用于存儲增量數(shù)據(jù),各數(shù)據(jù)存儲服務(wù)器用于存儲基準數(shù)據(jù),所述基準數(shù)據(jù)為按照一定的規(guī)則劃分的不存在交叉的數(shù)據(jù)分片;
[0018]在所述數(shù)據(jù)更新服務(wù)器內(nèi)寫入的增量數(shù)據(jù)的數(shù)據(jù)量達到預設(shè)閾值時,需要將所述數(shù)據(jù)更新服務(wù)器內(nèi)的增量數(shù)據(jù)合并到所述多個數(shù)據(jù)存儲服務(wù)器。
[0019]本申請實施例提供一種數(shù)據(jù)平臺,應(yīng)用于包括所述數(shù)據(jù)平臺、數(shù)據(jù)更新服務(wù)器和多個數(shù)據(jù)存儲服務(wù)器的系統(tǒng)中,在需要將所述數(shù)據(jù)更新服務(wù)器內(nèi)的數(shù)據(jù)合并到所述多個數(shù)據(jù)存儲服務(wù)器時,所述數(shù)據(jù)平臺具體包括:
[0020]判定模塊,用于確定當前需要進行數(shù)據(jù)合并的數(shù)據(jù)存儲服務(wù)器;
[0021]切換模塊,用于將所述數(shù)據(jù)存儲服務(wù)器的外部讀寫流量切換到其它數(shù)據(jù)存儲服務(wù)器;以及,在數(shù)據(jù)被合并到所述數(shù)據(jù)存儲服務(wù)器完成之后,將所述數(shù)據(jù)存儲服務(wù)器的已經(jīng)切換到其它數(shù)據(jù)存儲服務(wù)器的外部讀寫流量恢復到所述數(shù)據(jù)存儲服務(wù)器;
[0022]合并模塊,用于在外部讀寫流量被切換到其它數(shù)據(jù)存儲服務(wù)器之后,將所述數(shù)據(jù)更新服務(wù)器內(nèi)的數(shù)據(jù)合并到所述數(shù)據(jù)存儲服務(wù)器中。
[0023]所述判定模塊,進一步用于在確定當前需要進行數(shù)據(jù)合并的數(shù)據(jù)存儲服務(wù)器的過程中,判斷當前是否存在沒有合并數(shù)據(jù)更新服務(wù)器內(nèi)數(shù)據(jù)的數(shù)據(jù)存儲服務(wù)器;如果存在,則從沒有合并數(shù)據(jù)更新服務(wù)器內(nèi)數(shù)據(jù)的數(shù)據(jù)存儲服務(wù)器中選擇一個當前需要進行數(shù)據(jù)合并的數(shù)據(jù)存儲服務(wù)器;如果不存在,則從數(shù)據(jù)更新服務(wù)器內(nèi)刪除已經(jīng)合并到數(shù)據(jù)存儲服務(wù)器的數(shù)據(jù)。
[0024]所述切換模塊,具體用于在將所述數(shù)據(jù)存儲服務(wù)器的外部讀寫流量切換到其它數(shù)據(jù)存儲服務(wù)器時,生成流量控制表,在所述流量控制表中,所述數(shù)據(jù)存儲服務(wù)器的流量比重為O ;以使所述客戶端從所述數(shù)據(jù)平臺讀取所述流量控制表,并在發(fā)送外部讀寫流量時,按照所述流量控制表中記錄的數(shù)據(jù)存儲服務(wù)器的流量比重向所述數(shù)據(jù)存儲服務(wù)器發(fā)送外部讀寫流量;
[0025]在將所述數(shù)據(jù)存儲服務(wù)器的已經(jīng)切換到其它數(shù)據(jù)存儲服務(wù)器的外部讀寫流量恢復到所述數(shù)據(jù)存儲服務(wù)器時,生成流量控制表,在所述流量控制表中,所述數(shù)據(jù)存儲服務(wù)器的流量比重為特定比重數(shù)值,所述特定比重數(shù)值是未對所述數(shù)據(jù)存儲服務(wù)器進行數(shù)據(jù)合并時,所述數(shù)據(jù)存儲服務(wù)器對應(yīng)的流量比重;以使所述客戶端從所述數(shù)據(jù)平臺讀取所述流量控制表,并在發(fā)送外部讀寫流量時,按照所述流量控制表中記錄的數(shù)據(jù)存儲服務(wù)器的流量比重向所述數(shù)據(jù)存儲服務(wù)器發(fā)送外部讀寫流量。
[0026]還包括:控制模塊,用于在將所述數(shù)據(jù)更新服務(wù)器內(nèi)的數(shù)據(jù)合并到所述數(shù)據(jù)存儲服務(wù)器的過程中,如果有外部讀寫流量需要由所述數(shù)據(jù)存儲服務(wù)器進行處理,則監(jiān)測所述數(shù)據(jù)存儲服務(wù)器的資源消耗情況;如果所述資源消耗情況滿足預設(shè)策略,則停止將所述數(shù)據(jù)更新服務(wù)器內(nèi)的數(shù)據(jù)合并到所述數(shù)據(jù)存儲服務(wù)器中;如果所述資源消耗情況不滿足預設(shè)策略,則繼續(xù)將所述數(shù)據(jù)更新服務(wù)器內(nèi)的數(shù)據(jù)合并到所述數(shù)據(jù)存儲服務(wù)器中。
[0027]所述資源消耗情況包括以下之一或者任意組合:內(nèi)存資源消耗情況、線程資源消耗情況、中央處理器CPU資源消耗情況、輸入輸出1資源消耗情況、網(wǎng)絡(luò)資源消耗情況。
[0028]所述數(shù)據(jù)更新服務(wù)器用于存儲增量數(shù)據(jù),各數(shù)據(jù)存儲服務(wù)器用于存儲基準數(shù)據(jù),所述基準數(shù)據(jù)為按照一定的規(guī)則劃分的不存在交叉的數(shù)據(jù)分片;
[0029]在所述數(shù)據(jù)更新服務(wù)器內(nèi)寫入的增量數(shù)據(jù)的數(shù)據(jù)量達到預設(shè)閾值時,需要將所述數(shù)據(jù)更新服務(wù)器內(nèi)的增量數(shù)據(jù)合并到所述多個數(shù)據(jù)存儲服務(wù)器。
[0030]與現(xiàn)有技術(shù)相比,本申請實施例至少具有以下優(yōu)點:本申請實施例中,針對多個數(shù)據(jù)存儲服務(wù)器,通過將一個數(shù)據(jù)存儲服務(wù)器的外部讀寫流量切換到其它數(shù)據(jù)存儲服務(wù)器,并在外部讀寫流量被切換到其它數(shù)據(jù)存儲服務(wù)器之后,當前只對該一個數(shù)據(jù)存儲服務(wù)器進行數(shù)據(jù)合并操作,即將數(shù)據(jù)更新服務(wù)器內(nèi)的數(shù)據(jù)合并到該數(shù)據(jù)存儲服務(wù)器,從而每次只對一個數(shù)據(jù)存儲服務(wù)器進行合并操作,并由其它數(shù)據(jù)存儲服務(wù)器對外部讀寫流量進行處理,從而錯峰進行數(shù)據(jù)合并,能夠自主進行流量切換,有效的控制合并操作對資源的消耗情況,有效的避免了對讀寫服務(wù)的影響,提高系統(tǒng)的整體穩(wěn)定性。進一步的,上述方式可以減少運維的復雜度,不需要手工運維操作。上述方式能夠自主遷移在線讀寫流量,將內(nèi)部合并操作和在線服務(wù)進行了徹底的隔離,使合并不影響在線服務(wù)。上述方式能夠在發(fā)生合并時將流量分流到未發(fā)生合并的數(shù)據(jù)存儲服務(wù)器,完成引流后再開始執(zhí)行合并操作,并在合并完成后將切走的流量進行自動恢復,整個過程做到對外部服務(wù)的透明化。上述方式可以針對不同的應(yīng)用采用不同的合并策略,可以多次發(fā)起數(shù)據(jù)合并,可以在存儲相同數(shù)據(jù)量的情況下有效減少存儲分級等,從而有效的優(yōu)化了讀性能。
【附圖說明】
[0031]為了更加清楚地說明本申請實施例的技術(shù)方案,下面將對本申請實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)本申請實施例的這些附圖獲得其他的附圖。
[0032]圖1和圖2是本申請實施例一中提出的應(yīng)用場景示意圖;
[0033]圖3是本申請實施例一中提出的一種數(shù)據(jù)合并方法流程示意圖;
[0034]圖4是本申請實施例二中提出的一種數(shù)據(jù)平臺