最新的毛片基地免费,国产国语一级毛片,免费国产成人高清在线电影,中天堂国产日韩欧美,中国国产aa一级毛片,国产va欧美va在线观看,成人不卡在线

一種數(shù)據(jù)的同步方法和裝置與流程

文檔序號(hào):11180713閱讀:977來(lái)源:國(guó)知局
一種數(shù)據(jù)的同步方法和裝置與流程

本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)的同步方法和裝置。



背景技術(shù):

在現(xiàn)有技術(shù)中,為了實(shí)現(xiàn)服務(wù)器集群中數(shù)據(jù)的一致性,提出了以下兩種解決方案:

如圖1所示的方案一:在服務(wù)器集群中增加一個(gè)配置中心,當(dāng)其中一個(gè)服務(wù)器(發(fā)布者)獲取到數(shù)據(jù)并要將所述數(shù)據(jù)同步到其他服務(wù)器(訂閱者)中時(shí),所述服務(wù)器將所述數(shù)據(jù)發(fā)送到所述配置中心,有所述配置中心向其他服務(wù)器發(fā)送所述數(shù)據(jù),進(jìn)而使其他服務(wù)器根據(jù)所述數(shù)據(jù)進(jìn)行同步。

如圖2所示的方案二:所述服務(wù)器集群通過(guò)選舉算法選舉出一個(gè)發(fā)布者master,其他服務(wù)器為訂閱者,選擇成功后,當(dāng)需要讓所述服務(wù)器集群同步一個(gè)數(shù)據(jù)時(shí),由所述master獲取所述數(shù)據(jù),再由所述master向訂閱者發(fā)送需要同步的數(shù)據(jù),以使所述訂閱者進(jìn)行數(shù)據(jù)同步,在訂閱者同步成功后向master返回同步成功的消息,當(dāng)所述master宕機(jī)后,所述服務(wù)器集群需要重進(jìn)選舉master。

在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在如下問(wèn)題:

方案一在同步數(shù)據(jù)時(shí)依賴第三方設(shè)備,部署麻煩,可靠性不高,而方案二中如果集群中的服務(wù)器數(shù)量較大時(shí),訂閱者返回的同步成功的消息數(shù)量也就會(huì)越多,進(jìn)而使得數(shù)據(jù)同步時(shí)的成本大大增加,并且在master宕機(jī)后,重新選舉時(shí)也會(huì)增加數(shù)據(jù)同步時(shí)的成本。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明提供一種數(shù)據(jù)的同步方法和裝置,用于解決現(xiàn)有技術(shù)中依賴第三方設(shè)備,部署麻煩,可靠性不高的問(wèn)題;

本發(fā)明提供一種數(shù)據(jù)的同步方法和裝置,還用于解決現(xiàn)有技術(shù)中數(shù)據(jù)同步成本較高的問(wèn)題。

本發(fā)明提供一種數(shù)據(jù)的同步方法,所述方法應(yīng)用于包括第一終端設(shè)備和第二終端設(shè)備的系統(tǒng)中,其中,所述第一終端設(shè)備和所述第二終端設(shè)備的時(shí)間是同步的,所述第二終端設(shè)備為多個(gè),所述方法包括:

當(dāng)?shù)谝唤K端設(shè)備接收到數(shù)據(jù)時(shí),所述第一終端設(shè)備將接收到所述數(shù)據(jù)的時(shí)間戳添加到所述數(shù)據(jù)中;

所述第一終端設(shè)備將添加有所述時(shí)間戳的所述數(shù)據(jù)發(fā)送給所述第二終端設(shè)備,并保存添加有所述時(shí)間戳的所述數(shù)據(jù);

所述第一終端設(shè)備接收所述第二終端設(shè)備根據(jù)添加有所述時(shí)間戳的所述數(shù)據(jù)反饋的數(shù)據(jù),以使所述第一終端設(shè)備根據(jù)自身保存的添加有所述時(shí)間戳的所述數(shù)據(jù)和所述反饋的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

所述第一終端設(shè)備和所述第二終端中相同的數(shù)據(jù)具有相同的數(shù)據(jù)標(biāo)識(shí);

所述反饋的數(shù)據(jù)是所述第二終端設(shè)備根據(jù)具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)確定的時(shí)間戳最大的數(shù)據(jù)。

所述第一終端設(shè)備根據(jù)自身保存的添加有所述時(shí)間戳的所述數(shù)據(jù)和所述反饋的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,具體為:

所述第一終端設(shè)備判斷具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的數(shù)目之和是否大于閾值;

當(dāng)大于所述閾值時(shí),所述第一終端設(shè)備確定出具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)中最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù);

所述第一終端設(shè)備根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

所述第一終端設(shè)備為保存添加有所述時(shí)間戳的所述數(shù)據(jù)設(shè)定生命周期,當(dāng)所述第一終端設(shè)備在所述生命周期內(nèi)判斷出具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的數(shù)目之和不大于所述閾值時(shí),所述第一終端設(shè)備刪除具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)。

具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)中還攜帶有同步類型;

所述第一終端設(shè)備根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,具體為:

當(dāng)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的所述同步類型是同步數(shù)據(jù)時(shí),所述第一終端設(shè)備根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步;

當(dāng)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的所述同步類型是同步刪除數(shù)據(jù)時(shí),所述第一終端刪除最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的數(shù)據(jù)值,并根據(jù)刪除所述數(shù)據(jù)值的最 大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

一種數(shù)據(jù)同步裝置,所述數(shù)據(jù)同步裝置位于第一終端設(shè)備,應(yīng)用于包括所述第一終端設(shè)備和多個(gè)第二終端設(shè)備的系統(tǒng)中,其中,所述第一終端設(shè)備和所述第二終端設(shè)備的時(shí)間是同步的,所述數(shù)據(jù)同步裝置包括:

添加模塊,當(dāng)所述第一終端設(shè)備接收到數(shù)據(jù)時(shí),用于將接收到所述數(shù)據(jù)的時(shí)間戳添加到所述數(shù)據(jù)中;

發(fā)送模塊,用于將添加有所述時(shí)間戳的所述數(shù)據(jù)發(fā)送給所述第二終端設(shè)備,并保存添加有所述時(shí)間戳的所述數(shù)據(jù);

接收模塊,用于接收所述第二終端設(shè)備根據(jù)添加有所述時(shí)間戳的所述數(shù)據(jù)反饋的數(shù)據(jù),以使所述第一終端設(shè)備中的同步模塊根據(jù)自身保存的添加有所述時(shí)間戳的所述數(shù)據(jù)和所述反饋的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

