組合。
[0028]本發(fā)明實(shí)施例提供了一種分布式存儲(chǔ)系統(tǒng)中的數(shù)據(jù)同步方法,圖1是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)同步方法的流程圖,如圖1所示,該方法包括以下步驟(S101至S106):
[0029]S101,第一客戶端向第一存儲(chǔ)服務(wù)集群發(fā)送第一數(shù)據(jù)變更請求;
[0030]S102,第一存儲(chǔ)服務(wù)集群接收第一數(shù)據(jù)變更請求并變更所述請求對應(yīng)的數(shù)據(jù);
[0031]S103,第一存儲(chǔ)服務(wù)集群將變更數(shù)據(jù)對應(yīng)的第一同步數(shù)據(jù)同步至第二存儲(chǔ)服務(wù)集群;
[0032]S104,第二存儲(chǔ)服務(wù)集群根據(jù)上述第一同步數(shù)據(jù)進(jìn)行數(shù)據(jù)同步;
[0033]S105,第二存儲(chǔ)服務(wù)集群按照SlOl — S103相同的步驟產(chǎn)生第二同步數(shù)據(jù),同步至所述第一存儲(chǔ)服務(wù)集群;
[0034]S106,第一存儲(chǔ)服務(wù)集群根據(jù)上述第二同步數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。
[0035]通過本發(fā)明實(shí)施例,第一存儲(chǔ)服務(wù)集群接收來自第一客戶端的第一數(shù)據(jù)變更請求;所述第一存儲(chǔ)服務(wù)集群根據(jù)所述第一數(shù)據(jù)變更請求,變更第一存儲(chǔ)服務(wù)集群中的對應(yīng)數(shù)據(jù);所述第一存儲(chǔ)服務(wù)集群將變更數(shù)據(jù)作為第一同步數(shù)據(jù)同步至第二存儲(chǔ)服務(wù)集群;所述第一存儲(chǔ)服務(wù)集群接收所述第二存儲(chǔ)服務(wù)集群發(fā)送的第二同步數(shù)據(jù);所述第一存儲(chǔ)服務(wù)集群根據(jù)所述第二同步數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。使得異地分布式存儲(chǔ)服務(wù)集群之間可以實(shí)現(xiàn)數(shù)據(jù)雙向同步,充分利用所有的計(jì)算資源,在有限的計(jì)算資源基礎(chǔ)上實(shí)現(xiàn)異地容災(zāi);其次,避免了業(yè)務(wù)應(yīng)用進(jìn)行數(shù)據(jù)的寫操作需要實(shí)時(shí)訪問異地分布式存儲(chǔ)服務(wù)集群的問題,克服了異地訪問網(wǎng)絡(luò)延遲較高、帶寬有限等問題。
[0036]在本發(fā)明的一個(gè)實(shí)施例中,所述第一存儲(chǔ)服務(wù)集群根據(jù)所述第一數(shù)據(jù)變更請求,變更第一存儲(chǔ)服務(wù)集群中的對應(yīng)數(shù)據(jù),還包括:同時(shí)生成與所述變更數(shù)據(jù)對應(yīng)的第一同步日志。所述第一存儲(chǔ)服務(wù)集群將變更數(shù)據(jù)對應(yīng)的第一同步數(shù)據(jù)同步至第二存儲(chǔ)服務(wù)集群,包括:讀取所述第一同步日志,根據(jù)所述第一同步日志讀取對應(yīng)的所述第一存儲(chǔ)服務(wù)集群存儲(chǔ)的數(shù)據(jù),并將所述讀取數(shù)據(jù)同步至所述第二存儲(chǔ)服務(wù)集群。具體的,圖2是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)同步方法的流程圖,如圖2所示,該方法包括以下步驟(S201 — S210):
[0037]S201,第一客戶端向第一存儲(chǔ)服務(wù)集群發(fā)送第一數(shù)據(jù)變更請求;
[0038]S202,第一存儲(chǔ)服務(wù)集群接收第一數(shù)據(jù)變更請求并變更所述請求對應(yīng)的數(shù)據(jù);
[0039]S203,第一存儲(chǔ)服務(wù)集群生成與上述變更數(shù)據(jù)對應(yīng)的第一同步日志;
[0040]S204,第一存儲(chǔ)服務(wù)集群將數(shù)據(jù)的變更結(jié)果返回上述第一客戶端;
[0041]S205,第一存儲(chǔ)服務(wù)集群讀取上述第一同步日志;
[0042]S206,第一存儲(chǔ)服務(wù)集群根據(jù)上述第一同步日志讀取對應(yīng)的第一存儲(chǔ)服務(wù)集群存儲(chǔ)的數(shù)據(jù);
[0043]S207,第一存儲(chǔ)服務(wù)集群將上述讀取的數(shù)據(jù)作為第一同步數(shù)據(jù)發(fā)送至第二存儲(chǔ)服務(wù)集群;
[0044]S208第二存儲(chǔ)服務(wù)集群根據(jù)上述第一同步數(shù)據(jù)進(jìn)行數(shù)據(jù)同步;
[0045]S209,第二存儲(chǔ)服務(wù)集群按照S201 — S206相同的步驟產(chǎn)生第二同步數(shù)據(jù),發(fā)送至所述第一存儲(chǔ)服務(wù)集群;
[0046]S210,第一存儲(chǔ)服務(wù)集群根據(jù)上述第二同步數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。
[0047]在本發(fā)明的一個(gè)實(shí)施例中,所述讀取第一同步日志,還包括:定時(shí)檢查是否有新的第一同步日志生成。具體的,第一存儲(chǔ)服務(wù)集群定時(shí)檢查是否有新的第一同步日志生成,并根據(jù)第一同步日志將對應(yīng)的數(shù)據(jù)同步至第二存儲(chǔ)服務(wù)集群包括以下步驟:
[0048]S301,設(shè)置一個(gè)定時(shí)檢查兀件,預(yù)先設(shè)定一個(gè)間隔時(shí)間段,比如I秒、5秒、10秒、15秒等;
[0049]S302,預(yù)先設(shè)定的間隔時(shí)間段經(jīng)過后,啟動(dòng)檢查是否有新的第一同步日志生成,若無,則不執(zhí)行讀取第一同步日志操作,若有則執(zhí)行讀取第一同步日志操作;
[0050]S303,讀取第一同步日志中記錄的數(shù)據(jù)信息;
[0051]S304,根據(jù)第一同步日志中記錄的數(shù)據(jù)信息,讀取對應(yīng)的第一存儲(chǔ)服務(wù)集群存儲(chǔ)的數(shù)據(jù)。
[0052]S305,將所述讀取對應(yīng)第一存儲(chǔ)服務(wù)集群存儲(chǔ)的數(shù)據(jù)同步至第二存儲(chǔ)服務(wù)集群。
[0053]在本發(fā)明的一個(gè)實(shí)施方式中,所述第一同步日志中包含所述變更數(shù)據(jù)的元數(shù)據(jù),不需要包含完整的變更數(shù)據(jù)。本實(shí)施例的有益效果在于:(I)元數(shù)據(jù)的尺寸相對較小,只包含變更數(shù)據(jù)的摘要信息和屬性等,節(jié)省存儲(chǔ)空間;(2)分布式服務(wù)集群是由多臺(tái)存儲(chǔ)服務(wù)器組成,長時(shí)間運(yùn)行中存儲(chǔ)服務(wù)器可能會(huì)發(fā)生宕機(jī)、斷網(wǎng)等情況,這有可能會(huì)造成對同一個(gè)數(shù)據(jù)的多次修改操作,先后由多個(gè)存儲(chǔ)服務(wù)器節(jié)點(diǎn)分別向異地同步,而且同步的順序不一定與最初寫入的順序一致。因此在第一同步日志只保存了元數(shù)據(jù)而不是完整數(shù)據(jù),第一存儲(chǔ)服務(wù)集群在同步之前根據(jù)元數(shù)據(jù)去取當(dāng)時(shí)最新的完整數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,避免了向異地同步過時(shí)的數(shù)據(jù)。
[0054]在本發(fā)明的一個(gè)實(shí)施方式中,第一存儲(chǔ)服務(wù)集群根據(jù)所述第一數(shù)據(jù)變更請求,變更第一存儲(chǔ)服務(wù)集群中的對應(yīng)數(shù)據(jù),還包括:將所述變更結(jié)果通知所述第一客戶端。也即,第一存儲(chǔ)服務(wù)集群數(shù)據(jù)變更成功后,會(huì)向第一客戶端返回“數(shù)據(jù)變更成功”的信息;第一存儲(chǔ)服務(wù)集群數(shù)據(jù)變更失敗后,也會(huì)向第一客戶端返回“數(shù)據(jù)變更失敗”及提醒“重新操作”的信息。
[0055]本發(fā)明實(shí)施例還提供了一種分布式存儲(chǔ)系統(tǒng)中的數(shù)據(jù)同步裝置,圖2是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)同步裝置的結(jié)構(gòu)框圖,如圖2所示,該裝置包括:第一接收模塊301、第一數(shù)據(jù)管理模塊302、同步模塊303、第二接收模塊304、第二數(shù)據(jù)管理模塊305。其中,第一接收模塊301,用于接收來自第一客戶端的第一數(shù)據(jù)變更請求;第一數(shù)據(jù)管理模塊302,用于根據(jù)所述第一數(shù)據(jù)變更請求,變更第一存儲(chǔ)服務(wù)集群中對應(yīng)的數(shù)據(jù);同步模塊303,用于將變更數(shù)據(jù)作為第一同步數(shù)據(jù)同步至第二存儲(chǔ)服務(wù)集群;第二接收模塊304,用于接收所述第二存儲(chǔ)服務(wù)集群發(fā)送的第二同步數(shù)據(jù);第二數(shù)據(jù)管理模塊305,用于根據(jù)所述第二同步數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。
[0056]通過本發(fā)明實(shí)施例,第一接收模塊301接收第一客戶端發(fā)送的第一數(shù)據(jù)變更請求,第一數(shù)據(jù)管理模塊302隨即根據(jù)上述第一數(shù)據(jù)變更請求,將第一存儲(chǔ)服務(wù)集群中對應(yīng)的數(shù)據(jù)進(jìn)行變更,同步模塊303負(fù)責(zé)將變更數(shù)據(jù)作為第一同步數(shù)據(jù)同步至第二存儲(chǔ)服務(wù)集群;此外,第二接收模塊304能夠接收第二存儲(chǔ)服務(wù)集群發(fā)送的第二同步數(shù)據(jù),隨即,第二數(shù)據(jù)管理模塊305會(huì)根據(jù)上述第二同步數(shù)據(jù)將第一存儲(chǔ)集群中的數(shù)據(jù)進(jìn)行同步。使得異地分布式存儲(chǔ)服務(wù)集群之間可以實(shí)現(xiàn)數(shù)據(jù)雙向同步,充分利用所有的計(jì)算資源,在有限的計(jì)算資源基礎(chǔ)上實(shí)現(xiàn)異地容災(zāi);其次,避免了業(yè)務(wù)應(yīng)用進(jìn)行數(shù)據(jù)的寫操作需要實(shí)時(shí)訪問異地分布式存儲(chǔ)服務(wù)集群的問題,克服了異地訪問網(wǎng)絡(luò)延遲較高、帶寬有限等問題。
[0057]在本發(fā)明的一個(gè)實(shí)施方式中,所述第一數(shù)據(jù)管理模塊,還用于同時(shí)生成與所述變更數(shù)據(jù)對應(yīng)的第一同步日志;所述同步模塊,還用于將所述第一同步日志對應(yīng)的第一同步數(shù)據(jù)同步至第二存儲(chǔ)服務(wù)集群。如圖3所示,所述同步模塊包括:讀取單元3031、同步單元3032。其中,讀取單元3031,讀取第一同步日志記錄的數(shù)據(jù)信息,根據(jù)第一同步日志記錄的數(shù)據(jù)信息讀取對應(yīng)第一存儲(chǔ)服務(wù)集群中存儲(chǔ)的數(shù)據(jù);同步單元3032,將上述讀取單元所讀取的第一存儲(chǔ)服務(wù)集群中存儲(chǔ)的數(shù)據(jù)同步至第二存儲(chǔ)服務(wù)集群。讀取單元303