本發明涉及網絡技術領域,尤其涉及一種數據的同步方法和裝置。
背景技術:
在現有技術中,為了實現服務器集群中數據的一致性,提出了以下兩種解決方案:
如圖1所示的方案一:在服務器集群中增加一個配置中心,當其中一個服務器(發布者)獲取到數據并要將所述數據同步到其他服務器(訂閱者)中時,所述服務器將所述數據發送到所述配置中心,有所述配置中心向其他服務器發送所述數據,進而使其他服務器根據所述數據進行同步。
如圖2所示的方案二:所述服務器集群通過選舉算法選舉出一個發布者master,其他服務器為訂閱者,選擇成功后,當需要讓所述服務器集群同步一個數據時,由所述master獲取所述數據,再由所述master向訂閱者發送需要同步的數據,以使所述訂閱者進行數據同步,在訂閱者同步成功后向master返回同步成功的消息,當所述master宕機后,所述服務器集群需要重進選舉master。
在實現本發明的過程中,發明人發現現有技術至少存在如下問題:
方案一在同步數據時依賴第三方設備,部署麻煩,可靠性不高,而方案二中如果集群中的服務器數量較大時,訂閱者返回的同步成功的消息數量也就會越多,進而使得數據同步時的成本大大增加,并且在master宕機后,重新選舉時也會增加數據同步時的成本。
技術實現要素:
本發明提供一種數據的同步方法和裝置,用于解決現有技術中依賴第三方設備,部署麻煩,可靠性不高的問題;
本發明提供一種數據的同步方法和裝置,還用于解決現有技術中數據同步成本較高的問題。
本發明提供一種數據的同步方法,所述方法應用于包括第一終端設備和第二終端設備的系統中,其中,所述第一終端設備和所述第二終端設備的時間是同步的,所述第二終端設備為多個,所述方法包括:
當第一終端設備接收到數據時,所述第一終端設備將接收到所述數據的時間戳添加到所述數據中;
所述第一終端設備將添加有所述時間戳的所述數據發送給所述第二終端設備,并保存添加有所述時間戳的所述數據;
所述第一終端設備接收所述第二終端設備根據添加有所述時間戳的所述數據反饋的數據,以使所述第一終端設備根據自身保存的添加有所述時間戳的所述數據和所述反饋的數據進行數據同步。
所述第一終端設備和所述第二終端中相同的數據具有相同的數據標識;
所述反饋的數據是所述第二終端設備根據具有相同所述數據標識的數據確定的時間戳最大的數據。
所述第一終端設備根據自身保存的添加有所述時間戳的所述數據和所述反饋的數據進行數據同步,具體為:
所述第一終端設備判斷具有相同所述數據標識的數據的數目之和是否大于閾值;
當大于所述閾值時,所述第一終端設備確定出具有相同所述數據標識的數據中最大時間戳對應的數據;
所述第一終端設備根據最大時間戳對應的數據進行數據同步。
所述第一終端設備為保存添加有所述時間戳的所述數據設定生命周期,當所述第一終端設備在所述生命周期內判斷出具有相同所述數據標識的數據的數目之和不大于所述閾值時,所述第一終端設備刪除具有相同所述數據標識的數據。
具有相同所述數據標識的數據中還攜帶有同步類型;
所述第一終端設備根據最大時間戳對應的數據進行數據同步,具體為:
當最大時間戳對應的數據中的所述同步類型是同步數據時,所述第一終端設備根據最大時間戳對應的數據進行數據同步;
當最大時間戳對應的數據中的所述同步類型是同步刪除數據時,所述第一終端刪除最大時間戳對應的數據中的數據值,并根據刪除所述數據值的最 大時間戳對應的數據進行數據同步。
一種數據同步裝置,所述數據同步裝置位于第一終端設備,應用于包括所述第一終端設備和多個第二終端設備的系統中,其中,所述第一終端設備和所述第二終端設備的時間是同步的,所述數據同步裝置包括:
添加模塊,當所述第一終端設備接收到數據時,用于將接收到所述數據的時間戳添加到所述數據中;
發送模塊,用于將添加有所述時間戳的所述數據發送給所述第二終端設備,并保存添加有所述時間戳的所述數據;
接收模塊,用于接收所述第二終端設備根據添加有所述時間戳的所述數據反饋的數據,以使所述第一終端設備中的同步模塊根據自身保存的添加有所述時間戳的所述數據和所述反饋的數據進行數據同步。
所述第一終端設備和所述第二終端中相同的數據具有相同的數據標識;
所述反饋的數據是所述第二終端設備根據具有相同所述數據標識的數據確定的時間戳最大的數據。
所述同步模塊具體用于:
判斷具有相同所述數據標識的數據的數目之和是否大于閾值;
當大于所述閾值時,確定出具有相同所述數據標識的數據中最大時間戳對應的數據;
根據最大時間戳對應的數據進行數據同步。
所述添加模塊還用于為保存添加有所述時間戳的所述數據設定生命周期;
所述裝置還包括:
刪除模塊,當所述同步模塊在所述生命周期內判斷出具有相同所述數據標識的數據的數目之和不大于所述閾值時,用于刪除具有相同所述數據標識的數據。
具有相同所述數據標識的數據中還攜帶有同步類型;
所述同步模塊還具體用于:
當最大時間戳對應的數據中的所述同步類型是同步數據時,根據最大時間戳對應的數據進行數據同步;
當最大時間戳對應的數據中的所述同步類型是同步刪除數據時,刪除最大時間戳對應的數據中的數據值,并根據刪除所述數據值的最大時間戳對應 的數據進行數據同步。
一種數據同步方法,所述方法應用于包括第一終端設備和第二終端設備的系統中,其中,所述第一終端設備和所述第二終端設備的時間是同步的,所述第二終端設備為多個,所述方法包括:
所述第二終端設備接收所述第一終端設備發送的添加有時間戳的數據和其他第二終端設備發送的根據所述添加有時間戳的數據反饋的數據;
所述第二終端設備根據添加有時間戳的數據和所述反饋的數據進行數據同步;
其中,所述時間戳是所述第一終端設備根據接收到所述數據的時間確定的。
所述第一終端設備和所述第二終端中相同的數據具有相同的數據標識;
所述反饋的數據是其他所述第二終端設備根據具有相同所述數據標識的數據確定的時間戳最大的數據。
所述第二終端設備根據添加有時間戳的數據和所述反饋的數據進行數據同步,具體為:
所述第二終端設備判斷具有相同所述數據標識的數據的數目之和是否大于閾值;
當大于所述閾值時,所述第二終端設備確定出具有相同所述數據標識的數據中最大時間戳對應的數據;
所述第二終端設備根據最大時間戳對應的數據進行數據同步。
所述添加有時間戳的數據中攜帶有所述第一終端設備為所述數據設定生命周期,當所述第二終端設備在所述生命周期內判斷出具有相同所述數據標識的數據的數目之和不大于所述閾值時,所述第二終端設備刪除具有相同所述數據標識的數據。
具有相同所述數據標識的數據中還攜帶有同步類型;
所述第二終端設備根據最大時間戳對應的數據進行數據同步,具體為:
當最大時間戳對應的數據中的所述同步類型是同步數據時,所述第二終端設備根據最大時間戳對應的數據進行數據同步;
當最大時間戳對應的數據中的所述同步類型是同步刪除數據時,所述第二終端刪除最大時間戳對應的數據中的數據值,并根據刪除所述數據值的最 大時間戳對應的數據進行數據同步。
在所述第二終端設備接收到所述第一終端設備發送的添加有時間戳的數據后,所述第二終端設備將與所述添加有時間戳的數據的所述數據標識相同的數據中時間戳最大的數據發送給所述第一終端設備,以使所述第一終端設備根據所述時間戳最大的數據進行數據同步。
一種數據同步裝置,所述數據同步裝置位于第二終端設備,應用于包括第一終端設備和多個所述第二終端設備的系統中,其中,所述第一終端設備和所述第二終端設備的時間是同步的,所述數據同步裝置包括:
接收模塊,用于接收所述第一終端設備發送的添加有時間戳的數據和其他第二終端設備發送的根據所述添加有時間戳的數據反饋的數據;
同步模塊,用于根據添加有時間戳的數據和所述反饋的數據進行數據同步;
其中,所述時間戳是所述第一終端設備根據接收到所述數據的時間確定的。
所述第一終端設備和所述第二終端中相同的數據具有相同的數據標識;
所述反饋的數據是其他所述第二終端設備根據具有相同所述數據標識的數據確定的時間戳最大的數據。
所述同步模塊具體用于:
判斷具有相同所述數據標識的數據的數目之和是否大于閾值;
當大于所述閾值時,確定出具有相同所述數據標識的數據中最大時間戳對應的數據;
根據最大時間戳對應的數據進行數據同步。
所述添加有時間戳的數據中攜帶有所述第一終端設備為所述數據設定生命周期;
所述裝置還包括:
刪除模塊,當所述同步模塊在所述生命周期內判斷出具有相同所述數據標識的數據的數目之和不大于所述閾值時,用于刪除具有相同所述數據標識的數據。
具有相同所述數據標識的數據中還攜帶有同步類型;
所述同步模塊還具體用于:
當最大時間戳對應的數據中的所述同步類型是同步數據時,根據最大時間戳對應的數據進行數據同步;
當最大時間戳對應的數據中的所述同步類型是同步刪除數據時,刪除最大時間戳對應的數據中的數據值,并根據刪除所述數據值的最大時間戳對應的數據進行數據同步。
所述裝置還包括:
發送模塊,在所述接收模塊接收到所述第一終端設備發送的添加有時間戳的數據后,用于將與所述添加有時間戳的數據的所述數據標識相同的數據中時間戳最大的數據發送給所述第一終端設備,以使所述第一終端設備根據所述時間戳最大的數據進行數據同步。
本發明中當第一終端設備接收到數據時,在所述數據中添加時間戳并保存,然后將添加有時間戳的數據發送給第二終端設備,所述第一終端設備接收所述第二終端設備根據添加有所述時間戳的所述數據反饋的數據,并根據自身保存的添加有所述時間戳的所述數據和所述反饋的數據進行數據同步,本發明在不借助第三方設備和選舉發送數據設備的情況下實現了終端設備集群的數據同步,降低了數據同步時的成本,并且集群中的終端設備是根據自身得到的數據來進行同步,保證了數據同步時的可靠性。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為現有技術中的一種依靠第三方設備進行數據同步的流程示意圖;
圖2為現有技術中的一種通過選舉發布者進行數據同步的流程示意圖;
圖3為本發明實施例中的一種數據的同步方法流程圖之一;
圖4為本發明實施例中的一種數據的同步方法流程圖之二;
圖5為本發明實施例中的一種數據發布時的同步方法流程示意圖;
圖6為本發明實施例中的一種數據同步裝置結構示意圖之一;
圖7為本發明實施例中的一種數據同步裝置結構示意圖之二。
具體實施方式
為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
在現有技術中,由于依靠第三方設備來實現同步數據的方案存在部署麻煩,可靠性不高的缺陷,依靠選舉數據發布者的方案存在增加數據同步成本的缺陷,因此本申請提出了一種數據的同步方法,具體如圖3所示,所述方法應用于包括第一終端設備和第二終端設備的系統中,其中,所述第一終端設備和所述第二終端設備的時間是同步的,所述第二終端設備為多個,所述方法包括以下步驟:
步驟301,當第一終端設備接收到數據時,所述第一終端設備將接收到所述數據的時間戳添加到所述數據中。
具體的,所述第一終端設備和所述第二終端的時間是同步的是為了實現集群中的終端設備時間上的統一性,保證在第一終端設備為數據添加時間戳時具有相同的時間基礎,進而保證了在集群中的終端設備能夠正確的確定出相同的且時間戳最大的數據。其中,所述第一終端設備為接收數據的設備,所述第一終端設備應不是集群中的一個固定設備,是根據集群中接收數據的設備確定的,所述數據是集群之外的設備發送的。例如:集群中有3個終端設備,分別為設備1、設備2和設備3,當設備1接收到客戶端發送的數據時,此時設備1為第一終端設備,如果是設備2接收到客戶端發送的數據時,此時設備2為第一終端設備。同理,第二終端設備是集群中除第一終端設備之外的其他終端設備,所述第二終端設備是集群中接收所述第一終端設備發送的數據的設備,例如:集群中有3個終端設備,分別為設備1、設備2和設備3,當設備1為第一終端設備時,設備2和設備3為第二終端設備,當設備2為第一終端設備時,設備1和設備3為第二終端設備。
步驟302,所述第一終端設備將添加有所述時間戳的所述數據發送給所述第二終端設備,并保存添加有所述時間戳的所述數據。
具體的,所述第一終端設備保存添加有所述時間戳的所述數據是為了在后續進行數據同步。
步驟303,所述第一終端設備接收所述第二終端設備根據添加有所述時間戳的所述數據反饋的數據,以使所述第一終端設備根據自身保存的添加有所述時間戳的所述數據和所述反饋的數據進行數據同步。
其中,所述第一終端設備和所述第二終端中相同的數據具有相同的數據標識;
所述反饋的數據是所述第二終端設備根據具有相同所述數據標識的數據確定的時間戳最大的數據。
具體的,在集群中的終端設備接收到的集群之外的設備發送的數據中攜帶有數據標識,并且集群之外的設備發送的同一數據的數據標識是相同的,其中,同一數據可能在不同時間發送,集群是根據接收到的數據進行同步的,因此集群中的設備中可能存在與當前接收到的數據的數據標識相同的數據,所述存在數據標識相同的數據中同樣存在集群中的設備接收到所述數據的時間戳。
所述第二終端設備中可能存在與所述數據相同的數據標識,因此在所述第二終端設備接收到添加有所述時間戳的所述數據時,所述第二終端設備需要根據添加所述時間戳的所述數據的數據標識確定出所述第二終端中存在相同數據標識的數據,然后,所述第二終端設備根據具有相同數據標識的數據確定出時間戳最大的數據,此時確定出的數據為集群最新接收到的數據,需要以此為數據同步的依據,并將確定出的時間戳最大的數據作為反饋數據反饋給所述第一終端設備,在所述第一終端設備接收到集群中的第二終端設備反饋的時間戳最大的數據后,所述第一終端設備就可以根據反饋的數據和自身保存的添加有所述時間戳的所述數據確定出最新的數據,以使所述第一終端設備根據所述最新的數據進行數據同步。
所述第一終端設備根據自身保存的添加有所述時間戳的所述數據和所述反饋的數據進行數據同步,具體為:
所述第一終端設備判斷具有相同所述數據標識的數據的數目之和是否大于閾值;
當大于所述閾值時,所述第一終端設備確定出具有相同所述數據標識的 數據中最大時間戳對應的數據;
所述第一終端設備根據最大時間戳對應的數據進行數據同步。
具體的,所述閾值根據實際情況確定,例如:所述閾值為集群中的終端設備數目的一半,當所述第一終端設備確定出的具有相同所述數據標識的數據的數目表示集群中就有多少個終端設備接收到了所述數據,當所述數目超過閾值時表示集群達到了數據同步的要求,此時所述第一終端設備就可以根據自身中的最新的所述數據進行數據同步。
所述第一終端設備為保存添加有所述時間戳的所述數據設定生命周期,當所述第一終端設備在所述生命周期內判斷出具有相同所述數據標識的數據的數目之和不大于所述閾值時,所述第一終端設備刪除具有相同所述數據標識的數據。
具體的,數據同步時必須在一定時間內完成數據同步,否則就失去了數據同步的意義,因此,在所述第一終端設備在為所述數據添加時間戳時還要為所述數據設定生命周期,所述生命周期的長短根據實際情況確定,當所述第一終端設備在所述生命周期內沒有收到超過所述閾值的具有相同數據標識的數據時表示此次數據同步失敗,為了保證所述第一終端設備的資源不被浪費,因此所述第一終端設備刪除具有相同所述數據標識的數據。
具有相同所述數據標識的數據中還攜帶有同步類型;
所述第一終端設備根據最大時間戳對應的數據進行數據同步,具體為:
當最大時間戳對應的數據中的所述同步類型是同步數據時,所述第一終端設備根據最大時間戳對應的數據進行數據同步;
當最大時間戳對應的數據中的所述同步類型是同步刪除數據時,所述第一終端刪除最大時間戳對應的數據中的數據值,并根據刪除所述數據值的最大時間戳對應的數據進行數據同步。
具體的,在數據同步時是為了讓集群中的終端設備的數據統一,而所述第一終端設備接收到的數據進行同步時,有時是為了增加數據,而有時是為了刪除數據,如果所述第一終端設備確定出的最大時間戳對應的數據的同步類型是同步數據時,表示是為了增加數據,所述第一終端設備根據最大時間戳對應的數據進行數據同步;如果所述第一終端設備確定出的最大時間戳對應的數據的同步類型是刪除數據時,表示是為了撤銷所述數據,所述第一終 端設備根據最大時間戳對應的數據進行同步時刪除最大時間戳對應的數據中的數據值,并根據刪除所述數據值的最大時間戳對應的數據進行數據同步,其中在刪除所述數據時,所述第一終端設備可以只刪除所述數據本身,保留所述數據對應的時間戳、同步類型和數據標識等信息,以供后續查詢。
當所述第一終端設備中接收集群之外的設備發送的至少一個具有相同的數據標識的數據時。所述第一終端設備根據接收數據的先后順序進行數據同步。
本發明中當第一終端設備接收到數據時,在所述數據中添加時間戳并保存,然后將添加有時間戳的數據發送給第二終端設備,所述第一終端設備接收所述第二終端設備根據添加有所述時間戳的所述數據反饋的數據,并根據自身保存的添加有所述時間戳的所述數據和所述反饋的數據進行數據同步,本發明在不借助第三方設備和選舉發送數據設備的情況下實現了終端設備集群的數據同步,降低了數據同步時的成本,并且集群中的終端設備是根據自身得到的數據來進行同步,保證了數據同步時的可靠性。
本發明還提供了一種數據的同步方法,具體如圖4所示,所述方法應用于包括第一終端設備和第二終端設備的系統中,其中,所述第一終端設備和所述第二終端設備的時間是同步的,所述第二終端設備為多個,所述方法包括以下步驟:
步驟401,所述第二終端設備接收所述第一終端設備發送的添加有時間戳的數據和其他第二終端設備發送的根據所述添加有時間戳的數據反饋的數據。
其中,所述時間戳是所述第一終端設備根據接收到所述數據的時間確定的。
所述第一終端設備和所述第二終端中相同的數據具有相同的數據標識;
所述反饋的數據是其他所述第二終端設備根據具有相同所述數據標識的數據確定的時間戳最大的數據。
例如:終端設備集群中包括:設備1、設備2和設備3,其中所述設備1為第一終端設備,設備2和設備3為第二終端設備,在所述設備1接收到數據時,所述設備1在將添加有時間戳的數據發送給所述設備2時還發送給了設備3,此時,所述設備2為所述第二終端設備,所述設備3為其他所述第 二終端設備,由于設備3中可能存在具有相同數據標識的所述數據,為了保證設備2在進行數據同步時以使最新的數據進行更新的,所述設備3還要將確定出其自身中具有相同所述數據標識的數據的時間戳最大的數據發送給所述設備2,以使所述設備2可以根據最新的數據進行數據同步。同理,在所述設備2接收到設備發送的數據時,所述設備2也要確定出自身中具有相同數據標識的數據的時間戳最大的數據發送給所述設備3,以使所述設備3也可以根據最新的數據進行數據同步。
步驟402,所述第二終端設備根據添加有時間戳的數據和所述反饋的數據進行數據同步。
具體的,在所述第二終端設備在接收到添加有時間戳的數據和其他第二終端設備反饋的數據后,此時所述第二終端設備中包含了集群中其他所有終端設備反饋的具有所述相同數據標識的數據,此時如果所述第二終端設備中還存在其他具有相同數據標識的數據,所述第二終端設備在添加有時間戳的數據、其他第二終端設備反饋的數據和所述其他具有相同數據標識的數據中確定出時間戳最大的數據,以使所述第二終端設備根據所述時間戳最大的數據進行數據同步。同理,其他所述第二終端設備也根據上述過程進行數據同步。
所述第二終端設備根據添加有時間戳的數據和所述反饋的數據進行數據同步,具體為:
所述第二終端設備判斷具有相同所述數據標識的數據的數目之和是否大于閾值;
當大于所述閾值時,所述第二終端設備確定出具有相同所述數據標識的數據中最大時間戳對應的數據;
所述第二終端設備根據最大時間戳對應的數據進行數據同步。
具體的,當所述第二終端設備確定出的具有相同所述數據標識的數據的數目表示集群中就有多少個終端設備接收到了所述數據,當所述數目超過閾值時表示集群達到了數據同步的要求,此時所述第二終端設備就可以根據自身中的最新的所述數據進行數據同步。
所述添加有時間戳的數據中攜帶有所述第一終端設備為所述數據設定生命周期,當所述第二終端設備在所述生命周期內判斷出具有相同所述數據標 識的數據的數目之和不大于所述閾值時,所述第二終端設備刪除具有相同所述數據標識的數據。
具體的,數據同步時必須在一定時間內完成數據同步,否則就失去了數據同步的意義,因此,在所述第一終端設備在為所述數據添加時間戳時還要為所述數據設定生命周期,所述生命周期的長短根據實際情況確定,當所述第二終端設備在所述生命周期內沒有收到超過所述閾值的具有相同數據標識的數據時表示此次數據同步失敗,為了保證所述第二終端設備的資源不被浪費,因此所述第一終端設備刪除具有相同所述數據標識的數據。
具有相同所述數據標識的數據中還攜帶有同步類型;
所述第二終端設備根據最大時間戳對應的數據進行數據同步,具體為:
當最大時間戳對應的數據中的所述同步類型是同步數據時,所述第二終端設備根據最大時間戳對應的數據進行數據同步;
當最大時間戳對應的數據中的所述同步類型是同步刪除數據時,所述第二終端刪除最大時間戳對應的數據中的數據值,并根據刪除所述數據值的最大時間戳對應的數據進行數據同步。
具體的,在數據同步時是為了讓集群中的終端設備的數據統一,而所述第二終端設備在進行數據同步時,有時是為了增加數據,而有時是為了刪除數據,如果所述第二終端設備確定出的最大時間戳對應的數據的同步類型是同步數據時,表示是為了增加數據,所述第二終端設備根據最大時間戳對應的數據進行數據同步;如果所述第二終端設備確定出的最大時間戳對應的數據的同步類型是刪除數據時,表示是為了撤銷所述數據,所述第二終端設備根據最大時間戳對應的數據進行同步時刪除最大時間戳對應的數據中的數據值,并根據刪除所述數據值的最大時間戳對應的數據進行數據同步,,其中在刪除所述數據時,所述第二終端設備可以只刪除所述數據本身,保留所述數據對應的時間戳、同步類型和數據標識等信息,以供后續查詢。
在所述第二終端設備接收到所述第一終端設備發送的添加有時間戳的數據后,所述第二終端設備將與所述添加有時間戳的數據的所述數據標識相同的數據中時間戳最大的數據發送給所述第一終端設備,以使所述第一終端設備根據所述時間戳最大的數據進行數據同步。
本發明中當第一終端設備接收到數據時,在所述數據中添加時間戳并保 存,然后將添加有時間戳的數據發送給第二終端設備,所述第一終端設備接收所述第二終端設備根據添加有所述時間戳的所述數據反饋的數據,并根據自身保存的添加有所述時間戳的所述數據和所述反饋的數據進行數據同步,本發明在不借助第三方設備和選舉發送數據設備的情況下實現了終端設備集群的數據同步,降低了數據同步時的成本,并且集群中的終端設備是根據自身得到的數據來進行同步,保證了數據同步時的可靠性。
為了進一步闡述本發明的技術思想,現結合具體的應用場景,對本申請的技術方案進行說明,具體的,系統中包括3臺服務器:服務器a、服務器b、服務器c,且所述3臺服務器的時間是同步的,其中生成同步數據的終端為客戶端,并且定義所述同步數據的結構:d={k,v,s,t},k表示數據標識,v表示數據值,s表示數據的狀態(數據狀態有:sync表示正在同步,updated表示同步完成,zombie表示刪除數據值三種狀態,t表示服務器接收所述數據的時間戳,時間戳以毫秒為單位,并且,每臺服務器的存儲分為三部分:暫存區:用于存放同步數據,此時的同步數據的狀態為sync,生命周期為i;數據區:里面存在已經生效的數據,此時的數據狀態為updated,可以被客戶端讀取使用;待刪區:用于存放刪除通知,此時數據的狀態為zombie,生命周期為i,規定閾值為1.5。具體過程如圖5所示。
客戶端發布了一個表示為k的數據,并選擇發送服務器a中,如果此時所述數據中數據狀態s和時間戳t為空,所述服務器a在接收到所述數據后,根據接收所述數據的時間在t中添加時間戳,并將s設置為sync,并向包括自己在內服務器集群發送所述數據,當服務器b收到所述數據后,在暫存區中查找以k為數據標識的其他數據,如果所述其他數據中的時間戳小于所述數據,那么所述服務器b忽略所述數據,如果大于,所述服務器b用所述數據替換掉所述其他數據,并將所述數據發送給服務器a和服務器c,同理服務器c同樣需要完成上述過程。此時服務器b確定暫存區中數據標識為k的數據的個數為2,超過閾值,所述服務器b選取出暫存區中以k為標識時間戳最大的數據,并將所述時間戳最大的數據移動到數據區中,并將s設置為updated,如果數據區中存在以k為數據標識的數據,則用所述時間戳最大的數據覆蓋所述數據區中以k為數據標識的數據。如果在所述數據的生命周期內服務器b確定數據標識為k的數據小于所述閾值,則不執行移動操作,并 刪除服務器b中以k為數據標識的所有數據,同理服務器c同樣需要完成上述過程。
在完成上述過程后,服務器a中存在至少3條以k為數據標識的數據,所述服務器a確定出時間戳最大的數據后,將所述時間戳最大的數據移動到數據區,并將s設置為updated,如果數據區中存在以k為數據標識的數據,則用所述時間戳最大的數據覆蓋所述數據區中以k為數據標識的數據。如果在所述數據的生命周期內服務器a確定數據標識為k的數據小于所述閾值,則不執行移動操作,并刪除服務器a中以k為數據標識的所有數據。
由于服務器b和服務器c是根據服務器a發送的數據進行同步和反饋的,因此當其中一個服務器中確定出數據標識為k的數據的個數小于所述閾值時,其他服務器中以k為數據標識的數據的個數也小于所述閾值,因此,當一個服務器刪除以k為數據標識的數據時,其他服務器也在刪除以k為數據標識的數據。并且服務器a在刪除以k為數據標識的數據后,還要向客戶端反饋同步失敗的消息。
客戶端發布了一個表示為k的數據,并選擇發送服務器a中,如果此時所述數據中數據狀態s為zombie,時間戳t為空時,所述服務器a在接收到所述數據后,根據接收所述數據的時間在t中添加時間戳,然后所述服務器a向包括自己在內服務器集群發送所述數據,當服務器b收到所述數據后,在暫存區中查找以k為數據標識的其他數據,如果所述其他數據中的時間戳小于所述數據,那么所述服務器b忽略所述數據,如果大于,所述服務器b用所述數據替換掉所述其他數據,并將所述數據發送給服務器a和服務器c,同樣需要完成上述過程。此時服務器b確定暫存區中數據標識為k的數據的個數為2,超過閾值,所述服務器b選取出暫存區中以k為標識時間戳最大的數據,并將所述時間戳最大的數據移動到待刪區中,并將所述數據中s對應的數據值刪除,如果待刪區中存在以k為數據標識的數據,則用所述時間戳最大的數據覆蓋所述待刪區中以k為數據標識的數據。如果在所述數據的生命周期內服務器b確定數據標識為k的數據小于所述閾值,則不執行移動操作,并刪除服務器b中以k為數據標識的所有數據,同理服務器c同樣需要完成上述過程。
在完成上述過程后,服務器a中存在至少3條以k為數據標識的數據, 所述服務器a確定出時間戳最大的數據后,將所述時間戳最大的數據移動到待刪區,如果待刪區中存在以k為數據標識的數據,則用所述時間戳最大的數據覆蓋所述數據區中以k為數據標識的數據。如果在所述數據的生命周期內服務器a確定數據標識為k的數據小于所述閾值,則不執行移動操作,并刪除服務器a中以k為數據標識的所有數據。
如果服務器a接收到客戶端發送的多條以k為數據標識的數據時,所述服務器按照接收數據的順序同步數據。
基于與上述方法同樣的申請構思,本發明提出了一種數據同步裝置,如圖6所示,所述數據同步裝置位于第一終端設備,應用于包括所述第一終端設備和多個第二終端設備的系統中,其中,所述第一終端設備和所述第二終端設備的時間是同步的,所述數據同步裝置包括:
添加模塊61,當所述第一終端設備接收到數據時,用于將接收到所述數據的時間戳添加到所述數據中;
發送模塊62,用于將添加有所述時間戳的所述數據發送給所述第二終端設備,并保存添加有所述時間戳的所述數據;
接收模塊63,用于接收所述第二終端設備根據添加有所述時間戳的所述數據反饋的數據,以使所述第一終端設備中的同步模塊根據自身保存的添加有所述時間戳的所述數據和所述反饋的數據進行數據同步。
所述第一終端設備和所述第二終端中相同的數據具有相同的數據標識;
所述反饋的數據是所述第二終端設備根據具有相同所述數據標識的數據確定的時間戳最大的數據。
所述同步模塊具體用于:
判斷具有相同所述數據標識的數據的數目之和是否大于閾值;
當大于所述閾值時,確定出具有相同所述數據標識的數據中最大時間戳對應的數據;
根據最大時間戳對應的數據進行數據同步。
所述添加模塊還用于為保存添加有所述時間戳的所述數據設定生命周期;
所述裝置還包括:
刪除模塊,當所述同步模塊在所述生命周期內判斷出具有相同所述數據標識的數據的數目之和不大于所述閾值時,用于刪除具有相同所述數據標識 的數據。
具有相同所述數據標識的數據中還攜帶有同步類型;
所述同步模塊還具體用于:
當最大時間戳對應的數據中的所述同步類型是同步數據時,根據最大時間戳對應的數據進行數據同步;
當最大時間戳對應的數據中的所述同步類型是同步刪除數據時,刪除最大時間戳對應的數據中的數據值,并根據刪除所述數據值的最大時間戳對應的數據進行數據同步。
本發明中當第一終端設備接收到數據時,在所述數據中添加時間戳并保存,然后將添加有時間戳的數據發送給第二終端設備,所述第一終端設備接收所述第二終端設備根據添加有所述時間戳的所述數據反饋的數據,并根據自身保存的添加有所述時間戳的所述數據和所述反饋的數據進行數據同步,本發明在不借助第三方設備和選舉發送數據設備的情況下實現了終端設備集群的數據同步,降低了數據同步時的成本,并且集群中的終端設備是根據自身得到的數據來進行同步,保證了數據同步時的可靠性。
基于與上述方法同樣的申請構思,本發明還提出了一種數據同步裝置,具體如圖7所示,所述數據同步裝置位于第二終端設備,應用于包括第一終端設備和多個所述第二終端設備的系統中,其中,所述第一終端設備和所述第二終端設備的時間是同步的,所述數據同步裝置包括:
接收模塊71,用于接收所述第一終端設備發送的添加有時間戳的數據和其他第二終端設備發送的根據所述添加有時間戳的數據反饋的數據;
同步模塊72,用于根據添加有時間戳的數據和所述反饋的數據進行數據同步;
其中,所述時間戳是所述第一終端設備根據接收到所述數據的時間確定的。
所述第一終端設備和所述第二終端中相同的數據具有相同的數據標識;
所述反饋的數據是其他所述第二終端設備根據具有相同所述數據標識的數據確定的時間戳最大的數據。
所述同步模塊具體用于:
判斷具有相同所述數據標識的數據的數目之和是否大于閾值;
當大于所述閾值時,確定出具有相同所述數據標識的數據中最大時間戳對應的數據;
根據最大時間戳對應的數據進行數據同步。
所述添加有時間戳的數據中攜帶有所述第一終端設備為所述數據設定生命周期;
所述裝置還包括:
刪除模塊,當所述同步模塊在所述生命周期內判斷出具有相同所述數據標識的數據的數目之和不大于所述閾值時,用于刪除具有相同所述數據標識的數據。
具有相同所述數據標識的數據中還攜帶有同步類型;
所述同步模塊還具體用于:
當最大時間戳對應的數據中的所述同步類型是同步數據時,根據最大時間戳對應的數據進行數據同步;
當最大時間戳對應的數據中的所述同步類型是同步刪除數據時,刪除最大時間戳對應的數據中的數據值,并根據刪除所述數據值的最大時間戳對應的數據進行數據同步。
所述第二終端設備還包括:
發送模塊,在所述接收模塊接收到所述第一終端設備發送的添加有時間戳的數據后,用于將與所述添加有時間戳的數據的所述數據標識相同的數據中時間戳最大的數據發送給所述第一終端設備,以使所述第一終端設備根據所述時間戳最大的數據進行數據同步。
本發明中當第一終端設備接收到數據時,在所述數據中添加時間戳并保存,然后將添加有時間戳的數據發送給第二終端設備,所述第一終端設備接收所述第二終端設備根據添加有所述時間戳的所述數據反饋的數據,并根據自身保存的添加有所述時間戳的所述數據和所述反饋的數據進行數據同步,本發明在不借助第三方設備和選舉發送數據設備的情況下實現了終端設備集群的數據同步,降低了數據同步時的成本,并且集群中的終端設備是根據自身得到的數據來進行同步,保證了數據同步時的可靠性。
本領域普通技術人員可以理解:實現上述各方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成。前述的程序可以存儲于一計算機可 讀取存儲介質中。該程序在執行時,執行包括上述各方法實施例的步驟;而前述的存儲介質包括:rom、ram、磁碟或者光盤等各種可以存儲程序代碼的介質。
以上所描述的裝置實施例僅僅是示意性的,其中作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到至少兩個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現本實施例方案的目的。本領域普通技術人員在不付出創造性的勞動的情況下,即可以理解并實施。
最后應說明的是:以上各實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述各實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的范圍。