所述第一終端設(shè)備和所述第二終端中相同的數(shù)據(jù)具有相同的數(shù)據(jù)標(biāo)識(shí);

所述反饋的數(shù)據(jù)是所述第二終端設(shè)備根據(jù)具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)確定的時(shí)間戳最大的數(shù)據(jù)。

所述同步模塊具體用于:

判斷具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的數(shù)目之和是否大于閾值;

當(dāng)大于所述閾值時(shí),確定出具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)中最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù);

根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

所述添加模塊還用于為保存添加有所述時(shí)間戳的所述數(shù)據(jù)設(shè)定生命周期;

所述裝置還包括:

刪除模塊,當(dāng)所述同步模塊在所述生命周期內(nèi)判斷出具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的數(shù)目之和不大于所述閾值時(shí),用于刪除具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)。

具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)中還攜帶有同步類型;

所述同步模塊還具體用于:

當(dāng)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的所述同步類型是同步數(shù)據(jù)時(shí),根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步;

當(dāng)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的所述同步類型是同步刪除數(shù)據(jù)時(shí),刪除最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的數(shù)據(jù)值,并根據(jù)刪除所述數(shù)據(jù)值的最大時(shí)間戳對(duì)應(yīng) 的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

一種數(shù)據(jù)同步方法,所述方法應(yīng)用于包括第一終端設(shè)備和第二終端設(shè)備的系統(tǒng)中,其中,所述第一終端設(shè)備和所述第二終端設(shè)備的時(shí)間是同步的,所述第二終端設(shè)備為多個(gè),所述方法包括:

所述第二終端設(shè)備接收所述第一終端設(shè)備發(fā)送的添加有時(shí)間戳的數(shù)據(jù)和其他第二終端設(shè)備發(fā)送的根據(jù)所述添加有時(shí)間戳的數(shù)據(jù)反饋的數(shù)據(jù);

所述第二終端設(shè)備根據(jù)添加有時(shí)間戳的數(shù)據(jù)和所述反饋的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步;

其中,所述時(shí)間戳是所述第一終端設(shè)備根據(jù)接收到所述數(shù)據(jù)的時(shí)間確定的。

所述第一終端設(shè)備和所述第二終端中相同的數(shù)據(jù)具有相同的數(shù)據(jù)標(biāo)識(shí);

所述反饋的數(shù)據(jù)是其他所述第二終端設(shè)備根據(jù)具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)確定的時(shí)間戳最大的數(shù)據(jù)。

所述第二終端設(shè)備根據(jù)添加有時(shí)間戳的數(shù)據(jù)和所述反饋的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,具體為:

所述第二終端設(shè)備判斷具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的數(shù)目之和是否大于閾值;

當(dāng)大于所述閾值時(shí),所述第二終端設(shè)備確定出具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)中最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù);

所述第二終端設(shè)備根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

所述添加有時(shí)間戳的數(shù)據(jù)中攜帶有所述第一終端設(shè)備為所述數(shù)據(jù)設(shè)定生命周期,當(dāng)所述第二終端設(shè)備在所述生命周期內(nèi)判斷出具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的數(shù)目之和不大于所述閾值時(shí),所述第二終端設(shè)備刪除具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)。

具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)中還攜帶有同步類型;

所述第二終端設(shè)備根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,具體為:

當(dāng)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的所述同步類型是同步數(shù)據(jù)時(shí),所述第二終端設(shè)備根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步;

當(dāng)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的所述同步類型是同步刪除數(shù)據(jù)時(shí),所述第二終端刪除最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的數(shù)據(jù)值,并根據(jù)刪除所述數(shù)據(jù)值的最 大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

在所述第二終端設(shè)備接收到所述第一終端設(shè)備發(fā)送的添加有時(shí)間戳的數(shù)據(jù)后,所述第二終端設(shè)備將與所述添加有時(shí)間戳的數(shù)據(jù)的所述數(shù)據(jù)標(biāo)識(shí)相同的數(shù)據(jù)中時(shí)間戳最大的數(shù)據(jù)發(fā)送給所述第一終端設(shè)備,以使所述第一終端設(shè)備根據(jù)所述時(shí)間戳最大的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

一種數(shù)據(jù)同步裝置,所述數(shù)據(jù)同步裝置位于第二終端設(shè)備,應(yīng)用于包括第一終端設(shè)備和多個(gè)所述第二終端設(shè)備的系統(tǒng)中,其中,所述第一終端設(shè)備和所述第二終端設(shè)備的時(shí)間是同步的,所述數(shù)據(jù)同步裝置包括:

接收模塊,用于接收所述第一終端設(shè)備發(fā)送的添加有時(shí)間戳的數(shù)據(jù)和其他第二終端設(shè)備發(fā)送的根據(jù)所述添加有時(shí)間戳的數(shù)據(jù)反饋的數(shù)據(jù);

同步模塊,用于根據(jù)添加有時(shí)間戳的數(shù)據(jù)和所述反饋的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步;

其中,所述時(shí)間戳是所述第一終端設(shè)備根據(jù)接收到所述數(shù)據(jù)的時(shí)間確定的。

所述第一終端設(shè)備和所述第二終端中相同的數(shù)據(jù)具有相同的數(shù)據(jù)標(biāo)識(shí);

所述反饋的數(shù)據(jù)是其他所述第二終端設(shè)備根據(jù)具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)確定的時(shí)間戳最大的數(shù)據(jù)。

所述同步模塊具體用于:

判斷具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的數(shù)目之和是否大于閾值;

當(dāng)大于所述閾值時(shí),確定出具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)中最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù);

根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

所述添加有時(shí)間戳的數(shù)據(jù)中攜帶有所述第一終端設(shè)備為所述數(shù)據(jù)設(shè)定生命周期;

所述裝置還包括:

刪除模塊,當(dāng)所述同步模塊在所述生命周期內(nèi)判斷出具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的數(shù)目之和不大于所述閾值時(shí),用于刪除具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)。

具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)中還攜帶有同步類型;

所述同步模塊還具體用于:

當(dāng)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的所述同步類型是同步數(shù)據(jù)時(shí),根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步;

當(dāng)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的所述同步類型是同步刪除數(shù)據(jù)時(shí),刪除最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的數(shù)據(jù)值,并根據(jù)刪除所述數(shù)據(jù)值的最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

所述裝置還包括:

