分區(qū)日志隊列同步管理方法及設(shè)備的制作方法
【專利摘要】本發(fā)明實施例提供一種分區(qū)日志隊列同步管理方法及設(shè)備。該方法包括主節(jié)點接收客戶端發(fā)送的日志記錄寫入請求消息,主節(jié)點根據(jù)主日志分區(qū)區(qū)間的寫入標志位,確定主日志分區(qū)區(qū)間為可寫主日志分區(qū)區(qū)間,并將客戶端觸發(fā)的日志記錄寫入可寫主日志分區(qū)區(qū)間對應的主日志隊列;主節(jié)點向備節(jié)點發(fā)送日志記錄同步請求消息,以使備節(jié)點根據(jù)可寫主日志分區(qū)區(qū)間確定備節(jié)點對應的可寫備日志分區(qū)區(qū)間,并將日志記錄寫入可寫備日志分區(qū)區(qū)間對應的備日志隊列。本實施例提供的分區(qū)日志隊列同步管理方法及設(shè)備,在日志分區(qū)區(qū)間發(fā)生變化時,可以保證主備節(jié)點數(shù)據(jù)一致性。
【專利說明】分區(qū)日志隊列同步管理方法及設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實施例涉及通信技術(shù),尤其涉及一種分區(qū)日志隊列同步管理方法及設(shè)備。
【背景技術(shù)】
[0002]分布式數(shù)據(jù)庫系統(tǒng)由若干個節(jié)點集合而成。每個節(jié)點負責分布式數(shù)據(jù)庫中的部分數(shù)據(jù),從而使分布式數(shù)據(jù)庫系統(tǒng)能夠處理海量業(yè)務數(shù)據(jù),有效解決了集中式數(shù)據(jù)庫可擴充性差的問題。
[0003]當分布式數(shù)據(jù)庫系統(tǒng)采用日志記錄進行數(shù)據(jù)同步時,當日志記錄寫入的方式為異步,即主節(jié)點將日志記錄寫入主日志隊列,備節(jié)點將日志記錄寫入對應的備日志隊列后,備節(jié)點就返回日志記錄寫入成功,主節(jié)點將主日志隊列中的日志記錄寫入內(nèi)存后,就向客戶端返回寫成功。主節(jié)點定期向備節(jié)點發(fā)送寫入請求,備節(jié)點將備日志隊列中的日志記錄寫入內(nèi)存。這種異步提交的方法相對于同步提交在很大程度上能提供系統(tǒng)的吞吐量。
[0004]然而,當日志分區(qū)區(qū)間發(fā)生切分或合并變化,并產(chǎn)生新日志分區(qū)區(qū)間時,如果備日志隊列中的日志記錄沒有寫入內(nèi)存,就將備日志隊列刪除重建新主備日志隊列,會導致主節(jié)點和備節(jié)點的數(shù)據(jù)不一致;如果等備日志隊列中的日記記錄寫入內(nèi)存后,再刪除該備日志隊列創(chuàng)建新主備日志隊列的話,會導致在這一段時間中對于新日志分區(qū)區(qū)間不可用;既要保證新日志分區(qū)區(qū)間可用,又要保證主備節(jié)點之間的數(shù)據(jù)一致,可以保留舊日志分區(qū)區(qū)間對應的日志隊列并同時為新日志分區(qū)區(qū)間創(chuàng)建新的日志隊列。但在這種情況下,當有新的日志記錄寫入時,不管是在主節(jié)點上還是備節(jié)點上都有可能將部分記錄寫入新日志分區(qū)區(qū)間,部分記錄寫入舊日志分區(qū)區(qū)間,從而導致主節(jié)點和備節(jié)點日志記錄的不對應,使日志記錄進行異步提交的時候產(chǎn)生混亂。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例提供一種分區(qū)日志隊列同步管理方法及設(shè)備,以保證在分布式系統(tǒng)在區(qū)間發(fā)生變化時,日志分區(qū)區(qū)間的可用性和主備節(jié)點數(shù)據(jù)的一致性。
[0006]第一方面,本發(fā)明實施例提供一種分區(qū)日志隊列同步管理方法,包括:
[0007]主節(jié)點接收客戶端發(fā)送的日志記錄寫入請求消息,所述日志記錄寫入請求消息包括所述客戶端觸發(fā)的日志記錄;
[0008]所述主節(jié)點根據(jù)主日志分區(qū)區(qū)間的寫入標志位,確定所述主日志分區(qū)區(qū)間為可寫主日志分區(qū)區(qū)間,并將所述客戶端觸發(fā)的日志記錄寫入所述可寫主日志分區(qū)區(qū)間對應的主日志隊列;
[0009]所述主節(jié)點向備節(jié)點發(fā)送日志記錄同步請求消息,所述日志記錄同步請求消息中包括所述客戶端觸發(fā)的日志記錄以及所述可寫主日志分區(qū)區(qū)間,以使所述備節(jié)點根據(jù)所述可寫主日志分區(qū)區(qū)間確定所述備節(jié)點對應的可寫備日志分區(qū)區(qū)間,并將所述日志記錄寫入所述可寫備日志分區(qū)區(qū)間對應的備日志隊列;
[0010]其中,所述可寫主日志分區(qū)區(qū)間與所述可寫備日志分區(qū)區(qū)間對應相同的可寫日志分區(qū)區(qū)間。
[0011]結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,所述方法還包括:
[0012]所述主節(jié)點接收管理節(jié)點發(fā)送的路由表更新請求信息,所述路由表更新請求消息包括路由表;
[0013]所述主節(jié)點根據(jù)所述路由表中的路由條目確定所述主節(jié)點對應的主日志分區(qū)區(qū)間的寫入標志位。
[0014]結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可能的實現(xiàn)方式中,所述主節(jié)點根據(jù)所述路由表中的路由條目確定所述主節(jié)點對應的主日志分區(qū)區(qū)間的寫入標志位,包括:
[0015]所述主節(jié)點確定路由條目中的路由日志分區(qū)區(qū)間歸屬所述主節(jié)點;
[0016]所述主節(jié)點確定所述路由日志分區(qū)區(qū)間與本地可寫日志分區(qū)區(qū)間是否存在交集;
[0017]若是,則所述主節(jié)點將所述本地可寫日志分區(qū)區(qū)間置為不可寫,將所述路由日志分區(qū)區(qū)間的寫入標志位置為可寫,將所述路由日志分區(qū)區(qū)間作為所述可寫主日志分區(qū)區(qū)間并為所述可寫主日志分區(qū)區(qū)間維護對應的主日志隊列;
[0018]若否,則將所述路由日志分區(qū)區(qū)間的寫入標志位置為可寫,將所述路由日志分區(qū)區(qū)間作為所述可寫主日志分區(qū)區(qū)間并為所述可寫主日志分區(qū)區(qū)間維護對應的主日志隊列。
[0019]結(jié)合第一方面,第一方面的第一種、第二種任一種可能的實現(xiàn)方式,在第一方面的第三種可能的實現(xiàn)方式中,所述主節(jié)點根據(jù)主日志分區(qū)區(qū)間的寫入標志位判斷所述主日志分區(qū)區(qū)間可寫之前,還包括:
[0020]所述主節(jié)點接收管理節(jié)點發(fā)送的日志分區(qū)區(qū)間變化信息,所述日志分區(qū)區(qū)間變化信息包括主日志分區(qū)區(qū)間的切分與合并信息,所述主日志分區(qū)區(qū)間的切分與合并將引起路由表中的路由條目發(fā)生變化;
[0021]所述主節(jié)點根據(jù)所述日志分區(qū)區(qū)間變化信息確定所述主日志分區(qū)區(qū)間;
[0022]其中,所述主日志分區(qū)區(qū)間為切分或合并后新的主日志分區(qū)區(qū)間時,所述主日志分區(qū)區(qū)間的寫入標志位為可寫,所述主日志分區(qū)區(qū)間為切分或合并前原始主日志分區(qū)區(qū)間時,所述主日志分區(qū)區(qū)間的寫入標志位為不可寫。
[0023]結(jié)合第一方面,第一方面的第一種至第三種任一種可能的實現(xiàn)方式,在第一方面的第四種可能的實現(xiàn)方式中,所述主節(jié)點向備節(jié)點發(fā)送日志記錄同步請求消息之后,還包括:
[0024]所述主節(jié)點接收所述備節(jié)點發(fā)送的日志記錄同步響應消息,確定所述備節(jié)點將所述日志記錄寫入備日志隊列;
[0025]所述主節(jié)點將所述主日志隊列中的所述日志記錄寫入提交日志緩沖隊列和內(nèi)存。
[0026]結(jié)合第一方面的第四種可能的實現(xiàn)方式,在第一方面的第五種可能的實現(xiàn)方式中,所述主節(jié)點將所述主日志隊列中的所述日志記錄寫入提交日志緩沖隊列和內(nèi)存之后,還包括:
[0027]所述主節(jié)點向所述備節(jié)點發(fā)送寫入請求消息,以使所述備節(jié)點將備日志緩沖隊列中的日志記錄寫入所述備節(jié)點對應的提交日志緩沖隊列和內(nèi)存。
[0028]結(jié)合第一方面的第五種可能的實現(xiàn)方式,在第一方面的第六種可能的實現(xiàn)方式中,所述主節(jié)點向所述備節(jié)點發(fā)送寫入請求消息之后,還包括:
[0029]所述主節(jié)點接收所述備節(jié)點發(fā)送的日志記錄缺失消息;
[0030]所述主節(jié)點向所述備節(jié)點發(fā)送日志記錄缺失響應消息。
[0031]結(jié)合第一方面,第一方面的第一種至第六種任一種可能的實現(xiàn)方式,在第一方面的第七種可能的實現(xiàn)方式中,所述方法還包括:
[0032]所述主節(jié)點確定所述主日志分區(qū)區(qū)間對應的主日志隊列中的日志記錄是否為空;
[0033]若否,則主節(jié)點刪除滿足預設(shè)條件的日志記錄;
[0034]若是,則主節(jié)點確定所述主日志分區(qū)區(qū)間是否存在與路由表的路由條目中,若不存在,則刪除所述主日志分區(qū)區(qū)間。
[0035]第二方面,本發(fā)明實施例提供一種分區(qū)日志隊列同步管理方法,包括:
[0036]備節(jié)點接收主節(jié)點發(fā)送的日志記錄同步請求消息,所述日志記錄同步請求消息中包括所述客戶端觸發(fā)的日志記錄以及可寫主日志分區(qū)區(qū)間,所述可寫日志分區(qū)區(qū)間為所述主節(jié)點根據(jù)寫入標志位確定的;
[0037]所述備節(jié)點根據(jù)所述可寫主日志分區(qū)區(qū)間確定所述備節(jié)點對應的可寫備日志分區(qū)區(qū)間,并將所述日志記錄寫入所述可寫備日志分區(qū)區(qū)間對應的備日志隊列;
[0038]所述備節(jié)點向所述主節(jié)點發(fā)送日志同步響應消息,以使所述主節(jié)點將所述主日志隊列中的所述日志記錄寫入主節(jié)點對應的提交日志緩沖隊列和內(nèi)存;
[0039]其中,所述可寫主日志分區(qū)區(qū)間與所述可寫備日志分區(qū)區(qū)間對應相同的可寫日志分區(qū)區(qū)間。
[0040]結(jié)合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,所述方法還包括:
[0041]所述備節(jié)點接收管理節(jié)點發(fā)送的路由表更新請求信息,所述路由表更新請求消息包括路由表;
[0042]所述備節(jié)點根據(jù)所述路由表中的路由條目,對備日志分區(qū)區(qū)間及所述備日志分區(qū)區(qū)間對應的備日志隊列進行管理。
[0043]結(jié)合第二方面的第一種可能的實現(xiàn)方式,在第二方面的第二種可能的實現(xiàn)方式中,所述備節(jié)點根據(jù)所述路由表中的路由條目,對備日志分區(qū)區(qū)間及所述備日志分區(qū)區(qū)間對應的備日志隊列進行管理,包括:
[0044]所述備節(jié)點確定路由條目中的路由日志分區(qū)區(qū)間歸屬所述備節(jié)點;
[0045]所述備節(jié)點確定所述路由條目與本地路由條目不同;
[0046]所述備節(jié)點確定所述路由日志分區(qū)區(qū)間與本地備日志分區(qū)區(qū)間不同;
[0047]所述備節(jié)點增加所述路由日志分區(qū)區(qū)間,并將所述路由日志分區(qū)區(qū)間作為可寫備日志分區(qū)區(qū)間,并為所述可寫備日志分區(qū)區(qū)間創(chuàng)建對應的備日志隊列。
[0048]結(jié)合第二方面,第二方面的第一種、第二種任一種可能的實現(xiàn)方式,在第二方面的第三種可能的實現(xiàn)方式中,所述備節(jié)點向所述主節(jié)點發(fā)送日志同步響應消息之后,還包括:
[0049]所述備節(jié)點接收所述主節(jié)點發(fā)送的寫入請求消息;
[0050]所述備節(jié)點將所述備日志隊列中的日志記錄寫入備節(jié)點對應的提交日志緩沖隊列和內(nèi)存。
[0051]結(jié)合第二方面的第三種可能的實現(xiàn)方式,在第二方面的第四種可能的實現(xiàn)方式中,所述備節(jié)點將所述備日志隊列中的日志記錄寫入提交日志緩沖隊列和內(nèi)存之前,還包括:
[0052]所述備節(jié)點向所述主節(jié)點發(fā)送日志記錄缺失消息;
[0053]所述備節(jié)點接收所述主節(jié)點發(fā)送的日志記錄缺失響應消息。
[0054]結(jié)合第二方面,第二方面的第一種至第四種任一種可能的實現(xiàn)方式,在第二方面的第五種可能的實現(xiàn)方式中,所述方法還包括:
[0055]所述備節(jié)點確定所述備日志分區(qū)區(qū)間對應的備日志隊列中的日志記錄是否為空;
[0056]若否,則備節(jié)點刪除滿足預設(shè)條件的日志記錄;
[0057]若是,則備節(jié)點確定所述備日志分區(qū)區(qū)間是否存在與路由表的路由條目中,若不存在,則刪除所述備日志分區(qū)區(qū)間。
[0058]第三方面,本發(fā)明實施例提供一種主節(jié)點,包括:
[0059]第一接收模塊,用于接收客戶端發(fā)送的日志記錄寫入請求消息,所述日志記錄寫入請求消息包括所述客戶端觸發(fā)的日志記錄;
[0060]第一寫入模塊,用于根據(jù)主日志分區(qū)區(qū)間的寫入標志位,確定所述主日志分區(qū)區(qū)間為可寫主日志分區(qū)區(qū)間,并將所述客戶端觸發(fā)的日志記錄寫入所述可寫主日志分區(qū)區(qū)間對應的主日志隊列;
[0061]第一發(fā)送模塊,用于向備節(jié)點發(fā)送日志記錄同步請求消息,所述日志記錄同步請求消息中包括所述客戶端觸發(fā)的日志記錄以及所述可寫主日志分區(qū)區(qū)間,以使所述備節(jié)點根據(jù)所述可寫主日志分區(qū)區(qū)間確定所述備節(jié)點對應的可寫備日志分區(qū)區(qū)間,并將所述日志記錄寫入所述可寫備日志分區(qū)區(qū)間對應的備日志隊列;
[0062]其中,所述可寫主日志分區(qū)區(qū)間與所述可寫備日志分區(qū)區(qū)間對應相同的可寫日志分區(qū)區(qū)間。
[0063]結(jié)合第三方面,在第三方面的第一種可能的實現(xiàn)方式中,還包括:
[0064]第二接收模塊,用于接收管理節(jié)點發(fā)送的路由表更新請求信息,所述路由表更新請求消息包括路由表;
[0065]標志位確定模塊,用于根據(jù)所述路由表中的路由條目確定所述主節(jié)點對應的主日志分區(qū)區(qū)間的寫入標志位。
[0066]結(jié)合第三方面的第一種可能的實現(xiàn)方式,在第三方面的第二種可能的實現(xiàn)方式中,所述標志位確定模塊具體用于:
[0067]確定路由條目中的路由日志分區(qū)區(qū)間歸屬所述主節(jié)點;
[0068]確定所述路由日志分區(qū)區(qū)間與本地可寫日志分區(qū)區(qū)間是否存在交集;
[0069]若是,則將所述本地可寫日志分區(qū)區(qū)間置為不可寫,將所述路由日志分區(qū)區(qū)間的寫入標志位置為可寫,將所述路由日志分區(qū)區(qū)間作為所述可寫主日志分區(qū)區(qū)間并為所述可寫主日志分區(qū)區(qū)間維護對應的主日志隊列;
[0070]若否,則將所述路由日志分區(qū)區(qū)間的寫入標志位置為可寫,將所述路由日志分區(qū)區(qū)間作為所述可寫主日志分區(qū)區(qū)間并為所述可寫主日志分區(qū)區(qū)間維護對應的主日志隊列。
[0071]結(jié)合第三方面,第三方面的第一種、第二種任一種可能的實現(xiàn)方式,在第三方面的第三種可能的實現(xiàn)方式中,還包括:區(qū)間確定模塊,用于在根據(jù)主日志分區(qū)區(qū)間的寫入標志位判斷所述主日志分區(qū)區(qū)間可寫之前,
[0072]接收管理節(jié)點發(fā)送的日志分區(qū)區(qū)間變化信息,所述日志分區(qū)區(qū)間變化信息包括主日志分區(qū)區(qū)間的切分與合并信息,所述主日志分區(qū)區(qū)間的切分與合并將引起路由表中的路由條目發(fā)生變化;
[0073]根據(jù)所述日志分區(qū)區(qū)間變化信息確定所述主日志分區(qū)區(qū)間;
[0074]其中,所述主日志分區(qū)區(qū)間為切分或合并后新的主日志分區(qū)區(qū)間時,所述主日志分區(qū)區(qū)間的寫入標志位為可寫,所述主日志分區(qū)區(qū)間為切分或合并前原始主日志分區(qū)區(qū)間時,所述主日志分區(qū)區(qū)間的寫入標志位為不可寫。
[0075]結(jié)合第三方面,第三方面的第一種至第三種任一種可能的實現(xiàn)方式,在第三方面的第四種可能的實現(xiàn)方式中,還包括:第二寫入模塊,用于向備節(jié)點發(fā)送日志記錄同步請求消息之后,
[0076]接收所述備節(jié)點發(fā)送的日志記錄同步響應消息,確定所述備節(jié)點將所述日志記錄寫入備日志隊列;
[0077]將所述主日志隊列中的所述日志記錄寫入提交日志緩沖隊列和內(nèi)存。
[0078]結(jié)合第三方面的第四種可能的實現(xiàn)方式,在第三方面的第五種可能的實現(xiàn)方式中,還包括:第二發(fā)送模塊,用于將所述主日志隊列中的所述日志記錄寫入提交日志緩沖隊列和內(nèi)存之后,向所述備節(jié)點發(fā)送寫入請求消息,以使所述備節(jié)點將備日志緩沖隊列中的日志記錄寫入所述備節(jié)點對應的提交日志緩沖隊列和內(nèi)存。
[0079]結(jié)合第三方面的第五種可能的實現(xiàn)方式,在第三方面的第六種可能的實現(xiàn)方式中,還包括:處理模塊,用于向所述備節(jié)點發(fā)送寫入請求消息之后,
[0080]接收所述備節(jié)點發(fā)送的日志記錄缺失消息;
[0081]向所述備節(jié)點發(fā)送日志記錄缺失響應消息。
[0082]結(jié)合第三方面,第三方面的第一種至第六種任一種可能的實現(xiàn)方式,在第三方面的第七種可能的實現(xiàn)方式中,還包括:
[0083]刪除模塊,用于確定所述主日志分區(qū)區(qū)間對應的主日志隊列中的日志記錄是否為空;
[0084]若否,則主節(jié)點刪除滿足預設(shè)條件的日志記錄;
[0085]若是,則主節(jié)點確定所述主日志分區(qū)區(qū)間是否存在與路由表的路由條目中,若不存在,則刪除所述主日志分區(qū)區(qū)間。
[0086]第四方面,本發(fā)明實施例提供一種備節(jié)點,包括:
[0087]第一接收模塊,用于接收主節(jié)點發(fā)送的日志記錄同步請求消息,所述日志記錄同步請求消息中包括所述客戶端觸發(fā)的日志記錄以及可寫主日志分區(qū)區(qū)間,所述可寫日志分區(qū)區(qū)間為所述主節(jié)點根據(jù)寫入標志位確定的;
[0088]第一寫入模塊,用于根據(jù)所述可寫主日志分區(qū)區(qū)間確定所述備節(jié)點對應的可寫備日志分區(qū)區(qū)間,并將所述日志記錄寫入所述可寫備日志分區(qū)區(qū)間對應的備日志隊列;
[0089]第一發(fā)送模塊,用于向所述主節(jié)點發(fā)送日志同步響應消息,以使所述主節(jié)點將所述主日志隊列中的所述日志記錄寫入主節(jié)點對應的提交日志緩沖隊列和內(nèi)存;
[0090]其中,所述可寫主日志分區(qū)區(qū)間與所述可寫備日志分區(qū)區(qū)間對應相同的可寫日志分區(qū)區(qū)間。
[0091]結(jié)合第四方面,在第四方面的第一種可能的實現(xiàn)方式中,還包括:
[0092]第二接收模塊,用于接收管理節(jié)點發(fā)送的路由表更新請求信息,所述路由表更新請求消息包括路由表;
[0093]管理模塊,用于根據(jù)所述路由表中的路由條目,對備日志分區(qū)區(qū)間及所述備日志分區(qū)區(qū)間對應的備日志隊列進行管理。
[0094]結(jié)合第四方面的第一種可能的實現(xiàn)方式,在第四方面的第二種可能的實現(xiàn)方式中,所述管理模塊具體用于:
[0095]確定路由條目中的路由日志分區(qū)區(qū)間歸屬所述備節(jié)點;
[0096]確定所述路由條目與本地路由條目不同;
[0097]確定所述路由日志分區(qū)區(qū)間與本地備日志分區(qū)區(qū)間不同;
[0098]增加所述路由日志分區(qū)區(qū)間,并將所述路由日志分區(qū)區(qū)間作為可寫備日志分區(qū)區(qū)間,并為所述可寫備日志分區(qū)區(qū)間創(chuàng)建對應的備日志隊列。
[0099]結(jié)合第四方面,第四方面的第一種、第二種任一種可能的實現(xiàn)方式,在第四方面的第三種可能的實現(xiàn)方式中,還包括:
[0100]第二寫入模塊,用于向所述主節(jié)點發(fā)送日志同步響應消息之后,
[0101]接收所述主節(jié)點發(fā)送的寫入請求消息;
[0102]將所述備日志隊列中的日志記錄寫入備節(jié)點對應的提交日志緩沖隊列和內(nèi)存。
[0103]結(jié)合第四方面的第三種可能的實現(xiàn)方式,在第四方面的第四種可能的實現(xiàn)方式中,還包括:
[0104]處理模塊,用于將所述備日志隊列中的日志記錄寫入提交日志緩沖隊列和內(nèi)存之
N /.刖,
[0105]向所述主節(jié)點發(fā)送日志記錄缺失消息;
[0106]接收所述主節(jié)點發(fā)送的日志記錄缺失響應消息。
[0107]結(jié)合第四方面,第四方面的第一種至第四種任一種可能的實現(xiàn)方式,在第四方面的第五種可能的實現(xiàn)方式中,還包括:刪除模塊,用于確定所述備日志分區(qū)區(qū)間對應的備日志隊列中的日志記錄是否為空;
[0108]若否,則備節(jié)點刪除滿足預設(shè)條件的日志記錄;
[0109]若是,則備節(jié)點確定所述備日志分區(qū)區(qū)間是否存在與路由表的路由條目中,若不存在,則刪除所述備日志分區(qū)區(qū)間。
[0110]本發(fā)明實施例提供的分區(qū)日志隊列同步管理方法及設(shè)備,該主節(jié)點通過接收客戶端發(fā)送的日志記錄寫入請求消息,所述主節(jié)點根據(jù)主日志分區(qū)區(qū)間的寫入標志位,確定所述主日志分區(qū)區(qū)間為可寫主日志分區(qū)區(qū)間,并將所述客戶端觸發(fā)的日志記錄寫入所述可寫主日志分區(qū)區(qū)間對應的主日志隊列;所述主節(jié)點向備節(jié)點發(fā)送日志記錄同步請求消息,以使所述備節(jié)點根據(jù)所述可寫主日志分區(qū)區(qū)間確定所述備節(jié)點對應的可寫備日志分區(qū)區(qū)間,并將所述日志記錄寫入所述可寫備日志分區(qū)區(qū)間對應的備日志隊列,主備節(jié)點之間寫入相同的日志分區(qū)區(qū)間,避免了主節(jié)點和備節(jié)點數(shù)據(jù)的不一致。
【專利附圖】
【附圖說明】
[0111]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0112]圖1為本發(fā)明分區(qū)日志隊列同步管理方法實施例一的流程示意圖;
[0113]圖2為本發(fā)明實施例分布式數(shù)據(jù)庫集群結(jié)構(gòu)示意圖;
[0114]圖3為本發(fā)明實施例主日志分區(qū)區(qū)間切分示意圖;
[0115]圖4為主日志分區(qū)對應的主日志隊列的存儲格式示意圖;
[0116]圖5為本發(fā)明實施例同步數(shù)據(jù)格式示意圖;
[0117]圖6為本發(fā)明實施例日志隊列更新流程實施例一的示意圖;
[0118]圖7為本發(fā)明分區(qū)日志隊列同步管理方法實施例二的流程示意圖;
[0119]圖8為備日志分區(qū)對應的備日志隊列的存儲格式;
[0120]圖9為本發(fā)明實施例日志隊列更新流程實施例二的示意圖;
[0121]圖10為本發(fā)明實施例主節(jié)點與備節(jié)點同步流程實施例一的示意圖;
[0122]圖11為本發(fā)明實施例主節(jié)點與備節(jié)點同步流程實施例二的示意圖;
[0123]圖12為本發(fā)明實施例日志分區(qū)區(qū)間與日志隊列的對應關(guān)系示意圖;
[0124]圖13為本發(fā)明實施例主節(jié)點刪除日志分區(qū)區(qū)間的流程示意圖;
[0125]圖14為本發(fā)明實施例備節(jié)點刪除日志分區(qū)區(qū)間的流程示意圖;
[0126]圖15為本發(fā)明主節(jié)點實施例一的結(jié)構(gòu)示意圖;
[0127]圖16為本發(fā)明主節(jié)點實施例二的結(jié)構(gòu)示意圖;
[0128]圖17為本發(fā)明備節(jié)點實施例一的結(jié)構(gòu)示意圖;
[0129]圖18為本發(fā)明備節(jié)點實施例二的結(jié)構(gòu)示意圖。
【具體實施方式】
[0130]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0131]圖1為本發(fā)明分區(qū)日志隊列同步管理方法實施例一的流程示意圖,本實施例的執(zhí)行主體為主節(jié)點,該主節(jié)點可以通過軟件和/或硬件實現(xiàn)。如圖1所示,本實施例的方法可以包括:
[0132]步驟101、主節(jié)點接收客戶端發(fā)送的日志記錄寫入請求消息,所述日志記錄寫入請求消息包括所述客戶端觸發(fā)的日志記錄;
[0133]步驟102、所述主節(jié)點根據(jù)主日志分區(qū)區(qū)間的寫入標志位,確定所述主日志分區(qū)區(qū)間為可寫主日志分區(qū)區(qū)間,并將所述客戶端觸發(fā)的日志記錄寫入所述可寫主日志分區(qū)區(qū)間對應的主日志隊列;
[0134]步驟103、所述主節(jié)點向備節(jié)點發(fā)送日志記錄同步請求消息,所述日志記錄同步請求消息中包括所述客戶端觸發(fā)的日志記錄以及所述可寫主日志分區(qū)區(qū)間。
[0135]其中,所述可寫主日志分區(qū)區(qū)間與所述可寫備日志分區(qū)區(qū)間對應相同的可寫日志分區(qū)區(qū)間
[0136]所述主日志分區(qū)區(qū)間為變化后新的日志分區(qū)區(qū)間時,所述主日志分區(qū)區(qū)間的寫入標志位為可寫,所述主日志分區(qū)區(qū)間為變化前舊的日志分區(qū)區(qū)間時,所述主日志分區(qū)區(qū)間的寫入標志位為不可寫。
[0137]本實施例提供的分區(qū)日志隊列管理方法,可以應用到分布式數(shù)據(jù)庫集群中。其中,圖2為本發(fā)明實施例分布式數(shù)據(jù)庫集群結(jié)構(gòu)示意圖。如圖2所示,分布式數(shù)據(jù)庫集群是由一個管理(manager)節(jié)點和若干個簇(cluster)節(jié)點構(gòu)成。其中,簇節(jié)點是主節(jié)點(master)和備節(jié)點(slave)的統(tǒng)稱。每個主節(jié)點包括兩個及以上的備節(jié)點。管理節(jié)點通過定期檢查簇節(jié)點發(fā)送的心跳來維護簇節(jié)點的狀態(tài)和向簇節(jié)點推送最新的路由表等。本領(lǐng)域技術(shù)人員可以理解,在具體實現(xiàn)過程中,屬于簇節(jié)點的節(jié)點,其即可以作為主節(jié)點、也可以作為備節(jié)點,對應地,屬于簇節(jié)點的節(jié)點,均存在主日志分區(qū)區(qū)間和/或備日志分區(qū)區(qū)間,每一個分區(qū)區(qū)間對應一個日志隊列,其中日志隊列用來存儲分區(qū)區(qū)間的數(shù)據(jù)行。本實施例為了便于說明,對歸屬于簇節(jié)點的節(jié)點的主備進行了限制。
[0138]本實施例提供的分區(qū)日志隊列管理方法,主要用于主節(jié)點對應的主日志分區(qū)區(qū)間發(fā)生變化時,分區(qū)日志隊列的管理方法。當新主節(jié)點加入時,將導致主日志分區(qū)區(qū)間的變化,本實施例所涉及的新主節(jié)點加入,包括對原主日志分區(qū)區(qū)間的合并與切分。其中,主日志分區(qū)區(qū)間發(fā)生變化的具體實現(xiàn)過程為:
[0139]所述主節(jié)點接收管理節(jié)點發(fā)送的日志分區(qū)區(qū)間變化信息,所述日志分區(qū)區(qū)間變化信息包括主日志分區(qū)區(qū)間的切分與合并信息,所述主日志分區(qū)區(qū)間的切分與合并將引起路由表中的路由條目發(fā)生變化;
[0140]所述主節(jié)點根據(jù)所述日志分區(qū)區(qū)間變化信息確定所述主日志分區(qū)區(qū)間。
[0141]在具體實現(xiàn)過程中,以主日志分區(qū)區(qū)間的切分為例,進行詳細說明,其中,主節(jié)點包括新主節(jié)點和舊主節(jié)點。當新主節(jié)點加入時,該新主節(jié)點直接向管理節(jié)點發(fā)送加入請求,管理節(jié)點遍歷路由表,進行日志分區(qū)的負載統(tǒng)計,然后管理節(jié)點根據(jù)各日志分區(qū)的負載,對現(xiàn)有的主日志分區(qū)區(qū)間進行切分,具體如圖3所示,管理節(jié)點然后向舊主節(jié)點發(fā)送日志分區(qū)區(qū)間變化信息,該日志分區(qū)區(qū)間變化信息包括主日志分區(qū)區(qū)間的切分信息。舊主節(jié)點根據(jù)切分信息,創(chuàng)建新的日志隊列,將舊的日志分區(qū)隊列置為不可寫。然后新主節(jié)點在本節(jié)點創(chuàng)建對應的日志隊列,并從對應的舊主節(jié)點上請求屬于該新主節(jié)點對應的主日志分區(qū)區(qū)間的數(shù)據(jù)。在數(shù)據(jù)傳送的過程中,如果有新的屬于新節(jié)點日志分區(qū)區(qū)間的日記記錄寫入則新日志記錄會寫入舊主節(jié)點新的日志隊列,并同步給新節(jié)點寫于新節(jié)點對應的日志隊列。待所有數(shù)據(jù)都接收完成后,舊主節(jié)點和新主節(jié)點依次更新路由表。其中新主節(jié)點以負責這段主日志分區(qū)區(qū)間的主節(jié)點身份加入。
[0142]圖3為本發(fā)明實施例主日志分區(qū)區(qū)間切分示意圖。如圖3所示,分布式數(shù)據(jù)庫有六個主節(jié)點,該六個主節(jié)點對應的主日志分區(qū)區(qū)間分別為[0,100]、[101,200]、[201,300]、[301,400]、[401,500]和[501,900]。當有新主節(jié)點加入時,管理節(jié)點根據(jù)各日志分區(qū)的負載,將主日志分區(qū)區(qū)間[501,900]切分為[501,750]和[751,900]兩個主日志分區(qū)區(qū)間,并將主日志分區(qū)區(qū)間[751,900]分給新節(jié)點。舊主節(jié)點收到管理節(jié)點的通知后,在本地將[501,900]置為不可寫,并創(chuàng)建兩個新的日志隊列[501,750]和[751,900]置為可寫;新主節(jié)點則在本地創(chuàng)建新的備日志隊列[751,900]。在主節(jié)點向備節(jié)點傳送數(shù)據(jù)的過程中,如果有新的數(shù)據(jù)屬于[751,900]寫入,則舊主節(jié)點會將數(shù)據(jù)寫入對應的可寫區(qū)間[751,900],并同步給新主節(jié)點,新主節(jié)點將數(shù)據(jù)寫入備日志隊列[751,900]。待數(shù)據(jù)傳送完成后,舊主節(jié)點將區(qū)間[751,900]置為不可寫,并觸發(fā)該段區(qū)間的提交請求。新主節(jié)點將備區(qū)間[751,900]的記錄都寫入內(nèi)存后,舊主節(jié)點和新主節(jié)點依次更新路由表,并根據(jù)路由表更新各自的主日志分區(qū)區(qū)間和備日志分區(qū)區(qū)間。
[0143]在步驟101中,主節(jié)點接收客戶端發(fā)送的日志記錄寫入請求消息,日志記錄寫入請求包括客戶端觸發(fā)的日志記錄。其中,日志記錄包括數(shù)據(jù)庫操作過程中的插入、更新和刪除等過程。
[0144]在步驟102中,主節(jié)點根據(jù)主節(jié)點對應的主日志分區(qū)區(qū)間的寫入標志位,判斷客戶端觸發(fā)的日志記錄可以寫入主日志分區(qū)區(qū)間對應的主日志隊列。在具體實現(xiàn)過程中,當主日志分區(qū)區(qū)間為變化后新的日志分區(qū)區(qū)間時,寫入標志位為可寫,當主日志分區(qū)區(qū)間為變化前舊的日志分區(qū)區(qū)間時,主日志分區(qū)區(qū)間的寫入標志位為不可寫??蛇x地,寫入標志位O代表可寫,寫入標志位I代表不可寫。
[0145]在本實施例中,主日志分區(qū)區(qū)間和日志隊列具有對應關(guān)系。圖4為主日志分區(qū)對應的主日志隊列的存儲格式示意圖。一段主日志分區(qū)區(qū)間對應一個日志隊列,0/1代表寫標志,O代表可寫,I代表不可寫。
[0146]本領(lǐng)域技術(shù)人員可以理解,步驟101和步驟102中,主節(jié)點即可以為新主節(jié)點,也可以為舊主節(jié)點。主節(jié)點根據(jù)判斷結(jié)果將客戶端觸發(fā)的日志記錄寫入主日志分區(qū)區(qū)間對應的日志隊列。本領(lǐng)域技術(shù)人員可以理解,新舊主節(jié)點僅為人為劃分,對于主節(jié)點本機而言,并沒有區(qū)別。
[0147]在步驟103中,主節(jié)點將日志記錄寫入主日志隊列之后,向備節(jié)點發(fā)送日志記錄同步請求消息,日志記錄同步請求消息中包括客戶端觸發(fā)的日志記錄以及可寫主日志分區(qū)區(qū)間,其中,主節(jié)點發(fā)送給備節(jié)點的同步數(shù)據(jù)格式如圖5所示(圖5為本發(fā)明實施例同步數(shù)據(jù)格式示意圖),然后,備節(jié)點根據(jù)可寫主日志分區(qū)區(qū)間確定備節(jié)點對應的可寫備日志分區(qū)區(qū)間,并將日志記錄寫入可寫備日志分區(qū)區(qū)間對應的備日志隊列。本領(lǐng)域技術(shù)人員可以理解,可寫主日志分區(qū)區(qū)間與可寫備日志分區(qū)區(qū)間對應的可寫日志分區(qū)區(qū)間相同。
[0148]本實施例提供的分區(qū)日志隊列管理方法,主節(jié)點通過接收客戶端發(fā)送的日志記錄寫入請求消息,所述主節(jié)點根據(jù)主日志分區(qū)區(qū)間的寫入標志位,確定所述主日志分區(qū)區(qū)間為可寫主日志分區(qū)區(qū)間,并將所述客戶端觸發(fā)的日志記錄寫入所述可寫主日志分區(qū)區(qū)間對應的主日志隊列;所述主節(jié)點向備節(jié)點發(fā)送日志記錄同步請求消息,以使所述備節(jié)點根據(jù)所述可寫主日志分區(qū)區(qū)間確定所述備節(jié)點對應的可寫備日志分區(qū)區(qū)間,并將所述日志記錄寫入所述可寫備日志分區(qū)區(qū)間對應的備日志隊列,主備節(jié)點之間寫入相同的日志分區(qū)區(qū)間,避免了主節(jié)點和備節(jié)點數(shù)據(jù)的不一致。
[0149]在圖1實施例的基礎(chǔ)上,當管理節(jié)點通過心跳檢查發(fā)現(xiàn)主節(jié)點的路由表不是最新的,會將最新的路由表推送到該主節(jié)點上。主節(jié)點則接收管理節(jié)點發(fā)送的路由表更新請求消息,所述路由表更新請求消息包括路由表,主節(jié)點根據(jù)路由表中的路由條目確定主節(jié)點對應的主日志分區(qū)區(qū)間的寫入標志位。
[0150]本領(lǐng)域技術(shù)人員可以理解,當主日志分區(qū)區(qū)間發(fā)生變化時,必然導致路由表中的路由條目發(fā)生變化。其中,路由條目包括主節(jié)點的主日志分區(qū)區(qū)間與備節(jié)點的日志分區(qū)區(qū)間。主節(jié)點根據(jù)所述路由表中的路由條目確定所述主節(jié)點對應的主日志分區(qū)區(qū)間的寫入標志位可如圖6所示。圖6為本發(fā)明實施例日志隊列更新流程實施例一的示意圖。
[0151]步驟601、主節(jié)點獲取路由表中的路由條目;
[0152]主節(jié)點通過遍歷的方式獲取路由表中的每一個路由條目。
[0153]步驟602、所述主節(jié)點確定路由條目中的路由日志分區(qū)區(qū)間是否歸屬所述主節(jié)點,若是,執(zhí)行步驟603,若否,執(zhí)行步驟601 ;
[0154]本領(lǐng)域技術(shù)人員可以理解,路由條目中包括節(jié)點標識和對應的路由日志分區(qū)區(qū)間,主節(jié)點根據(jù)節(jié)點標識確定該路由日志分區(qū)區(qū)間是否歸屬于該主節(jié)點,若是,執(zhí)行步驟603,若否,執(zhí)行步驟601。
[0155]步驟603、所述主節(jié)點確定所述路由日志分區(qū)區(qū)間與本地可寫日志分區(qū)區(qū)間是否存在交集,若是,執(zhí)行步驟604,若否,執(zhí)行步驟605 ;
[0156]當路由日志分區(qū)區(qū)間與本地可寫日志分區(qū)區(qū)間存在交集時,說明對主日志分區(qū)區(qū)間進行了切分或合并。
[0157]步驟604、所述主節(jié)點將所述本地可寫日志分區(qū)區(qū)間置為不可寫,將所述路由日志分區(qū)區(qū)間的寫入標志位置為可寫,將所述路由日志分區(qū)區(qū)間作為所述可寫主日志分區(qū)區(qū)間并為所述可寫主日志分區(qū)區(qū)間維護對應的主日志隊列;
[0158]步驟605、將所述路由日志分區(qū)區(qū)間的寫入標志位置為可寫,將所述路由日志分區(qū)區(qū)間作為所述可寫主日志分區(qū)區(qū)間并為所述可寫主日志分區(qū)區(qū)間維護對應的主日志隊列。
[0159]本實施例通過根據(jù)更新的路由條目,對主節(jié)點對應的主日志分區(qū)區(qū)間的寫入標志位進行了更新,避免了日志記錄可能寫入主日志分區(qū)區(qū)間或本地可寫日志分區(qū)區(qū)間,導致了日志記錄的不一致的問題,新的日志記錄將寫入路由日志分區(qū)區(qū)間對應的主日志分區(qū)區(qū)間。
[0160]圖7為本發(fā)明分區(qū)日志隊列同步管理方法實施例二的流程示意圖,本實施例的執(zhí)行主體為備節(jié)點,該備節(jié)點可以通過軟件和/或硬件實現(xiàn)。如圖7所示,本實施例的方法可以包括:
[0161]步驟701、備節(jié)點接收主節(jié)點發(fā)送的日志記錄同步請求消息,所述日志記錄同步請求消息中包括所述客戶端觸發(fā)的日志記錄以及可寫主日志分區(qū)區(qū)間,所述可寫日志分區(qū)區(qū)間為所述主節(jié)點根據(jù)寫入標志位確定的。
[0162]本實施例提供的應用場景與圖1所示實施例的應用場景類似,該備節(jié)點可以對主節(jié)點的數(shù)據(jù)進行備份。其中,可寫日志分區(qū)區(qū)間為主節(jié)點根據(jù)寫入標志位確定的可寫主日志分區(qū)區(qū)間,由于備節(jié)點對主節(jié)點進行備份,可寫主日志分區(qū)區(qū)間與可寫備日志分區(qū)區(qū)間對應相同的可寫日志分區(qū)區(qū)間,即可寫主日志分區(qū)區(qū)間與可寫備日志分區(qū)區(qū)間一致。
[0163]步驟702、所述備節(jié)點根據(jù)所述可寫主日志分區(qū)區(qū)間確定所述備節(jié)點對應的可寫備日志分區(qū)區(qū)間,并將所述日志記錄寫入所述可寫備日志分區(qū)區(qū)間對應的備日志隊列;
[0164]由于可寫主日志分區(qū)區(qū)間與可寫備日志分區(qū)區(qū)間對應相同的可寫日志分區(qū)區(qū)間,因此,備節(jié)點根據(jù)可寫主日志分區(qū)區(qū)間確定備節(jié)點對應的可寫備日志分區(qū)區(qū)間,并將日志記錄寫入可寫備日志分區(qū)區(qū)間對應的備日志隊列。
[0165]在日志記錄寫入過程中,日志記錄先寫入主節(jié)點對應的日志隊列,后寫入備節(jié)點對應的日志隊列,因此,備日志分區(qū)區(qū)間對應的日志隊列存儲格式,可以不包含寫標識位,具體如圖8所示。圖8為備日志分區(qū)對應的備日志隊列的存儲格式。
[0166]步驟703、所述備節(jié)點向所述主節(jié)點發(fā)送日志同步響應消息,以使所述主節(jié)點將所述主日志隊列中的所述日志記錄寫入主節(jié)點對應的提交日志緩沖隊列和內(nèi)存。
[0167]當備節(jié)點將日志記錄寫入備日志隊列之后,向主節(jié)點發(fā)送日志同步響應消息,以使主節(jié)點將主日志隊列中的日志記錄寫入主節(jié)點對應的提交日志緩沖隊列和內(nèi)存。
[0168]本發(fā)明實施例提供的分區(qū)日志隊列同步管理方法,備節(jié)點通過接收主節(jié)點發(fā)送的日志記錄同步請求消息,所述備節(jié)點根據(jù)所述可寫主日志分區(qū)區(qū)間確定所述備節(jié)點對應的可寫備日志分區(qū)區(qū)間,并將所述日志記錄寫入所述可寫備日志分區(qū)區(qū)間對應的備日志隊列;所述備節(jié)點向所述主節(jié)點發(fā)送日志同步響應消息,主備節(jié)點之間寫入相同的日志分區(qū)區(qū)間,避免了主節(jié)點和備節(jié)點數(shù)據(jù)的不一致。
[0169]在圖7實施例的基礎(chǔ)上,當管理節(jié)點通過心跳檢查發(fā)現(xiàn)備節(jié)點的路由表不是最新的,會將最新的路由表推送到該備節(jié)點上。所述備節(jié)點接收管理節(jié)點發(fā)送的路由表更新請求信息,所述路由表更新請求消息包括路由表;所述備節(jié)點根據(jù)所述路由表中的路由條目,對備日志分區(qū)區(qū)間及所述備日志分區(qū)區(qū)間對應的備日志隊列進行管理。備節(jié)點根據(jù)所述路由表中的路由條目確定所述備節(jié)點對應的備日志分區(qū)區(qū)間如圖9所示。
[0170]圖9為本發(fā)明實施例日志隊列更新流程實施例二的示意圖,包括以下步驟:
[0171]步驟901、備節(jié)點獲取路由表中的路由條目;
[0172]備節(jié)點通過遍歷的方式獲取路由條目。
[0173]步驟902、所述備節(jié)點確定路由條目中的路由日志分區(qū)區(qū)間是否歸屬所述備節(jié)點,若是,執(zhí)行步驟903,若否,執(zhí)行步驟901 ;
[0174]本領(lǐng)域技術(shù)人員可以理解,路由條目中包括節(jié)點標識和對應的路由日志分區(qū)區(qū)間,備節(jié)點根據(jù)節(jié)點標識確定該路由日志分區(qū)區(qū)間是否歸屬于備節(jié)點,若是,執(zhí)行步驟903,若否,執(zhí)行步驟901。
[0175]步驟903、所述備節(jié)點確定所述路由條目是否與本地路由條目不同,若是,執(zhí)行步驟904,若否,執(zhí)行步驟901 ;
[0176]備節(jié)點上存儲的路由條目與管理節(jié)點推送的路由條目不同。
[0177]步驟904、所述備節(jié)點確定所述路由日志分區(qū)區(qū)間與本地備日志分區(qū)區(qū)間是否不同,若是,執(zhí)行步驟905,若否,執(zhí)行步驟901 ;
[0178]步驟905、所述備節(jié)點增加所述路由日志分區(qū)區(qū)間,并將所述路由日志分區(qū)區(qū)間作為可寫備日志分區(qū)區(qū)間,并為所述可寫備日志分區(qū)區(qū)間創(chuàng)建對應的備日志隊列。
[0179]本實施例通過根據(jù)更新的路由條目,增加了新的備日志分區(qū)區(qū)間,保證了備日志分區(qū)區(qū)間的正確性。
[0180]圖10為本發(fā)明實施例主節(jié)點與備節(jié)點同步流程實施例一的示意圖。本實施例在上述實施例的基礎(chǔ)上,對主節(jié)點和備節(jié)點的同步流程進行詳細說明。本實施例的同步過程為異步同步過程,圖10所示為同步第一階段流程示意圖,如圖10所示,包括以下步驟:
[0181]步驟1001、主節(jié)點接收客戶端發(fā)送的日志記錄寫入請求消息;
[0182]步驟1002、主節(jié)點確定所述主日志分區(qū)區(qū)間為可寫主日志分區(qū)區(qū)間,并將所述客戶端觸發(fā)的日志記錄寫入所述可寫主日志分區(qū)區(qū)間對應的主日志隊列;
[0183]步驟1003、主節(jié)點向備節(jié)點發(fā)送日志記錄同步請求消息;
[0184]步驟1004、備節(jié)點接收主節(jié)點發(fā)送的日志記錄同步請求消息;
[0185]步驟1005、備節(jié)點將日志記錄寫入備日志分區(qū)區(qū)間對應的備日志隊列;
[0186]步驟1006、備節(jié)點向主節(jié)點發(fā)送日志同步響應消息;
[0187]步驟1007、主節(jié)點確定是否接收備節(jié)點發(fā)送的日志記錄同步響應消息;若否,執(zhí)行步驟1008,若是,執(zhí)行步驟1009。
[0188]本領(lǐng)域技術(shù)人員可以理解,如果在預設(shè)時間內(nèi),主節(jié)點沒有接收到備節(jié)點發(fā)送的日志記錄同步請求消息,主節(jié)點會把這條日志記錄和沒成功的那個備節(jié)點的信息發(fā)送到別的節(jié)點上進行備份,以供數(shù)據(jù)恢復時使用。
[0189]步驟1008、主節(jié)點向其它備節(jié)點發(fā)送日志記錄同步請求消息;
[0190]步驟1009、主節(jié)點將主日志隊列中的日志記錄寫入主節(jié)點對應的提交日志緩沖隊列和內(nèi)存。
[0191]在第一同步階段中,主節(jié)點將主日志隊列中的日志記錄寫入提交日志緩沖隊列和內(nèi)存中,備節(jié)點將日志記錄寫入備日志隊列中,備節(jié)點還未將備日志隊列中的日志記錄寫入備節(jié)點對應的提交日志緩沖隊列和內(nèi)存中。在同步第二階段流程中,備節(jié)點將被日志隊列寫入提交日志緩沖隊列和內(nèi)存中。具體如圖11所示,圖11為本發(fā)明實施例主節(jié)點與備節(jié)點同步流程實施例二的示意圖,主要包括以下步驟:
[0192]步驟1101、主節(jié)點向備節(jié)點發(fā)送寫入請求消息;
[0193]主節(jié)點定時向備節(jié)點發(fā)送寫入請求消息。
[0194]步驟1102、備節(jié)點接收主節(jié)點發(fā)送的寫入請求消息;
[0195]步驟1103、備節(jié)點判斷日志記錄是否有缺失,若否,執(zhí)行步驟1108,若是,執(zhí)行步驟 1104 ;
[0196]具體實現(xiàn)過程中,備節(jié)點根據(jù)日志記錄的日志序列號,判斷日志記錄是否有缺失,當日志序列號不連續(xù)時,備節(jié)點確定日志記錄有缺失,執(zhí)行步驟1104。當日志序列號連續(xù)時,備節(jié)點確定日志記錄沒有缺失,執(zhí)行步驟1108。本領(lǐng)域技術(shù)人員可以理解,當備節(jié)點確定日志記錄不缺失時,主節(jié)點所執(zhí)行的步驟到此結(jié)束。
[0197]步驟1104、備節(jié)點向主節(jié)點發(fā)送日志記錄缺失消息;
[0198]本領(lǐng)域技術(shù)人員可以理解,日志記錄缺失消息中可以攜帶缺失的日志序列號。
[0199]步驟1105、主節(jié)點接收備節(jié)點發(fā)送的日志記錄缺失消息;
[0200]步驟1106、主節(jié)點向備節(jié)點發(fā)送日志記錄缺失響應消息;
[0201]當備節(jié)點確定日志記錄缺失時,主節(jié)點還會接收備節(jié)點發(fā)送的日志記錄缺失消息,并向備節(jié)點發(fā)送日志記錄缺失響應消息,該日志記錄缺失響應消息中可以攜帶備節(jié)點缺失的日志記錄。
[0202]步驟1107、備節(jié)點接收主節(jié)點發(fā)送的日志記錄缺失響應消息,并將缺失日志記錄寫入備日志隊列中;
[0203]步驟1108、備節(jié)點將備日志隊列中的日志記錄寫入提交日志緩沖隊列和內(nèi)存。
[0204]當備節(jié)點接收到日志記錄缺失響應消息之后,將缺失的日志記錄和備日志隊列中的日志記錄寫入提交日志緩存隊列和內(nèi)存。
[0205]本實施例提供的方法,通過同步第一階段流程和同步第二階段流程,完成了主節(jié)點和備節(jié)點的數(shù)據(jù)同步過程。特別地,圖12為本發(fā)明實施例日志分區(qū)區(qū)間與日志隊列的對應關(guān)系示意圖。如圖12所示,Rl?R3是日志分區(qū)區(qū)間的值,LI?L5...'LI,?L5,...和LI’’?L5’’分別為對應日志隊列中的日志記錄。L1、L1’及LI’’分別為日志隊列的頭,有新數(shù)據(jù)時,從相應日志隊列的尾部寫入。由于主日志分區(qū)區(qū)間與備日志分區(qū)區(qū)間對應相同的日志分區(qū)區(qū)間,因此,本實施例提供的日志分區(qū)區(qū)間與日志隊列的對應關(guān)系既適合主日志分區(qū)區(qū)間,也適合備日志分區(qū)區(qū)間。
[0206]本領(lǐng)域技術(shù)人員可以理解,當備節(jié)點將舊區(qū)間的日志記錄均寫入提交日志緩沖隊列和內(nèi)存之后,需要刪除舊的主日志分區(qū)區(qū)間和備日志分區(qū)區(qū)間。
[0207]圖13為本發(fā)明實施例主節(jié)點刪除日志分區(qū)區(qū)間的流程示意圖。如圖13所示,對于主節(jié)點,主節(jié)點刪除舊的主日志分區(qū)區(qū)間。具體過程如下:
[0208]步驟1301、主節(jié)點確定所述主日志分區(qū)區(qū)間對應的主日志隊列中的日志記錄是否為空,若否,執(zhí)行步驟1302,若是,執(zhí)行步驟1303 ;
[0209]步驟1302、主節(jié)點刪除滿足預設(shè)條件的日志記錄;
[0210]步驟1303、主節(jié)點確定所述主日志分區(qū)區(qū)間是否存在與路由表的路由條目中,若否,執(zhí)行步驟1304,若是,執(zhí)行步驟1305 ;
[0211]步驟1304、主節(jié)點刪除所述主日志分區(qū)區(qū)間;
[0212]步驟1305、主節(jié)點等待下一刪除周期。
[0213]在具體實現(xiàn)過程中,當日志記錄不為空時,不能刪除所有的日志記錄,僅刪除滿足預設(shè)條件的日志記錄,其中,滿足預設(shè)條件的日志記錄具體為比上次寫入提交日志緩沖隊列和內(nèi)存的日志序列號小的日志記錄。當日志記錄為空時,主節(jié)點確定日志分區(qū)區(qū)間是否存在與路由表的路由條目中,若不存在,刪除該主日志分區(qū)區(qū)間,若存在,等待下次刪除過程。
[0214]圖14為本發(fā)明實施例備節(jié)點刪除日志分區(qū)區(qū)間的流程示意圖。如圖14所示,對于備節(jié)點,備節(jié)點刪除舊的備日志分區(qū)區(qū)間。具體過程如下:
[0215]步驟1401、備節(jié)點確定所述備日志分區(qū)區(qū)間對應的備日志隊列中的日志記錄是否為空,若否,執(zhí)行步驟1402,若是,執(zhí)行步驟1403 ;
[0216]步驟1402、備節(jié)點刪除滿足預設(shè)條件的日志記錄;
[0217]步驟1403、備節(jié)點確定所述備日志分區(qū)區(qū)間是否存在與所述路由表的路由條目中,若否,執(zhí)行步驟1404,若是,執(zhí)行步驟1405 ;
[0218]步驟1404、備節(jié)點刪除所述備日志分區(qū)區(qū)間;
[0219]步驟1405、備節(jié)點等待下一刪除周期。
[0220]在具體實現(xiàn)過程中,當日志記錄不為空時,不能刪除所有的日志記錄,僅刪除滿足預設(shè)條件的日志記錄,其中,滿足預設(shè)條件的日志記錄具體為比上次寫入提交日志緩沖隊列和內(nèi)存的日志序列號小的日志記錄。當日志記錄為空時,備節(jié)點確定日志分區(qū)區(qū)間是否存在與路由表的路由條目中,若不存在,刪除該備日志分區(qū)區(qū)間,若存在,等待下次刪除過程。
[0221]本實施提供的分區(qū)日志隊列管理方法,當備節(jié)點將舊區(qū)間的日志記錄均寫入提交日志緩沖隊列和內(nèi)存之后,刪除舊的主日志分區(qū)區(qū)間和備日志分區(qū)區(qū)間,保證了日志記錄的完整性,并提高了系統(tǒng)資源利用率。
[0222]圖15為本發(fā)明主節(jié)點實施例一的結(jié)構(gòu)示意圖。如圖15所示,主節(jié)點150包括第一接收模塊1501、第一寫入模塊1502和第一發(fā)送模塊1503。
[0223]其中,第一接收模塊1501,用于接收客戶端發(fā)送的日志記錄寫入請求消息,所述日志記錄寫入請求消息包括所述客戶端觸發(fā)的日志記錄;
[0224]第一寫入模塊1502,用于根據(jù)主日志分區(qū)區(qū)間的寫入標志位,確定所述主日志分區(qū)區(qū)間為可寫主日志分區(qū)區(qū)間,并將所述客戶端觸發(fā)的日志記錄寫入所述可寫主日志分區(qū)區(qū)間對應的主日志隊列;
[0225]第一發(fā)送模塊1503,用于向備節(jié)點發(fā)送日志記錄同步請求消息,所述日志記錄同步請求消息中包括所述客戶端觸發(fā)的日志記錄以及所述可寫主日志分區(qū)區(qū)間,以使所述備節(jié)點根據(jù)所述可寫主日志分區(qū)區(qū)間確定所述備節(jié)點對應的可寫備日志分區(qū)區(qū)間,并將所述日志記錄寫入所述可寫備日志分區(qū)區(qū)間對應的備日志隊列;
[0226]其中,所述可寫主日志分區(qū)區(qū)間與所述可寫備日志分區(qū)區(qū)間對應相同的可寫日志分區(qū)區(qū)間。
[0227]本發(fā)明實施例提供的主節(jié)點,可以用于執(zhí)行上述方法實施例的技術(shù)方案,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
[0228]圖16為本發(fā)明主節(jié)點實施例二的結(jié)構(gòu)示意圖。如圖16所示,本發(fā)明實施例在圖15實施例的基礎(chǔ)上,還包括:
[0229]第二接收模塊1504,用于接收管理節(jié)點發(fā)送的路由表更新請求信息,所述路由表更新請求消息包括路由表;
[0230]標志位確定模塊1505,用于根據(jù)所述路由表中的路由條目確定所述主節(jié)點對應的主日志分區(qū)區(qū)間的寫入標志位。
[0231]可選地,所述標志位確定模塊1505具體用于:
[0232]確定路由條目中的路由日志分區(qū)區(qū)間歸屬所述主節(jié)點;
[0233]確定所述路由日志分區(qū)區(qū)間與本地可寫日志分區(qū)區(qū)間是否存在交集;
[0234]若是,則將所述本地可寫日志分區(qū)區(qū)間置為不可寫,將所述路由日志分區(qū)區(qū)間的寫入標志位置為可寫,將所述路由日志分區(qū)區(qū)間作為所述可寫主日志分區(qū)區(qū)間并為所述可寫主日志分區(qū)區(qū)間維護對應的主日志隊列;
[0235]若否,則將所述路由日志分區(qū)區(qū)間的寫入標志位置為可寫,將所述路由日志分區(qū)區(qū)間作為所述可寫主日志分區(qū)區(qū)間并為所述可寫主日志分區(qū)區(qū)間維護對應的主日志隊列。
[0236]可選地,還包括:區(qū)間確定模塊1506,用于在根據(jù)主日志分區(qū)區(qū)間的寫入標志位判斷所述主日志分區(qū)區(qū)間可寫之前,
[0237]接收管理節(jié)點發(fā)送的日志分區(qū)區(qū)間變化信息,所述日志分區(qū)區(qū)間變化信息包括主日志分區(qū)區(qū)間的切分與合并信息,所述主日志分區(qū)區(qū)間的切分與合并將引起路由表中的路由條目發(fā)生變化;
[0238]根據(jù)所述日志分區(qū)區(qū)間變化信息確定所述主日志分區(qū)區(qū)間;
[0239]其中,所述主日志分區(qū)區(qū)間為切分或合并后新的主日志分區(qū)區(qū)間時,所述主日志分區(qū)區(qū)間的寫入標志位為可寫,所述主日志分區(qū)區(qū)間為切分或合并前原始主日志分區(qū)區(qū)間時,所述主日志分區(qū)區(qū)間的寫入標志位為不可寫。
[0240]可選地,還包括:第二寫入模塊1507,用于向備節(jié)點發(fā)送日志記錄同步請求消息之后,
[0241]接收所述備節(jié)點發(fā)送的日志記錄同步響應消息,確定所述備節(jié)點將所述日志記錄寫入備日志隊列;
[0242]將所述主日志隊列中的所述日志記錄寫入提交日志緩沖隊列和內(nèi)存。
[0243]可選地,還包括:第二發(fā)送模塊1508,用于將所述主日志隊列中的所述日志記錄寫入提交日志緩沖隊列和內(nèi)存之后,向所述備節(jié)點發(fā)送寫入請求消息,以使所述備節(jié)點將備日志緩沖隊列中的日志記錄寫入所述備節(jié)點對應的提交日志緩沖隊列和內(nèi)存。
[0244]可選地,還包括:處理模塊1509,用于向所述備節(jié)點發(fā)送寫入請求消息之后,
[0245]接收所述備節(jié)點發(fā)送的日志記錄缺失消息;
[0246]向所述備節(jié)點發(fā)送日志記錄缺失響應消息。
[0247]可選地,還包括:刪除模塊1510,用于確定所述主日志分區(qū)區(qū)間對應的主日志隊列中的日志記錄是否為空;
[0248]若否,則主節(jié)點刪除滿足預設(shè)條件的日志記錄;
[0249]若是,則主節(jié)點確定所述主日志分區(qū)區(qū)間是否存在與路由表的路由條目中,若不存在,則刪除所述主日志分區(qū)區(qū)間。
[0250]本發(fā)明實施例提供的主節(jié)點,可以用于執(zhí)行上述方法實施例的技術(shù)方案,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
[0251]圖17為本發(fā)明備節(jié)點實施例一的結(jié)構(gòu)示意圖。如圖17所示,本發(fā)明實施例提供的備節(jié)點170包括:第一接收模塊1701、第一寫入模塊1702和第一發(fā)送模塊1703。
[0252]其中,第一接收模塊1701,用于接收主節(jié)點發(fā)送的日志記錄同步請求消息,所述日志記錄同步請求消息中包括所述客戶端觸發(fā)的日志記錄以及可寫主日志分區(qū)區(qū)間,所述可寫日志分區(qū)區(qū)間為所述主節(jié)點根據(jù)寫入標志位確定的;
[0253]第一寫入模塊1702,用于根據(jù)所述可寫主日志分區(qū)區(qū)間確定所述備節(jié)點對應的可寫備日志分區(qū)區(qū)間,并將所述日志記錄寫入所述可寫備日志分區(qū)區(qū)間對應的備日志隊列;
[0254]第一發(fā)送模塊1703,用于向所述主節(jié)點發(fā)送日志同步響應消息,以使所述主節(jié)點將所述主日志隊列中的所述日志記錄寫入主節(jié)點對應的提交日志緩沖隊列和內(nèi)存;
[0255]其中,所述可寫主日志分區(qū)區(qū)間與所述可寫備日志分區(qū)區(qū)間對應相同的可寫日志分區(qū)區(qū)間。
[0256]本發(fā)明實施例提供的備節(jié)點,可以用于執(zhí)行上述方法實施例的技術(shù)方案,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
[0257]圖18為本發(fā)明備節(jié)點實施例二的結(jié)構(gòu)示意圖。如圖18所示,本發(fā)明實施例在圖17實施例的基礎(chǔ)上,還包括:
[0258]第二接收模塊1704,用于接收管理節(jié)點發(fā)送的路由表更新請求信息,所述路由表更新請求消息包括路由表;
[0259]管理模塊1705,用于根據(jù)所述路由表中的路由條目,對備日志分區(qū)區(qū)間及所述備日志分區(qū)區(qū)間對應的備日志隊列進行管理。
[0260]可選地,所述管理模塊1705具體用于:
[0261]確定路由條目中的路由日志分區(qū)區(qū)間歸屬所述備節(jié)點;
[0262]確定所述路由條目與本地路由條目不同;
[0263]確定所述路由日志分區(qū)區(qū)間與本地備日志分區(qū)區(qū)間不同;
[0264]增加所述路由日志分區(qū)區(qū)間,并將所述路由日志分區(qū)區(qū)間作為可寫備日志分區(qū)區(qū)間,并為所述可寫備日志分區(qū)區(qū)間創(chuàng)建對應的備日志隊列。
[0265]可選地,還包括:第二寫入模塊1706,用于向所述主節(jié)點發(fā)送日志同步響應消息之后,
[0266]接收所述主節(jié)點發(fā)送的寫入請求消息;
[0267]將所述備日志隊列中的日志記錄寫入備節(jié)點對應的提交日志緩沖隊列和內(nèi)存。
[0268]可選地,還包括:處理模塊1707,用于將所述備日志隊列中的日志記錄寫入提交日志緩沖隊列和內(nèi)存之前,
[0269]向所述主節(jié)點發(fā)送日志記錄缺失消息;
[0270]接收所述主節(jié)點發(fā)送的日志記錄缺失響應消息。
[0271]可選地,還包括:刪除模塊1708,用于確定所述備日志分區(qū)區(qū)間對應的備日志隊列中的日志記錄是否為空;
[0272]若否,則備節(jié)點刪除滿足預設(shè)條件的日志記錄;
[0273]若是,則備節(jié)點確定所述備日志分區(qū)區(qū)間是否存在與路由表的路由條目中,若不存在,則刪除所述備日志分區(qū)區(qū)間。
[0274]本發(fā)明實施例提供的備節(jié)點,可以用于執(zhí)行上述方法實施例的技術(shù)方案,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
[0275]本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0276]最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種分區(qū)日志隊列同步管理方法,其特征在于,包括: 主節(jié)點接收客戶端發(fā)送的日志記錄寫入請求消息,所述日志記錄寫入請求消息包括所述客戶端觸發(fā)的日志記錄; 所述主節(jié)點根據(jù)主日志分區(qū)區(qū)間的寫入標志位,確定所述主日志分區(qū)區(qū)間為可寫主日志分區(qū)區(qū)間,并將所述客戶端觸發(fā)的日志記錄寫入所述可寫主日志分區(qū)區(qū)間對應的主日志隊列; 所述主節(jié)點向備節(jié)點發(fā)送日志記錄同步請求消息,所述日志記錄同步請求消息中包括所述客戶端觸發(fā)的日志記錄以及所述可寫主日志分區(qū)區(qū)間,以使所述備節(jié)點根據(jù)所述可寫主日志分區(qū)區(qū)間確定所述備節(jié)點對應的可寫備日志分區(qū)區(qū)間,并將所述日志記錄寫入所述可寫備日志分區(qū)區(qū)間對應的備日志隊列; 其中,所述可寫主日志分區(qū)區(qū)間與所述可寫備日志分區(qū)區(qū)間對應相同的可寫日志分區(qū)區(qū)間。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 所述主節(jié)點接收管理節(jié)點發(fā)送的路由表更新請求信息,所述路由表更新請求消息包括路由表; 所述主節(jié)點根據(jù)所述路由表中的路由條目確定所述主節(jié)點對應的主日志分區(qū)區(qū)間的與入標志位。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述主節(jié)點根據(jù)所述路由表中的路由條目確定所述主節(jié)點對應的主日志分區(qū)區(qū)間的寫入標志位,包括: 所述主節(jié)點確定路由條目中的路由日志分區(qū)區(qū)間歸屬所述主節(jié)點; 所述主節(jié)點確定所述路由日志分區(qū)區(qū)間與本地可寫日志分區(qū)區(qū)間是否存在交集; 若是,則所述主節(jié)點將所述本地可寫日志分區(qū)區(qū)間置為不可寫,將所述路由日志分區(qū)區(qū)間的寫入標志位置為可寫,將所述路由日志分區(qū)區(qū)間作為所述可寫主日志分區(qū)區(qū)間并為所述可寫主日志分區(qū)區(qū)間維護對應的主日志隊列; 若否,則將所述路由日志分區(qū)區(qū)間的寫入標志位置為可寫,將所述路由日志分區(qū)區(qū)間作為所述可寫主日志分區(qū)區(qū)間并為所述可寫主日志分區(qū)區(qū)間維護對應的主日志隊列。
4.根據(jù)權(quán)利要求1至3任一項所述的方法,其特征在于,所述主節(jié)點根據(jù)主日志分區(qū)區(qū)間的寫入標志位判斷所述主日志分區(qū)區(qū)間可寫之前,還包括: 所述主節(jié)點接收管理節(jié)點發(fā)送的日志分區(qū)區(qū)間變化信息,所述日志分區(qū)區(qū)間變化信息包括主日志分區(qū)區(qū)間的切分與合并信息,所述主日志分區(qū)區(qū)間的切分與合并將引起路由表中的路由條目發(fā)生變化; 所述主節(jié)點根據(jù)所述日志分區(qū)區(qū)間變化信息確定所述主日志分區(qū)區(qū)間; 其中,所述主日志分區(qū)區(qū)間為切分或合并后新的主日志分區(qū)區(qū)間時,所述主日志分區(qū)區(qū)間的寫入標志位為可寫,所述主日志分區(qū)區(qū)間為切分或合并前原始主日志分區(qū)區(qū)間時,所述主日志分區(qū)區(qū)間的寫入標志位為不可寫。
5.根據(jù)權(quán)利要求1至4任一項所述的方法,其特征在于,所述主節(jié)點向備節(jié)點發(fā)送日志記錄同步請求消息之后,還包括: 所述主節(jié)點接收所述備節(jié)點發(fā)送的日志記錄同步響應消息,確定所述備節(jié)點將所述日志記錄寫入備日志隊列; 所述主節(jié)點將所述主日志隊列中的所述日志記錄寫入提交日志緩沖隊列和內(nèi)存。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述主節(jié)點將所述主日志隊列中的所述日志記錄寫入提交日志緩沖隊列和內(nèi)存之后,還包括: 所述主節(jié)點向所述備節(jié)點發(fā)送寫入請求消息,以使所述備節(jié)點將備日志緩沖隊列中的日志記錄寫入所述備節(jié)點對應的提交日志緩沖隊列和內(nèi)存。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述主節(jié)點向所述備節(jié)點發(fā)送寫入請求消息之后,還包括: 所述主節(jié)點接收所述備節(jié)點發(fā)送的日志記錄缺失消息; 所述主節(jié)點向所述備節(jié)點發(fā)送日志記錄缺失響應消息。
8.根據(jù)權(quán)利要求1至7任一項所述的方法,其特征在于,所述方法還包括: 所述主節(jié)點確定所述主日志分區(qū)區(qū)間對應的主日志隊列中的日志記錄是否為空; 若否,則主節(jié)點刪除滿足預設(shè)條件的日志記錄; 若是,則主節(jié)點確定所述主日志分區(qū)區(qū)間是否存在與路由表的路由條目中,若不存在,則刪除所述主日志分區(qū)區(qū)間。
9.一種分區(qū)日志隊列同步管理方法,其特征在于,包括: 備節(jié)點接收主節(jié)點發(fā)送的日志記錄同步請求消息,所述日志記錄同步請求消息中包括所述客戶端觸發(fā)的日志記錄以及可寫主日志分區(qū)區(qū)間,所述可寫日志分區(qū)區(qū)間為所述主節(jié)點根據(jù)寫入標志位確定的; 所述備節(jié)點根據(jù)所述可寫主日志分區(qū)區(qū)間確定所述備節(jié)點對應的可寫備日志分區(qū)區(qū)間,并將所述日志記錄寫入所述可寫備日志分區(qū)區(qū)間對應的備日志隊列; 所述備節(jié)點向所述主節(jié)點發(fā)送日志同步響應消息,以使所述主節(jié)點將所述主日志隊列中的所述日志記錄寫入主節(jié)點對應的提交日志緩沖隊列和內(nèi)存; 其中,所述可寫主日志分區(qū)區(qū)間與所述可寫備日志分區(qū)區(qū)間對應相同的可寫日志分區(qū)區(qū)間。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述方法還包括: 所述備節(jié)點接收管理節(jié)點發(fā)送的路由表更新請求信息,所述路由表更新請求消息包括路由表; 所述備節(jié)點根據(jù)所述路由表中的路由條目,對備日志分區(qū)區(qū)間及所述備日志分區(qū)區(qū)間對應的備日志隊列進行管理。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,所述備節(jié)點根據(jù)所述路由表中的路由條目,對備日志分區(qū)區(qū)間及所述備日志分區(qū)區(qū)間對應的備日志隊列進行管理,包括: 所述備節(jié)點確定路由條目中的路由日志分區(qū)區(qū)間歸屬所述備節(jié)點; 所述備節(jié)點確定所述路由條目與本地路由條目不同; 所述備節(jié)點確定所述路由日志分區(qū)區(qū)間與本地備日志分區(qū)區(qū)間不同; 所述備節(jié)點增加所述路由日志分區(qū)區(qū)間,并將所述路由日志分區(qū)區(qū)間作為可寫備日志分區(qū)區(qū)間,并為所述可寫備日志分區(qū)區(qū)間創(chuàng)建對應的備日志隊列。
12.根據(jù)權(quán)利要求9至11任一項所述的方法,其特征在于,所述備節(jié)點向所述主節(jié)點發(fā)送日志同步響應消息之后,還包括: 所述備節(jié)點接收所述主節(jié)點發(fā)送的寫入請求消息; 所述備節(jié)點將所述備日志隊列中的日志記錄寫入備節(jié)點對應的提交日志緩沖隊列和內(nèi)存。
13.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述備節(jié)點將所述備日志隊列中的日志記錄寫入提交日志緩沖隊列和內(nèi)存之前,還包括: 所述備節(jié)點向所述主節(jié)點發(fā)送日志記錄缺失消息; 所述備節(jié)點接收所述主節(jié)點發(fā)送的日志記錄缺失響應消息。
14.根據(jù)權(quán)利要求9至13任一項所述的方法,其特征在于,所述方法還包括: 所述備節(jié)點確定所述備日志分區(qū)區(qū)間對應的備日志隊列中的日志記錄是否為空; 若否,則備節(jié)點刪除滿足預設(shè)條件的日志記錄; 若是,則備節(jié)點確定所述備日志分區(qū)區(qū)間是否存在與路由表的路由條目中,若不存在,則刪除所述備日志分區(qū)區(qū)間。
15.一種主節(jié)點,其特征在于,包括: 第一接收模塊,用于接收客戶端發(fā)送的日志記錄寫入請求消息,所述日志記錄寫入請求消息包括所述客戶端觸發(fā)的日志記錄; 第一寫入模塊,用于根據(jù)主日志分區(qū)區(qū)間的寫入標志位,確定所述主日志分區(qū)區(qū)間為可寫主日志分區(qū)區(qū)間,并將所述客戶端觸發(fā)的日志記錄寫入所述可寫主日志分區(qū)區(qū)間對應的主日志隊列; 第一發(fā)送模塊,用于向備節(jié)點發(fā)送日志記錄同步請求消息,所述日志記錄同步請求消息中包括所述客戶端觸發(fā)的日志記錄以及所述可寫主日志分區(qū)區(qū)間,以使所述備節(jié)點根據(jù)所述可寫主日志分區(qū)區(qū)間確定所述備節(jié)點對應的可寫備日志分區(qū)區(qū)間,并將所述日志記錄寫入所述可寫備日志分區(qū)區(qū)間對應的備日志隊列; 其中,所述可寫主日志分區(qū)區(qū)間與所述可寫備日志分區(qū)區(qū)間對應相同的可寫日志分區(qū)區(qū)間。
16.根據(jù)權(quán)利要求15所述的主節(jié)點,其特征在于,還包括: 第二接收模塊,用于接收管理節(jié)點發(fā)送的路由表更新請求信息,所述路由表更新請求消息包括路由表; 標志位確定模塊,用于根據(jù)所述路由表中的路由條目確定所述主節(jié)點對應的主日志分區(qū)區(qū)間的寫入標志位。
17.根據(jù)權(quán)利要求16所述的主節(jié)點,其特征在于,所述標志位確定模塊具體用于: 確定路由條目中的路由日志分區(qū)區(qū)間歸屬所述主節(jié)點; 確定所述路由日志分區(qū)區(qū)間與本地可寫日志分區(qū)區(qū)間是否存在交集; 若是,則將所述本地可寫日志分區(qū)區(qū)間置為不可寫,將所述路由日志分區(qū)區(qū)間的寫入標志位置為可寫,將所述路由日志分區(qū)區(qū)間作為所述可寫主日志分區(qū)區(qū)間并為所述可寫主日志分區(qū)區(qū)間維護對應的主日志隊列; 若否,則將所述路由日志分區(qū)區(qū)間的寫入標志位置為可寫,將所述路由日志分區(qū)區(qū)間作為所述可寫主日志分區(qū)區(qū)間并為所述可寫主日志分區(qū)區(qū)間維護對應的主日志隊列。
18.根據(jù)權(quán)利要求15至17任一項所述的主節(jié)點,其特征在于,還包括:區(qū)間確定模塊,用于在根據(jù)主日志分區(qū)區(qū)間的寫入標志位判斷所述主日志分區(qū)區(qū)間可寫之前, 接收管理節(jié)點發(fā)送的日志分區(qū)區(qū)間變化信息,所述日志分區(qū)區(qū)間變化信息包括主日志分區(qū)區(qū)間的切分與合并信息,所述主日志分區(qū)區(qū)間的切分與合并將引起路由表中的路由條目發(fā)生變化; 根據(jù)所述日志分區(qū)區(qū)間變化信息確定所述主日志分區(qū)區(qū)間; 其中,所述主日志分區(qū)區(qū)間為切分或合并后新的主日志分區(qū)區(qū)間時,所述主日志分區(qū)區(qū)間的寫入標志位為可寫,所述主日志分區(qū)區(qū)間為切分或合并前原始主日志分區(qū)區(qū)間時,所述主日志分區(qū)區(qū)間的寫入標志位為不可寫。
19.根據(jù)權(quán)利要求15至18任一項所述的主節(jié)點,其特征在于,還包括:第二寫入模塊,用于向備節(jié)點發(fā)送日志記錄同步請求消息之后, 接收所述備節(jié)點發(fā)送的日志記錄同步響應消息,確定所述備節(jié)點將所述日志記錄寫入備日志隊列; 將所述主日志隊列中的所述日志記錄寫入提交日志緩沖隊列和內(nèi)存。
20.根據(jù)權(quán)利要求19所述的主節(jié)點,其特征在于,還包括:第二發(fā)送模塊,用于將所述主日志隊列中的所述日志記錄寫入提交日志緩沖隊列和內(nèi)存之后,向所述備節(jié)點發(fā)送寫入請求消息,以使所述備節(jié)點將備日志緩沖隊列中的日志記錄寫入所述備節(jié)點對應的提交日志緩沖隊列和內(nèi)存。
21.根據(jù)權(quán)利要求20所述的主節(jié)點,其特征在于,還包括:處理模塊,用于向所述備節(jié)點發(fā)送寫入請求消息之后, 接收所述備節(jié)點發(fā)送的日志記錄缺失消息; 向所述備節(jié)點發(fā)送日志記錄缺失響應消息。
22.根據(jù)權(quán)利要求15至21任一項所述的主節(jié)點,其特征在于,還包括: 刪除模塊,用于確定所述主日志分區(qū)區(qū)間對應的主日志隊列中的日志記錄是否為空; 若否,則主節(jié)點刪除滿足預設(shè)條件的日志記錄; 若是,則主節(jié)點確定所述主日志分區(qū)區(qū)間是否存在與路由表的路由條目中,若不存在,則刪除所述主日志分區(qū)區(qū)間。
23.—種備節(jié)點,其特征在于,包括: 第一接收模塊,用于接收主節(jié)點發(fā)送的日志記錄同步請求消息,所述日志記錄同步請求消息中包括所述客戶端觸發(fā)的日志記錄以及可寫主日志分區(qū)區(qū)間,所述可寫日志分區(qū)區(qū)間為所述主節(jié)點根據(jù)寫入標志位確定的; 第一寫入模塊,用于根據(jù)所述可寫主日志分區(qū)區(qū)間確定所述備節(jié)點對應的可寫備日志分區(qū)區(qū)間,并將所述日志記錄寫入所述可寫備日志分區(qū)區(qū)間對應的備日志隊列; 第一發(fā)送模塊,用于向所述主節(jié)點發(fā)送日志同步響應消息,以使所述主節(jié)點將所述主日志隊列中的所述日志記錄寫入主節(jié)點對應的提交日志緩沖隊列和內(nèi)存; 其中,所述可寫主日志分區(qū)區(qū)間與所述可寫備日志分區(qū)區(qū)間對應相同的可寫日志分區(qū)區(qū)間。
24.根據(jù)權(quán)利要求23所述的備節(jié)點,其特征在于,還包括: 第二接收模塊,用于接收管理節(jié)點發(fā)送的路由表更新請求信息,所述路由表更新請求消息包括路由表; 管理模塊,用于根據(jù)所述路由表中的路由條目,對備日志分區(qū)區(qū)間及所述備日志分區(qū)區(qū)間對應的備日志隊列進行管理。
25.根據(jù)權(quán)利要求24所述的備節(jié)點,其特征在于,所述管理模塊具體用于: 確定路由條目中的路由日志分區(qū)區(qū)間歸屬所述備節(jié)點; 確定所述路由條目與本地路由條目不同; 確定所述路由日志分區(qū)區(qū)間與本地備日志分區(qū)區(qū)間不同; 增加所述路由日志分區(qū)區(qū)間,并將所述路由日志分區(qū)區(qū)間作為可寫備日志分區(qū)區(qū)間,并為所述可寫備日志分區(qū)區(qū)間創(chuàng)建對應的備日志隊列。
26.根據(jù)權(quán)利要求23至25任一項所述的備節(jié)點,其特征在于,還包括: 第二寫入模塊,用于向所述主節(jié)點發(fā)送日志同步響應消息之后, 接收所述主節(jié)點發(fā)送的寫入請求消息; 將所述備日志隊列中的日志記錄寫入備節(jié)點對應的提交日志緩沖隊列和內(nèi)存。
27.根據(jù)權(quán)利要求26所述的備節(jié)點,其特征在于,還包括: 處理模塊,用于將所述備日志隊列中的日志記錄寫入提交日志緩沖隊列和內(nèi)存之前, 向所述主節(jié)點發(fā)送日志記錄缺失消息; 接收所述主節(jié)點發(fā)送的日志記錄缺失響應消息。
28.根據(jù)權(quán)利要求23至27任一項所述的備節(jié)點,其特征在于,還包括:刪除模塊,用于確定所述備日志分區(qū)區(qū)間對應的備日志隊列中的日志記錄是否為空; 若否,則備節(jié)點刪除滿足預設(shè)條件的日志記錄; 若是,則備節(jié)點確定所述備日志分區(qū)區(qū)間是否存在與路由表的路由條目中,若不存在,則刪除所述備日志分區(qū)區(qū)間。
【文檔編號】G06F17/30GK104346373SQ201310329460
【公開日】2015年2月11日 申請日期:2013年7月31日 優(yōu)先權(quán)日:2013年7月31日
【發(fā)明者】王鐵英, 劉哲 申請人:華為技術(shù)有限公司