一種移動終端處理數據沖突的方法和裝置的制造方法
【專利摘要】本發明實施例提供一種移動終端處理數據沖突的方法和裝置,其中方法包括:登錄同一帳號的不同客戶端分別向服務器發送新增修改刪除請求,所述新增修改刪除請求中包含請求數據;如果所述請求數據存在數據沖突,客戶端將所述請求數據的sourceid刪除,并為所述請求數據生成新sourceid;客戶端將具有所述新sourceid的請求數據上傳到服務器上。本發明實施例解決了通過沖突事件處理機制解決了現有技術中多個客戶端修改同一個便簽會丟掉的問題。
【專利說明】
一種移動終端處理數據沖突的方法和裝置
技術領域
[0001]本發明實施例涉及移動終端技術領域,尤其涉及一種移動終端處理數據沖突的方法和裝置。
【背景技術】
[0002]近年來,隨著移動通信技術的飛速發展和移動終端智能化趨勢的加快,人們正走入一個新的移動互聯網時代。多種多樣具備網絡連接能力的移動終端,諸如手機、平板電腦、電紙書等的出現,帶給人們隨時隨地訪問互聯網的便捷。Android的出現,更是將移動終端推向了以應用和數據為主導的時代。今天的移動終端平臺具備了辦公、娛樂、社交等多種功能,其存儲的數據也變得更加豐富,例如圖片、音樂、視頻、動畫等等。
[0003]用戶在享受不同類型移動終端帶來的便捷時,也遇到了多終端存儲的數據統一性管理的問題。多終端數據同步的現有方案之一可以基于SyncML(Synchronizat1n MarkupLanguage)協議進行,SyncML是通用的移動數據同步化協議,可以在兼容的設備、程序及網絡進行數據同步。
[0004]此外,移動終端上的原有同步架構可以處理同步事件,使登錄了一個賬號的移動終端能夠保持數據的同步。
[0005]例如:
[0006]A、B兩個移動終端登錄同一賬號的情況下,
[0007]當A新增一個便簽,同步后,B也會得到這個新增的便簽;
[0008]當A改變一個便簽的內容,同步后,B也會改變這個便簽;
[0009]當A刪除一個便簽,同步后,B也會刪除這個便簽。
[0010]但是有一種場合,當A、B同時修改一個便簽,那情形會是怎樣呢?
[0011]圖1為現有技術中客戶端數據同步的流程示意圖,具體步驟如下:
[0012]客戶端新建一個數據A到服務器,此時A的etag為null;
[0013]服務器處理成功后在服務器保留A和A的etag,給A的etag傳給客戶端;
[0014]客戶端修改A,把A和客戶端A的etag傳給服務器;
[0015]服務器把客戶端傳來的etag和服務器的etag相比較。如果相同修改成功服務器會更新etag,并把新的etag傳給客戶端。如果不同返回錯誤碼412,認為發生了沖突。
[0016]可以看出,數據每一次同步后,服務器都會給這個數據一個特殊字符串etag,該etag代表當前數據在服務器的版本。
[0017]同步數據的時候,數據可能在多個客戶端展現,不同的數據用sourceid來唯一標示。sourceid是在向服務器新增數據的時候,給數據生成的唯一的字符串。服務器也用sourceid來表示一個數據,數據在服務器插入成功后,同時把數據對應的sourceid更新到數據庫中。
[0018]如果兩個客戶端對同一個版本數據比如便簽NI做了修改,移動終端A把NI修改為Nll,移動終端B把NI修改為NI 2。
[0019]如果A請求先到達服務器,根據etag的邏輯,NI的etag和服務器上的etag是相同的,那么服務器上的NI就被修改成了Nll,并且服務器和客戶端A都將更新這個數據的etag。
[0020]于是當第二個客戶端B的請求過來的時候,服務器發現B的etag不一樣,就會認為這是一種沖突請求,那第二個客戶端B的請求會失敗。
[0021]根據原有同步框架的邏輯,B請求失敗后,就會把服務器上的Nll同步到B客戶端,使得B上的NI 2又變成了 NI I。
[0022]這樣,N12這個修改就丟掉了。
[0023]如果兩個客戶端同時修改同一個便簽,會丟掉一個客戶端的修改數據,這對用戶來說是不可接受的。
【發明內容】
[0024]本發明實施例提供一種移動終端處理數據沖突的方法和裝置,通過沖突事件處理機制解決了現有技術中多個客戶端修改同一個便簽會丟掉的問題。
[0025]本發明實施例提供一種移動終端處理數據沖突的方法,包括:
[0026]登錄同一帳號的不同客戶端分別向服務器發送新增修改刪除請求,所述新增修改刪除請求中包含請求數據;
[0027]如果所述請求數據存在數據沖突,客戶端將所述請求數據的sourceid刪除,并為所述請求數據生成新sourceid;
[0028]客戶端將具有所述新sourceid的請求數據上傳到服務器上。
[0029]本發明實施例提供一種用于處理沖突事件的移動終端,包括:
[0030]第一處理模塊,用于向服務器發送新增修改刪除請求,所述新增修改刪除請求中包含請求數據;
[0031]第二處理模塊,用于如果所述請求數據存在數據沖突,將所述請求數據的source id刪除,并為所述請求數據生成新source id;
[0032]第三處理模塊,用于將具有所述新sourceid的請求數據上傳到服務器上。
[0033]和現有技術相比,本發明實施例提供的移動終端處理數據沖突的方法和裝置,通過為存在數據沖突的請求數據重新生成新sourceid,具有新sourceid的請求數據就是一個新的請求數據了,因此不會再存在數據沖突,從而解決了現有技術中多個客戶端修改同一個便簽會丟掉修改數據的問題。
【附圖說明】
[0034]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0035]圖1為現有技術中客戶端數據同步的流程示意圖;
[0036]圖2為本發明的一個具體實施例中移動終端處理數據沖突的方法的流程示意圖;
[0037]圖3為本發明的一個具體實施例中移動終端處理數據沖突的方法的詳細流程示意圖;
[0038]圖4為本發明的一個具體實施例中用于處理沖突事件的裝置的架構示意圖。
【具體實施方式】
[0039]為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0040]實施例一:
[0041]圖2為本發明的一個具體實施例中移動終端處理數據沖突的方法的流程示意圖。
[0042]如圖2所示,該方法應用于移動終端上,包括:
[0043]步驟S21,登錄同一帳號的不同客戶端分別向服務器發送新增修改刪除請求,所述新增修改刪除請求中包含請求數據;
[0044]步驟S22,如果請求數據存在數據沖突,客戶端將請求數據的sourceid刪除,并為請求數據生成新sourceid;
[0045]步驟S23,客戶端將具有新sourceid的請求數據上傳到服務器上。
[0046]實施例二:
[0047]圖3為本發明的一個具體實施例中移動終端處理數據沖突的方法的詳細流程示意圖。
[0048]如圖3所示,該方法應用于移動終端上,包括:
[0049]步驟S31,登錄同一帳號的不同客戶端分別向服務器發送新增修改刪除請求,所述新增修改刪除請求中包含請求數據。
[0050]在本步驟中,登錄同一帳號的不同客戶端分別向服務器上傳新增修改刪除的請求,這可以是一個批量執行操作的過程,例如,客戶端向服務器新增或者修改100個數據,這100個數據放到可以一個新增修改刪除請求。
[0051 ]其中新增修改刪除請求可以是httpPut請求,具體操作為:定義數據格式,按照定義的數據格式序列化100個數據,并將序列化后的100個數據放到httpPut請求中。
[0052]步驟S32,服務器接收到請求數據后,判斷請求數據是否存在數據沖突,如果是,進行步驟S33;如果否,進行步驟S35。
[0053]在本步驟中,向服務器新增數據是不會發生沖突的。沖突發生在修改和刪除的請求上,加上同步的先后順序沖突操作分為三種:
[0054]1.修改-修改沖突;
[0055]2.修改-刪除沖突,這是修改的請求先到達服務器。
[0056]3.刪除-修改沖突,刪除的請求先到達服務器。
[0057]數據每一次同步后,服務器都會給客戶端這個數據一個特殊字符串etag,該etag代表當前數據在服務器的版本。
[0058]例如,如果移動終端A和移動終端B這兩個客戶端對同一個版本數據NI做了修改,移動終端A把NI修改為Nll,移動終端B把NI修改為NI 2。
[0059]如果A的請求先到達服務器,根據etag的邏輯,NI的etag和服務器上的etag是相同的,那么服務器上的NI就被修改成了Nll,并且服務器和客戶端A都將更新這個數據的etag。[ΟΟ?Ο]于是當B的請求過來的時候,服務器發現B的etag不一樣,就會認為這個請求包括沖突數據。
[0061]在現有技術中,B的請求會失敗,則服務器上的Nll會同步到B,使得B修改的N12又變成了NI I。這樣,NI 2這個修改就丟掉了。
[0062]在本發明具體實施例中,如果服務器接收到登錄同一帳號的不同客戶端的請求數據后,根據請求數據的etag判斷出該請求數據存在數據沖突時,并不會直接向B反饋請求失敗。
[0063]步驟S33,服務器向客戶端返回新增修改刪除回應,該新增修改刪除回應包括請求數據的狀態碼。
[0064]在本步驟中,如果服務器接收到登錄同一帳號的不同客戶端的請求數據后,根據請求數據的etag判斷該請求數據存在數據沖突時,會向客戶端返回新增修改刪除回應,該新增修改刪除回應包括請求數據的狀態碼,例如狀態碼為412代表該請求數據存在數據沖關O
[0065]步驟S34,客戶端接收服務器返回的新增修改刪除回應,根據新增修改刪除回應中請求數據的狀態碼確定請求數據存在數據沖突時,將請求數據的sourceid刪除,并為請求數據生成新sourceid ο
[0066]在本步驟中,sourceid是在向服務器新增修改刪除數據的時候,給數據生成的唯一的字符串。
[0067]客戶端接收服務器返回的新增修改刪除回應,如果新增修改刪除回應中請求數據的狀態碼為412,則表示請求數據存在數據沖突。
[0068]客戶端可以將請求數據的sourceid刪除,并為請求數據生成新sourceid,清除該請求數據的etag。
[0069]因為sourceid是唯一標識一個數據的,由于存在數據沖突的請求數據的sourceid已經改變成新sourceid,從而具有新sourceid的請求數據就是一個新的請求數據了。
[ΟΟΤ?]步驟S35,客戶端將新增修改刪除請求中的具有新sourceid的請求數據上傳到服務器上。
[0071 ] 在本步驟中,sourceid是唯一標識一個數據的,對于服務器來說,具有新sourceid的請求數據就是一個新的請求數據了,因此不會再存在數據沖突。
[0072]步驟S36,服務器根據請求數據進行修改并同步到客戶端。
[0073]在本步驟中,如果服務器接收到的數據請求不存在數據沖突,則服務器按照現有的方式進行處理,即根據etag的邏輯,請求數據的etag和服務器上的etag是相同的,那么服務器上的數據就被修改成了請求數據,并且服務器和客戶端都將更新這個數據的etag。
[0074]實施例三:
[0075]圖4為本發明的一個具體實施例中用于處理沖突事件的移動終端的結構示意圖。
[0076]如圖4所示,本發明的裝置包括:
[0077]第一處理模塊41,用于向服務器發送新增修改刪除請求,所述新增修改刪除請求中包含請求數據;
[0078]第二處理模塊42,用于如果請求數據存在數據沖突,將請求數據的sourceid刪除,并為請求數據生成新sourceid;
[0079]第三處理模塊43,用于將具有新sourceid的請求數據上傳到服務器上。
[0080]具體地,
[0081 ]所述第一處理模塊,具體用于:
[0082]定義數據格式;
[0083]按照定義的所述數據序列化請求數據;
[0084]將序列化后的請求數據放到httpPut請求中;
[0085]向服務器發送httpPut請求。
[0086]所述第二處理模塊,具體用于:
[0087]接收服務器返回的新增修改刪除回應;
[0088]如果從所述新增修改刪除回應中獲取到數據沖突的狀態碼,則確定存在數據沖關;
[0089]將所述請求數據的sourceid刪除,為所述請求數據生成新sourceid,并清除所述請求數據的etag。
[0090]本發明實施例提供的移動終端處理數據沖突的方法和裝置,通過為存在數據沖突的請求數據重新生成新source id,具有新source id的請求數據就是一個新的請求數據了,因此不會再存在數據沖突,從而解決了現有技術中多個客戶端修改同一個便簽會丟掉修改數據的問題。
[0091]以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現本實施例方案的目的。本領域普通技術人員在不付出創造性的勞動的情況下,即可以理解并實施。
[0092]通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到各實施方式可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件。基于這樣的理解,上述技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品可以存儲在計算機可讀存儲介質中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行各個實施例或者實施例的某些部分所述的方法。
[0093]最后應說明的是:以上實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的精神和范圍。
【主權項】
1.一種移動終端處理數據沖突的方法,其特征在于,包括: 登錄同一帳號的不同客戶端分別向服務器發送新增修改刪除請求,所述新增修改刪除請求中包含請求數據; 如果所述請求數據存在數據沖突,客戶端將所述請求數據的sourceid刪除,并為所述請求數據生成新sourceid; 客戶端將具有所述新sourceid的請求數據上傳到服務器上。2.根據權利要求1所述的移動終端處理數據沖突的方法,其特征在于,所述登錄同一帳號的不同客戶端分別向服務器發送新增修改刪除請求,所述新增修改刪除請求中包含請求數據的步驟包括: 定義數據格式; 按照定義的所述數據序列化請求數據; 將序列化后的請求數據放到httpPut請求中; 登錄同一帳號的不同客戶端分別向服務器發送httpPut請求。3.根據權利要求1所述的移動終端處理數據沖突的方法,其特征在于,所述方法還包括: 服務器接收到登錄同一帳號的不同客戶端的請求數據后,根據所述請求數據的etag判斷是否存在數據沖突; 如果請求數據的etag和服務器上的etag不同,則存在數據沖突,服務器向客戶端返回新增修改刪除回應,所述新增修改刪除回應包括請求數據的狀態碼。4.根據權利要求3所述的移動終端處理數據沖突的方法,其特征在于,所述方法還包括: 預先設置數據沖突的狀態碼; 如果客戶端從服務器返回的新增修改刪除回應中獲取到數據沖突的狀態碼,則確定存在數據沖突。5.根據權利要求1所述的移動終端處理數據沖突的方法,其特征在于,所述客戶端將所述請求數據的sourceid刪除,并為所述請求數據生成新sourceid的步驟包括: 客戶端將所述請求數據的sourceid刪除,為所述請求數據生成新sourceid,并清除所述請求數據的etag。6.一種用于處理沖突事件的移動終端,其特征在于,包括: 第一處理模塊,用于向服務器發送新增修改刪除請求,所述新增修改刪除請求中包含請求數據; 第二處理模塊,用于如果所述請求數據存在數據沖突,將所述請求數據的sourceid刪除,并為所述請求數據生成新sourceid; 第三處理模塊,用于將具有所述新sourceid的請求數據上傳到服務器上。7.根據權利要求6所述的用于處理沖突事件的移動終端,其特征在于,所述第一處理模塊,具體用于: 定義數據格式; 按照定義的所述數據序列化請求數據; 將序列化后的請求數據放到httpPut請求中; 向服務器發送httpPut請求。8.根據權利要求7所述的移動終端處理數據沖突的方法,其特征在于,所述第二處理模塊,具體用于: 接收服務器返回的新增修改刪除回應; 如果從所述新增修改刪除回應中獲取到數據沖突的狀態碼,則確定存在數據沖突; 將所述請求數據的sourceid刪除,為所述請求數據生成新source id,并清除所述請求數據的etag。
【文檔編號】H04L29/08GK105915572SQ201510921272
【公開日】2016年8月31日
【申請日】2015年12月12日
【發明人】江丹, 楊丹
【申請人】樂視移動智能信息技術(北京)有限公司