發(fā)送模塊,在所述接收模塊接收到所述第一終端設(shè)備發(fā)送的添加有時(shí)間戳的數(shù)據(jù)后,用于將與所述添加有時(shí)間戳的數(shù)據(jù)的所述數(shù)據(jù)標(biāo)識(shí)相同的數(shù)據(jù)中時(shí)間戳最大的數(shù)據(jù)發(fā)送給所述第一終端設(shè)備,以使所述第一終端設(shè)備根據(jù)所述時(shí)間戳最大的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

本發(fā)明中當(dāng)?shù)谝唤K端設(shè)備接收到數(shù)據(jù)時(shí),在所述數(shù)據(jù)中添加時(shí)間戳并保存,然后將添加有時(shí)間戳的數(shù)據(jù)發(fā)送給第二終端設(shè)備,所述第一終端設(shè)備接收所述第二終端設(shè)備根據(jù)添加有所述時(shí)間戳的所述數(shù)據(jù)反饋的數(shù)據(jù),并根據(jù)自身保存的添加有所述時(shí)間戳的所述數(shù)據(jù)和所述反饋的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,本發(fā)明在不借助第三方設(shè)備和選舉發(fā)送數(shù)據(jù)設(shè)備的情況下實(shí)現(xiàn)了終端設(shè)備集群的數(shù)據(jù)同步,降低了數(shù)據(jù)同步時(shí)的成本,并且集群中的終端設(shè)備是根據(jù)自身得到的數(shù)據(jù)來(lái)進(jìn)行同步,保證了數(shù)據(jù)同步時(shí)的可靠性。

附圖說(shuō)明

為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為現(xiàn)有技術(shù)中的一種依靠第三方設(shè)備進(jìn)行數(shù)據(jù)同步的流程示意圖;

圖2為現(xiàn)有技術(shù)中的一種通過(guò)選舉發(fā)布者進(jìn)行數(shù)據(jù)同步的流程示意圖;

圖3為本發(fā)明實(shí)施例中的一種數(shù)據(jù)的同步方法流程圖之一;

圖4為本發(fā)明實(shí)施例中的一種數(shù)據(jù)的同步方法流程圖之二;

圖5為本發(fā)明實(shí)施例中的一種數(shù)據(jù)發(fā)布時(shí)的同步方法流程示意圖;

圖6為本發(fā)明實(shí)施例中的一種數(shù)據(jù)同步裝置結(jié)構(gòu)示意圖之一;

圖7為本發(fā)明實(shí)施例中的一種數(shù)據(jù)同步裝置結(jié)構(gòu)示意圖之二。

具體實(shí)施方式

為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

在現(xiàn)有技術(shù)中,由于依靠第三方設(shè)備來(lái)實(shí)現(xiàn)同步數(shù)據(jù)的方案存在部署麻煩,可靠性不高的缺陷,依靠選舉數(shù)據(jù)發(fā)布者的方案存在增加數(shù)據(jù)同步成本的缺陷,因此本申請(qǐng)?zhí)岢隽艘环N數(shù)據(jù)的同步方法,具體如圖3所示,所述方法應(yīng)用于包括第一終端設(shè)備和第二終端設(shè)備的系統(tǒng)中,其中,所述第一終端設(shè)備和所述第二終端設(shè)備的時(shí)間是同步的,所述第二終端設(shè)備為多個(gè),所述方法包括以下步驟:

步驟301,當(dāng)?shù)谝唤K端設(shè)備接收到數(shù)據(jù)時(shí),所述第一終端設(shè)備將接收到所述數(shù)據(jù)的時(shí)間戳添加到所述數(shù)據(jù)中。

具體的,所述第一終端設(shè)備和所述第二終端的時(shí)間是同步的是為了實(shí)現(xiàn)集群中的終端設(shè)備時(shí)間上的統(tǒng)一性,保證在第一終端設(shè)備為數(shù)據(jù)添加時(shí)間戳?xí)r具有相同的時(shí)間基礎(chǔ),進(jìn)而保證了在集群中的終端設(shè)備能夠正確的確定出相同的且時(shí)間戳最大的數(shù)據(jù)。其中,所述第一終端設(shè)備為接收數(shù)據(jù)的設(shè)備,所述第一終端設(shè)備應(yīng)不是集群中的一個(gè)固定設(shè)備,是根據(jù)集群中接收數(shù)據(jù)的設(shè)備確定的,所述數(shù)據(jù)是集群之外的設(shè)備發(fā)送的。例如:集群中有3個(gè)終端設(shè)備,分別為設(shè)備1、設(shè)備2和設(shè)備3,當(dāng)設(shè)備1接收到客戶端發(fā)送的數(shù)據(jù)時(shí),此時(shí)設(shè)備1為第一終端設(shè)備,如果是設(shè)備2接收到客戶端發(fā)送的數(shù)據(jù)時(shí),此時(shí)設(shè)備2為第一終端設(shè)備。同理,第二終端設(shè)備是集群中除第一終端設(shè)備之外的其他終端設(shè)備,所述第二終端設(shè)備是集群中接收所述第一終端設(shè)備發(fā)送的數(shù)據(jù)的設(shè)備,例如:集群中有3個(gè)終端設(shè)備,分別為設(shè)備1、設(shè)備2和設(shè)備3,當(dāng)設(shè)備1為第一終端設(shè)備時(shí),設(shè)備2和設(shè)備3為第二終端設(shè)備,當(dāng)設(shè)備2為第一終端設(shè)備時(shí),設(shè)備1和設(shè)備3為第二終端設(shè)備。

步驟302,所述第一終端設(shè)備將添加有所述時(shí)間戳的所述數(shù)據(jù)發(fā)送給所述第二終端設(shè)備,并保存添加有所述時(shí)間戳的所述數(shù)據(jù)。

具體的,所述第一終端設(shè)備保存添加有所述時(shí)間戳的所述數(shù)據(jù)是為了在后續(xù)進(jìn)行數(shù)據(jù)同步。

步驟303,所述第一終端設(shè)備接收所述第二終端設(shè)備根據(jù)添加有所述時(shí)間戳的所述數(shù)據(jù)反饋的數(shù)據(jù),以使所述第一終端設(shè)備根據(jù)自身保存的添加有所述時(shí)間戳的所述數(shù)據(jù)和所述反饋的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

其中,所述第一終端設(shè)備和所述第二終端中相同的數(shù)據(jù)具有相同的數(shù)據(jù)標(biāo)識(shí);

所述反饋的數(shù)據(jù)是所述第二終端設(shè)備根據(jù)具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)確定的時(shí)間戳最大的數(shù)據(jù)。

具體的,在集群中的終端設(shè)備接收到的集群之外的設(shè)備發(fā)送的數(shù)據(jù)中攜帶有數(shù)據(jù)標(biāo)識(shí),并且集群之外的設(shè)備發(fā)送的同一數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)是相同的,其中,同一數(shù)據(jù)可能在不同時(shí)間發(fā)送,集群是根據(jù)接收到的數(shù)據(jù)進(jìn)行同步的,因此集群中的設(shè)備中可能存在與當(dāng)前接收到的數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)相同的數(shù)據(jù),所述存在數(shù)據(jù)標(biāo)識(shí)相同的數(shù)據(jù)中同樣存在集群中的設(shè)備接收到所述數(shù)據(jù)的時(shí)間戳。

所述第二終端設(shè)備中可能存在與所述數(shù)據(jù)相同的數(shù)據(jù)標(biāo)識(shí),因此在所述第二終端設(shè)備接收到添加有所述時(shí)間戳的所述數(shù)據(jù)時(shí),所述第二終端設(shè)備需要根據(jù)添加所述時(shí)間戳的所述數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)確定出所述第二終端中存在相同數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù),然后,所述第二終端設(shè)備根據(jù)具有相同數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)確定出時(shí)間戳最大的數(shù)據(jù),此時(shí)確定出的數(shù)據(jù)為集群最新接收到的數(shù)據(jù),需要以此為數(shù)據(jù)同步的依據(jù),并將確定出的時(shí)間戳最大的數(shù)據(jù)作為反饋數(shù)據(jù)反饋給所述第一終端設(shè)備,在所述第一終端設(shè)備接收到集群中的第二終端設(shè)備反饋的時(shí)間戳最大的數(shù)據(jù)后,所述第一終端設(shè)備就可以根據(jù)反饋的數(shù)據(jù)和自身保存的添加有所述時(shí)間戳的所述數(shù)據(jù)確定出最新的數(shù)據(jù),以使所述第一終端設(shè)備根據(jù)所述最新的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

所述第一終端設(shè)備根據(jù)自身保存的添加有所述時(shí)間戳的所述數(shù)據(jù)和所述反饋的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,具體為:

所述第一終端設(shè)備判斷具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的數(shù)目之和是否大于閾值;

當(dāng)大于所述閾值時(shí),所述第一終端設(shè)備確定出具有相同所述數(shù)據(jù)標(biāo)識(shí)的 數(shù)據(jù)中最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù);

所述第一終端設(shè)備根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

具體的,所述閾值根據(jù)實(shí)際情況確定,例如:所述閾值為集群中的終端設(shè)備數(shù)目的一半,當(dāng)所述第一終端設(shè)備確定出的具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的數(shù)目表示集群中就有多少個(gè)終端設(shè)備接收到了所述數(shù)據(jù),當(dāng)所述數(shù)目超過(guò)閾值時(shí)表示集群達(dá)到了數(shù)據(jù)同步的要求,此時(shí)所述第一終端設(shè)備就可以根據(jù)自身中的最新的所述數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

所述第一終端設(shè)備為保存添加有所述時(shí)間戳的所述數(shù)據(jù)設(shè)定生命周期,當(dāng)所述第一終端設(shè)備在所述生命周期內(nèi)判斷出具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的數(shù)目之和不大于所述閾值時(shí),所述第一終端設(shè)備刪除具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)。

具體的,數(shù)據(jù)同步時(shí)必須在一定時(shí)間內(nèi)完成數(shù)據(jù)同步,否則就失去了數(shù)據(jù)同步的意義,因此,在所述第一終端設(shè)備在為所述數(shù)據(jù)添加時(shí)間戳?xí)r還要為所述數(shù)據(jù)設(shè)定生命周期,所述生命周期的長(zhǎng)短根據(jù)實(shí)際情況確定,當(dāng)所述第一終端設(shè)備在所述生命周期內(nèi)沒(méi)有收到超過(guò)所述閾值的具有相同數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)時(shí)表示此次數(shù)據(jù)同步失敗,為了保證所述第一終端設(shè)備的資源不被浪費(fèi),因此所述第一終端設(shè)備刪除具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)。

具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)中還攜帶有同步類型;

所述第一終端設(shè)備根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,具體為:

當(dāng)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的所述同步類型是同步數(shù)據(jù)時(shí),所述第一終端設(shè)備根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步;

當(dāng)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的所述同步類型是同步刪除數(shù)據(jù)時(shí),所述第一終端刪除最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的數(shù)據(jù)值,并根據(jù)刪除所述數(shù)據(jù)值的最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

具體的,在數(shù)據(jù)同步時(shí)是為了讓集群中的終端設(shè)備的數(shù)據(jù)統(tǒng)一,而所述第一終端設(shè)備接收到的數(shù)據(jù)進(jìn)行同步時(shí),有時(shí)是為了增加數(shù)據(jù),而有時(shí)是為了刪除數(shù)據(jù),如果所述第一終端設(shè)備確定出的最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)的同步類型是同步數(shù)據(jù)時(shí),表示是為了增加數(shù)據(jù),所述第一終端設(shè)備根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步;如果所述第一終端設(shè)備確定出的最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)的同步類型是刪除數(shù)據(jù)時(shí),表示是為了撤銷所述數(shù)據(jù),所述第一終 端設(shè)備根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行同步時(shí)刪除最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的數(shù)據(jù)值,并根據(jù)刪除所述數(shù)據(jù)值的最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,其中在刪除所述數(shù)據(jù)時(shí),所述第一終端設(shè)備可以只刪除所述數(shù)據(jù)本身,保留所述數(shù)據(jù)對(duì)應(yīng)的時(shí)間戳、同步類型和數(shù)據(jù)標(biāo)識(shí)等信息,以供后續(xù)查詢。

當(dāng)所述第一終端設(shè)備中接收集群之外的設(shè)備發(fā)送的至少一個(gè)具有相同的數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)時(shí)。所述第一終端設(shè)備根據(jù)接收數(shù)據(jù)的先后順序進(jìn)行數(shù)據(jù)同步。

本發(fā)明中當(dāng)?shù)谝唤K端設(shè)備接收到數(shù)據(jù)時(shí),在所述數(shù)據(jù)中添加時(shí)間戳并保存,然后將添加有時(shí)間戳的數(shù)據(jù)發(fā)送給第二終端設(shè)備,所述第一終端設(shè)備接收所述第二終端設(shè)備根據(jù)添加有所述時(shí)間戳的所述數(shù)據(jù)反饋的數(shù)據(jù),并根據(jù)自身保存的添加有所述時(shí)間戳的所述數(shù)據(jù)和所述反饋的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,本發(fā)明在不借助第三方設(shè)備和選舉發(fā)送數(shù)據(jù)設(shè)備的情況下實(shí)現(xiàn)了終端設(shè)備集群的數(shù)據(jù)同步,降低了數(shù)據(jù)同步時(shí)的成本,并且集群中的終端設(shè)備是根據(jù)自身得到的數(shù)據(jù)來(lái)進(jìn)行同步,保證了數(shù)據(jù)同步時(shí)的可靠性。

本發(fā)明還提供了一種數(shù)據(jù)的同步方法,具體如圖4所示,所述方法應(yīng)用于包括第一終端設(shè)備和第二終端設(shè)備的系統(tǒng)中,其中,所述第一終端設(shè)備和所述第二終端設(shè)備的時(shí)間是同步的,所述第二終端設(shè)備為多個(gè),所述方法包括以下步驟:

步驟401,所述第二終端設(shè)備接收所述第一終端設(shè)備發(fā)送的添加有時(shí)間戳的數(shù)據(jù)和其他第二終端設(shè)備發(fā)送的根據(jù)所述添加有時(shí)間戳的數(shù)據(jù)反饋的數(shù)據(jù)。

其中,所述時(shí)間戳是所述第一終端設(shè)備根據(jù)接收到所述數(shù)據(jù)的時(shí)間確定的。

所述第一終端設(shè)備和所述第二終端中相同的數(shù)據(jù)具有相同的數(shù)據(jù)標(biāo)識(shí);

所述反饋的數(shù)據(jù)是其他所述第二終端設(shè)備根據(jù)具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)確定的時(shí)間戳最大的數(shù)據(jù)。

例如:終端設(shè)備集群中包括:設(shè)備1、設(shè)備2和設(shè)備3,其中所述設(shè)備1為第一終端設(shè)備,設(shè)備2和設(shè)備3為第二終端設(shè)備,在所述設(shè)備1接收到數(shù)據(jù)時(shí),所述設(shè)備1在將添加有時(shí)間戳的數(shù)據(jù)發(fā)送給所述設(shè)備2時(shí)還發(fā)送給了設(shè)備3,此時(shí),所述設(shè)備2為所述第二終端設(shè)備,所述設(shè)備3為其他所述第 二終端設(shè)備,由于設(shè)備3中可能存在具有相同數(shù)據(jù)標(biāo)識(shí)的所述數(shù)據(jù),為了保證設(shè)備2在進(jìn)行數(shù)據(jù)同步時(shí)以使最新的數(shù)據(jù)進(jìn)行更新的,所述設(shè)備3還要將確定出其自身中具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的時(shí)間戳最大的數(shù)據(jù)發(fā)送給所述設(shè)備2,以使所述設(shè)備2可以根據(jù)最新的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。同理,在所述設(shè)備2接收到設(shè)備發(fā)送的數(shù)據(jù)時(shí),所述設(shè)備2也要確定出自身中具有相同數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的時(shí)間戳最大的數(shù)據(jù)發(fā)送給所述設(shè)備3,以使所述設(shè)備3也可以根據(jù)最新的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

步驟402,所述第二終端設(shè)備根據(jù)添加有時(shí)間戳的數(shù)據(jù)和所述反饋的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

具體的,在所述第二終端設(shè)備在接收到添加有時(shí)間戳的數(shù)據(jù)和其他第二終端設(shè)備反饋的數(shù)據(jù)后,此時(shí)所述第二終端設(shè)備中包含了集群中其他所有終端設(shè)備反饋的具有所述相同數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù),此時(shí)如果所述第二終端設(shè)備中還存在其他具有相同數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù),所述第二終端設(shè)備在添加有時(shí)間戳的數(shù)據(jù)、其他第二終端設(shè)備反饋的數(shù)據(jù)和所述其他具有相同數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)中確定出時(shí)間戳最大的數(shù)據(jù),以使所述第二終端設(shè)備根據(jù)所述時(shí)間戳最大的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。同理,其他所述第二終端設(shè)備也根據(jù)上述過(guò)程進(jìn)行數(shù)據(jù)同步。

所述第二終端設(shè)備根據(jù)添加有時(shí)間戳的數(shù)據(jù)和所述反饋的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,具體為:

所述第二終端設(shè)備判斷具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的數(shù)目之和是否大于閾值;

當(dāng)大于所述閾值時(shí),所述第二終端設(shè)備確定出具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)中最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù);

所述第二終端設(shè)備根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

具體的,當(dāng)所述第二終端設(shè)備確定出的具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的數(shù)目表示集群中就有多少個(gè)終端設(shè)備接收到了所述數(shù)據(jù),當(dāng)所述數(shù)目超過(guò)閾值時(shí)表示集群達(dá)到了數(shù)據(jù)同步的要求,此時(shí)所述第二終端設(shè)備就可以根據(jù)自身中的最新的所述數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

所述添加有時(shí)間戳的數(shù)據(jù)中攜帶有所述第一終端設(shè)備為所述數(shù)據(jù)設(shè)定生命周期,當(dāng)所述第二終端設(shè)備在所述生命周期內(nèi)判斷出具有相同所述數(shù)據(jù)標(biāo) 識(shí)的數(shù)據(jù)的數(shù)目之和不大于所述閾值時(shí),所述第二終端設(shè)備刪除具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)。

具體的,數(shù)據(jù)同步時(shí)必須在一定時(shí)間內(nèi)完成數(shù)據(jù)同步,否則就失去了數(shù)據(jù)同步的意義,因此,在所述第一終端設(shè)備在為所述數(shù)據(jù)添加時(shí)間戳?xí)r還要為所述數(shù)據(jù)設(shè)定生命周期,所述生命周期的長(zhǎng)短根據(jù)實(shí)際情況確定,當(dāng)所述第二終端設(shè)備在所述生命周期內(nèi)沒(méi)有收到超過(guò)所述閾值的具有相同數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)時(shí)表示此次數(shù)據(jù)同步失敗,為了保證所述第二終端設(shè)備的資源不被浪費(fèi),因此所述第一終端設(shè)備刪除具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)。

具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)中還攜帶有同步類型;

所述第二終端設(shè)備根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,具體為:

當(dāng)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的所述同步類型是同步數(shù)據(jù)時(shí),所述第二終端設(shè)備根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步;

當(dāng)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的所述同步類型是同步刪除數(shù)據(jù)時(shí),所述第二終端刪除最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的數(shù)據(jù)值,并根據(jù)刪除所述數(shù)據(jù)值的最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

具體的,在數(shù)據(jù)同步時(shí)是為了讓集群中的終端設(shè)備的數(shù)據(jù)統(tǒng)一,而所述第二終端設(shè)備在進(jìn)行數(shù)據(jù)同步時(shí),有時(shí)是為了增加數(shù)據(jù),而有時(shí)是為了刪除數(shù)據(jù),如果所述第二終端設(shè)備確定出的最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)的同步類型是同步數(shù)據(jù)時(shí),表示是為了增加數(shù)據(jù),所述第二終端設(shè)備根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步;如果所述第二終端設(shè)備確定出的最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)的同步類型是刪除數(shù)據(jù)時(shí),表示是為了撤銷所述數(shù)據(jù),所述第二終端設(shè)備根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行同步時(shí)刪除最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的數(shù)據(jù)值,并根據(jù)刪除所述數(shù)據(jù)值的最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,,其中在刪除所述數(shù)據(jù)時(shí),所述第二終端設(shè)備可以只刪除所述數(shù)據(jù)本身,保留所述數(shù)據(jù)對(duì)應(yīng)的時(shí)間戳、同步類型和數(shù)據(jù)標(biāo)識(shí)等信息,以供后續(xù)查詢。

在所述第二終端設(shè)備接收到所述第一終端設(shè)備發(fā)送的添加有時(shí)間戳的數(shù)據(jù)后,所述第二終端設(shè)備將與所述添加有時(shí)間戳的數(shù)據(jù)的所述數(shù)據(jù)標(biāo)識(shí)相同的數(shù)據(jù)中時(shí)間戳最大的數(shù)據(jù)發(fā)送給所述第一終端設(shè)備,以使所述第一終端設(shè)備根據(jù)所述時(shí)間戳最大的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

本發(fā)明中當(dāng)?shù)谝唤K端設(shè)備接收到數(shù)據(jù)時(shí),在所述數(shù)據(jù)中添加時(shí)間戳并保 存,然后將添加有時(shí)間戳的數(shù)據(jù)發(fā)送給第二終端設(shè)備,所述第一終端設(shè)備接收所述第二終端設(shè)備根據(jù)添加有所述時(shí)間戳的所述數(shù)據(jù)反饋的數(shù)據(jù),并根據(jù)自身保存的添加有所述時(shí)間戳的所述數(shù)據(jù)和所述反饋的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,本發(fā)明在不借助第三方設(shè)備和選舉發(fā)送數(shù)據(jù)設(shè)備的情況下實(shí)現(xiàn)了終端設(shè)備集群的數(shù)據(jù)同步,降低了數(shù)據(jù)同步時(shí)的成本,并且集群中的終端設(shè)備是根據(jù)自身得到的數(shù)據(jù)來(lái)進(jìn)行同步,保證了數(shù)據(jù)同步時(shí)的可靠性。

為了進(jìn)一步闡述本發(fā)明的技術(shù)思想,現(xiàn)結(jié)合具體的應(yīng)用場(chǎng)景,對(duì)本申請(qǐng)的技術(shù)方案進(jìn)行說(shuō)明,具體的,系統(tǒng)中包括3臺(tái)服務(wù)器:服務(wù)器a、服務(wù)器b、服務(wù)器c,且所述3臺(tái)服務(wù)器的時(shí)間是同步的,其中生成同步數(shù)據(jù)的終端為客戶端,并且定義所述同步數(shù)據(jù)的結(jié)構(gòu):d={k,v,s,t},k表示數(shù)據(jù)標(biāo)識(shí),v表示數(shù)據(jù)值,s表示數(shù)據(jù)的狀態(tài)(數(shù)據(jù)狀態(tài)有:sync表示正在同步,updated表示同步完成,zombie表示刪除數(shù)據(jù)值三種狀態(tài),t表示服務(wù)器接收所述數(shù)據(jù)的時(shí)間戳,時(shí)間戳以毫秒為單位,并且,每臺(tái)服務(wù)器的存儲(chǔ)分為三部分:暫存區(qū):用于存放同步數(shù)據(jù),此時(shí)的同步數(shù)據(jù)的狀態(tài)為sync,生命周期為i;數(shù)據(jù)區(qū):里面存在已經(jīng)生效的數(shù)據(jù),此時(shí)的數(shù)據(jù)狀態(tài)為updated,可以被客戶端讀取使用;待刪區(qū):用于存放刪除通知,此時(shí)數(shù)據(jù)的狀態(tài)為zombie,生命周期為i,規(guī)定閾值為1.5。具體過(guò)程如圖5所示。

客戶端發(fā)布了一個(gè)表示為k的數(shù)據(jù),并選擇發(fā)送服務(wù)器a中,如果此時(shí)所述數(shù)據(jù)中數(shù)據(jù)狀態(tài)s和時(shí)間戳t為空,所述服務(wù)器a在接收到所述數(shù)據(jù)后,根據(jù)接收所述數(shù)據(jù)的時(shí)間在t中添加時(shí)間戳,并將s設(shè)置為sync,并向包括自己在內(nèi)服務(wù)器集群發(fā)送所述數(shù)據(jù),當(dāng)服務(wù)器b收到所述數(shù)據(jù)后,在暫存區(qū)中查找以k為數(shù)據(jù)標(biāo)識(shí)的其他數(shù)據(jù),如果所述其他數(shù)據(jù)中的時(shí)間戳小于所述數(shù)據(jù),那么所述服務(wù)器b忽略所述數(shù)據(jù),如果大于,所述服務(wù)器b用所述數(shù)據(jù)替換掉所述其他數(shù)據(jù),并將所述數(shù)據(jù)發(fā)送給服務(wù)器a和服務(wù)器c,同理服務(wù)器c同樣需要完成上述過(guò)程。此時(shí)服務(wù)器b確定暫存區(qū)中數(shù)據(jù)標(biāo)識(shí)為k的數(shù)據(jù)的個(gè)數(shù)為2,超過(guò)閾值,所述服務(wù)器b選取出暫存區(qū)中以k為標(biāo)識(shí)時(shí)間戳最大的數(shù)據(jù),并將所述時(shí)間戳最大的數(shù)據(jù)移動(dòng)到數(shù)據(jù)區(qū)中,并將s設(shè)置為updated,如果數(shù)據(jù)區(qū)中存在以k為數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù),則用所述時(shí)間戳最大的數(shù)據(jù)覆蓋所述數(shù)據(jù)區(qū)中以k為數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)。如果在所述數(shù)據(jù)的生命周期內(nèi)服務(wù)器b確定數(shù)據(jù)標(biāo)識(shí)為k的數(shù)據(jù)小于所述閾值,則不執(zhí)行移動(dòng)操作,并 刪除服務(wù)器b中以k為數(shù)據(jù)標(biāo)識(shí)的所有數(shù)據(jù),同理服務(wù)器c同樣需要完成上述過(guò)程。

在完成上述過(guò)程后,服務(wù)器a中存在至少3條以k為數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù),所述服務(wù)器a確定出時(shí)間戳最大的數(shù)據(jù)后,將所述時(shí)間戳最大的數(shù)據(jù)移動(dòng)到數(shù)據(jù)區(qū),并將s設(shè)置為updated,如果數(shù)據(jù)區(qū)中存在以k為數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù),則用所述時(shí)間戳最大的數(shù)據(jù)覆蓋所述數(shù)據(jù)區(qū)中以k為數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)。如果在所述數(shù)據(jù)的生命周期內(nèi)服務(wù)器a確定數(shù)據(jù)標(biāo)識(shí)為k的數(shù)據(jù)小于所述閾值,則不執(zhí)行移動(dòng)操作,并刪除服務(wù)器a中以k為數(shù)據(jù)標(biāo)識(shí)的所有數(shù)據(jù)。

由于服務(wù)器b和服務(wù)器c是根據(jù)服務(wù)器a發(fā)送的數(shù)據(jù)進(jìn)行同步和反饋的,因此當(dāng)其中一個(gè)服務(wù)器中確定出數(shù)據(jù)標(biāo)識(shí)為k的數(shù)據(jù)的個(gè)數(shù)小于所述閾值時(shí),其他服務(wù)器中以k為數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的個(gè)數(shù)也小于所述閾值,因此,當(dāng)一個(gè)服務(wù)器刪除以k為數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)時(shí),其他服務(wù)器也在刪除以k為數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)。并且服務(wù)器a在刪除以k為數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)后,還要向客戶端反饋同步失敗的消息。

客戶端發(fā)布了一個(gè)表示為k的數(shù)據(jù),并選擇發(fā)送服務(wù)器a中,如果此時(shí)所述數(shù)據(jù)中數(shù)據(jù)狀態(tài)s為zombie,時(shí)間戳t為空時(shí),所述服務(wù)器a在接收到所述數(shù)據(jù)后,根據(jù)接收所述數(shù)據(jù)的時(shí)間在t中添加時(shí)間戳,然后所述服務(wù)器a向包括自己在內(nèi)服務(wù)器集群發(fā)送所述數(shù)據(jù),當(dāng)服務(wù)器b收到所述數(shù)據(jù)后,在暫存區(qū)中查找以k為數(shù)據(jù)標(biāo)識(shí)的其他數(shù)據(jù),如果所述其他數(shù)據(jù)中的時(shí)間戳小于所述數(shù)據(jù),那么所述服務(wù)器b忽略所述數(shù)據(jù),如果大于,所述服務(wù)器b用所述數(shù)據(jù)替換掉所述其他數(shù)據(jù),并將所述數(shù)據(jù)發(fā)送給服務(wù)器a和服務(wù)器c,同樣需要完成上述過(guò)程。此時(shí)服務(wù)器b確定暫存區(qū)中數(shù)據(jù)標(biāo)識(shí)為k的數(shù)據(jù)的個(gè)數(shù)為2,超過(guò)閾值,所述服務(wù)器b選取出暫存區(qū)中以k為標(biāo)識(shí)時(shí)間戳最大的數(shù)據(jù),并將所述時(shí)間戳最大的數(shù)據(jù)移動(dòng)到待刪區(qū)中,并將所述數(shù)據(jù)中s對(duì)應(yīng)的數(shù)據(jù)值刪除,如果待刪區(qū)中存在以k為數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù),則用所述時(shí)間戳最大的數(shù)據(jù)覆蓋所述待刪區(qū)中以k為數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)。如果在所述數(shù)據(jù)的生命周期內(nèi)服務(wù)器b確定數(shù)據(jù)標(biāo)識(shí)為k的數(shù)據(jù)小于所述閾值,則不執(zhí)行移動(dòng)操作,并刪除服務(wù)器b中以k為數(shù)據(jù)標(biāo)識(shí)的所有數(shù)據(jù),同理服務(wù)器c同樣需要完成上述過(guò)程。

在完成上述過(guò)程后,服務(wù)器a中存在至少3條以k為數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù), 所述服務(wù)器a確定出時(shí)間戳最大的數(shù)據(jù)后,將所述時(shí)間戳最大的數(shù)據(jù)移動(dòng)到待刪區(qū),如果待刪區(qū)中存在以k為數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù),則用所述時(shí)間戳最大的數(shù)據(jù)覆蓋所述數(shù)據(jù)區(qū)中以k為數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)。如果在所述數(shù)據(jù)的生命周期內(nèi)服務(wù)器a確定數(shù)據(jù)標(biāo)識(shí)為k的數(shù)據(jù)小于所述閾值,則不執(zhí)行移動(dòng)操作,并刪除服務(wù)器a中以k為數(shù)據(jù)標(biāo)識(shí)的所有數(shù)據(jù)。

如果服務(wù)器a接收到客戶端發(fā)送的多條以k為數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)時(shí),所述服務(wù)器按照接收數(shù)據(jù)的順序同步數(shù)據(jù)。

基于與上述方法同樣的申請(qǐng)構(gòu)思,本發(fā)明提出了一種數(shù)據(jù)同步裝置,如圖6所示,所述數(shù)據(jù)同步裝置位于第一終端設(shè)備,應(yīng)用于包括所述第一終端設(shè)備和多個(gè)第二終端設(shè)備的系統(tǒng)中,其中,所述第一終端設(shè)備和所述第二終端設(shè)備的時(shí)間是同步的,所述數(shù)據(jù)同步裝置包括:

添加模塊61,當(dāng)所述第一終端設(shè)備接收到數(shù)據(jù)時(shí),用于將接收到所述數(shù)據(jù)的時(shí)間戳添加到所述數(shù)據(jù)中;

發(fā)送模塊62,用于將添加有所述時(shí)間戳的所述數(shù)據(jù)發(fā)送給所述第二終端設(shè)備,并保存添加有所述時(shí)間戳的所述數(shù)據(jù);

接收模塊63,用于接收所述第二終端設(shè)備根據(jù)添加有所述時(shí)間戳的所述數(shù)據(jù)反饋的數(shù)據(jù),以使所述第一終端設(shè)備中的同步模塊根據(jù)自身保存的添加有所述時(shí)間戳的所述數(shù)據(jù)和所述反饋的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

所述第一終端設(shè)備和所述第二終端中相同的數(shù)據(jù)具有相同的數(shù)據(jù)標(biāo)識(shí);

所述反饋的數(shù)據(jù)是所述第二終端設(shè)備根據(jù)具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)確定的時(shí)間戳最大的數(shù)據(jù)。

所述同步模塊具體用于:

判斷具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的數(shù)目之和是否大于閾值;

當(dāng)大于所述閾值時(shí),確定出具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)中最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù);

根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

所述添加模塊還用于為保存添加有所述時(shí)間戳的所述數(shù)據(jù)設(shè)定生命周期;

所述裝置還包括:

刪除模塊,當(dāng)所述同步模塊在所述生命周期內(nèi)判斷出具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的數(shù)目之和不大于所述閾值時(shí),用于刪除具有相同所述數(shù)據(jù)標(biāo)識(shí) 的數(shù)據(jù)。

具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)中還攜帶有同步類型;

所述同步模塊還具體用于:

當(dāng)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的所述同步類型是同步數(shù)據(jù)時(shí),根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步;

當(dāng)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的所述同步類型是同步刪除數(shù)據(jù)時(shí),刪除最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的數(shù)據(jù)值,并根據(jù)刪除所述數(shù)據(jù)值的最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

本發(fā)明中當(dāng)?shù)谝唤K端設(shè)備接收到數(shù)據(jù)時(shí),在所述數(shù)據(jù)中添加時(shí)間戳并保存,然后將添加有時(shí)間戳的數(shù)據(jù)發(fā)送給第二終端設(shè)備,所述第一終端設(shè)備接收所述第二終端設(shè)備根據(jù)添加有所述時(shí)間戳的所述數(shù)據(jù)反饋的數(shù)據(jù),并根據(jù)自身保存的添加有所述時(shí)間戳的所述數(shù)據(jù)和所述反饋的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,本發(fā)明在不借助第三方設(shè)備和選舉發(fā)送數(shù)據(jù)設(shè)備的情況下實(shí)現(xiàn)了終端設(shè)備集群的數(shù)據(jù)同步,降低了數(shù)據(jù)同步時(shí)的成本,并且集群中的終端設(shè)備是根據(jù)自身得到的數(shù)據(jù)來(lái)進(jìn)行同步,保證了數(shù)據(jù)同步時(shí)的可靠性。

基于與上述方法同樣的申請(qǐng)構(gòu)思,本發(fā)明還提出了一種數(shù)據(jù)同步裝置,具體如圖7所示,所述數(shù)據(jù)同步裝置位于第二終端設(shè)備,應(yīng)用于包括第一終端設(shè)備和多個(gè)所述第二終端設(shè)備的系統(tǒng)中,其中,所述第一終端設(shè)備和所述第二終端設(shè)備的時(shí)間是同步的,所述數(shù)據(jù)同步裝置包括:

接收模塊71,用于接收所述第一終端設(shè)備發(fā)送的添加有時(shí)間戳的數(shù)據(jù)和其他第二終端設(shè)備發(fā)送的根據(jù)所述添加有時(shí)間戳的數(shù)據(jù)反饋的數(shù)據(jù);

同步模塊72,用于根據(jù)添加有時(shí)間戳的數(shù)據(jù)和所述反饋的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步;

其中,所述時(shí)間戳是所述第一終端設(shè)備根據(jù)接收到所述數(shù)據(jù)的時(shí)間確定的。

所述第一終端設(shè)備和所述第二終端中相同的數(shù)據(jù)具有相同的數(shù)據(jù)標(biāo)識(shí);

所述反饋的數(shù)據(jù)是其他所述第二終端設(shè)備根據(jù)具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)確定的時(shí)間戳最大的數(shù)據(jù)。

所述同步模塊具體用于:

判斷具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的數(shù)目之和是否大于閾值;

當(dāng)大于所述閾值時(shí),確定出具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)中最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù);

根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

所述添加有時(shí)間戳的數(shù)據(jù)中攜帶有所述第一終端設(shè)備為所述數(shù)據(jù)設(shè)定生命周期;

所述裝置還包括:

刪除模塊,當(dāng)所述同步模塊在所述生命周期內(nèi)判斷出具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)的數(shù)目之和不大于所述閾值時(shí),用于刪除具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)。

具有相同所述數(shù)據(jù)標(biāo)識(shí)的數(shù)據(jù)中還攜帶有同步類型;

所述同步模塊還具體用于:

當(dāng)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的所述同步類型是同步數(shù)據(jù)時(shí),根據(jù)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步;

當(dāng)最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的所述同步類型是同步刪除數(shù)據(jù)時(shí),刪除最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)中的數(shù)據(jù)值,并根據(jù)刪除所述數(shù)據(jù)值的最大時(shí)間戳對(duì)應(yīng)的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

所述第二終端設(shè)備還包括:

發(fā)送模塊,在所述接收模塊接收到所述第一終端設(shè)備發(fā)送的添加有時(shí)間戳的數(shù)據(jù)后,用于將與所述添加有時(shí)間戳的數(shù)據(jù)的所述數(shù)據(jù)標(biāo)識(shí)相同的數(shù)據(jù)中時(shí)間戳最大的數(shù)據(jù)發(fā)送給所述第一終端設(shè)備,以使所述第一終端設(shè)備根據(jù)所述時(shí)間戳最大的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步。

本發(fā)明中當(dāng)?shù)谝唤K端設(shè)備接收到數(shù)據(jù)時(shí),在所述數(shù)據(jù)中添加時(shí)間戳并保存,然后將添加有時(shí)間戳的數(shù)據(jù)發(fā)送給第二終端設(shè)備,所述第一終端設(shè)備接收所述第二終端設(shè)備根據(jù)添加有所述時(shí)間戳的所述數(shù)據(jù)反饋的數(shù)據(jù),并根據(jù)自身保存的添加有所述時(shí)間戳的所述數(shù)據(jù)和所述反饋的數(shù)據(jù)進(jìn)行數(shù)據(jù)同步,本發(fā)明在不借助第三方設(shè)備和選舉發(fā)送數(shù)據(jù)設(shè)備的情況下實(shí)現(xiàn)了終端設(shè)備集群的數(shù)據(jù)同步,降低了數(shù)據(jù)同步時(shí)的成本,并且集群中的終端設(shè)備是根據(jù)自身得到的數(shù)據(jù)來(lái)進(jìn)行同步,保證了數(shù)據(jù)同步時(shí)的可靠性。

本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可 讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:rom、ram、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。

以上所描述的裝置實(shí)施例僅僅是示意性的,其中作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到至少兩個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況下,即可以理解并實(shí)施。

最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1