1.本技术属于互联网技术领域,尤其涉及一种数据同步的方法、装置、终端以及存储介质。
背景技术:2.为了提高数据操作的便捷性,可以采用分布式存储的方式,用户在多个不同的终端设备上对数据进行编辑,并通过定时或定量同步等方式,保证了数据的统一性的同时,也解决了对相同数据的操作需要在一个设备上进行编辑操作。现有的数据同步技术,对每次对数据进行编辑时会产生对应的操作记录,然而随着对数据编辑操作的次数不断增加,大量的操作记录同时存储于多个分布式节点,占用了大量存储资源,降低了分布式节点的存储效率。
技术实现要素:3.本技术实施例提供了一种数据同步的方法、装置、终端以及存储介质,可以解决数据同步技术,大量的操作记录同时存储于多个分布式节点,占用了大量存储资源,存储效率较低的问题。
4.第一方面,本技术实施例提供了一种数据同步的方法,包括:
5.获取目标数据在各个分布式节点对应的数据链表;所述数据链包括:基于操作时间依次排序的多个操作记录;
6.根据所述数据链表中各个所述操作记录的同步标识,确定失效操作记录;
7.删除所述失效操作记录并更新各个所述数据链表。
8.在第一方面的一种可能的实现方式中,所述根据所述数据链表中各个所述操作记录的同步标识,确定失效操作记录,包括:
9.若各个所述数据链表内均包含所述同步标识为已同步的所述操作记录,则基于所述操作时间,将最后同步的所述操作记录识别为保留记录;
10.将除所述保留记录外的其他已同步的所述操作记录识别为失效操作记录。
11.在第一方面的一种可能的实现方式中,所述基于所述操作时间,将最后同步的所述操作记录识别为保留记录,包括:
12.获取各个所述分布式节点的在线状态;
13.若任一所述分布式节点处于离线状态,则从所有第一数据链表中选取任一所述第一数据链表生成保留链表;所述第一数据链表为所属的所述分布式节点处于在线状态的所述数据链表;
14.基于所述操作时间,从所述第一数据链表中将最后同步的所述操作记录识别为所述第一数据链表的第一保留记录;
15.基于所述操作时间,从所述第二数据链表中将最后同步的所述操作记录识别为所述第二数据链表的第二保留记录;所述第二数据链表为所属的所述分布式节点处于离线状
态的所述数据链表。
16.在第一方面的一种可能的实现方式中,所述将除所述保留记录外的其他已同步的所述操作记录识别为失效操作记录,包括:
17.将所述第二数据链表中除所述第二保留记录的其他已同步的所述操作记录识别为失效操作记录;
18.将所述第一数据链表中所述第一保留记录外的其他已同步的所述操作记录识别为失效操作记录。
19.在第一方面的一种可能的实现方式中,在所述将所述第二数据链表中除所述第二保留记录的其他已同步的所述操作记录识别为失效操作记录之后,还包括:
20.若检测到所述第二数据链表对应的分布式节点处于在线状态,则基于所述保留链表对所述第二数据链表内的各个操作记录进行数据同步;
21.若检测到关于所述第二数据链表的同步完成信息,则将所述第二数据链表内各个操作记录的所述同步标签配置为已同步;
22.基于所述操作时间,将最后同步的所述操作记录识别为所述第二数据链表的保留记录;
23.将所述第二数据链表内除所述保留记录外的其他已同步的所述操作记录识别为失效操作记录。
24.在第一方面的一种可能的实现方式中,所述根据所述数据链表中各个所述操作记录的同步标识,确定失效操作记录,包括:
25.若任一所述数据链表内不包含所述同步标识为已同步的所述操作记录,则对所有所述数据链表内的各个操作记录进行数据同步;
26.若检测到关于各个所述数据链表的同步完成信息,则将各个所述操作记录的所述同步标签配置为已同步;
27.基于所述操作时间,将最后同步的所述操作记录识别为各个所述数据链表的保留记录;
28.将所述数据链表内除所述保留记录外的其他已同步的所述操作记录识别为失效操作记录。
29.在第一方面的一种可能的实现方式中,所述删除所述失效操作记录并更新各个所述数据链表,包括:
30.向与所述数据链表关联的所述分布式节点发送所述失效操作记录的数据释放指令,以使所述分布式节点在本地数据库删除所述失效操作记录对应的操作数据;
31.将保留记录的上关联字节由指向所述失效操作记录调整为指向所述目标数据预设的根节点;所述保留记录为所述数据链中最后同步的操作记录。
32.第二方面,本技术实施例提供了一种数据同步的装置,包括:
33.数据链表获取单元,用于获取目标数据在各个分布式节点对应的数据链表;所述数据链包括:基于操作时间依次排序的多个操作记录;
34.失效操作记录确定单元,用于根据所述数据链表中各个所述操作记录的同步标识,确定失效操作记录;
35.数据链表更新单元,用于删除所述失效操作记录并更新各个所述数据链表。
36.第三方面,本技术实施例提供了一种终端设备,存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述第一方面中任一项所述数据同步的方法。
37.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述第一方面中任一项所述数据同步的方法。
38.第五方面,本技术实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一项所述数据同步的方法。
39.第六方面,一种芯片系统,所述芯片系统包括存储器和处理器,所述处理器执行所述存储器中存储的计算机程序,以实现如第一方面中任一项所述数据同步的方法。
40.第七方面,一种芯片系统,所述芯片系统包括处理器,所述处理器与存储器耦合,所述处理器执行存储器中存储的计算机程序,以实现如第一方面中任一项所述数据同步的方法。
41.所述芯片系统可以为单个芯片,或者多个芯片组成的芯片模组。
42.可以理解的是,上述第二方面至第七方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
43.本技术实施例与现有技术相比存在的有益效果是:
44.本技术实施例可以获取各个分布式节点关于目标数据的数据链表,从而通过数据链表内各个操作记录对应的同步标识,确定已失效的操作记录,将已失效的操作记录从数据链表中删除,并更新数据链表,从而能够删除已失效的操作记录对应的操作数据,减少了对失效数据的存储,能够提高分布式节点的存储压力,提高了存储效率。
附图说明
45.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
46.图1是本技术实施例提供的手机的部分结构的框图;
47.图2是本技术实施例的手机的软件结构框图;
48.图3是本技术一实施例提供的数据同步的系统的结构框图;
49.图4是本技术另一实施例提供的数据同步的系统的结构框图;
50.图5是本技术第一实施例提供的一种数据同步的方法的实现流程图;
51.图6是本技术一实施例提供的数据链表的结构示意图;
52.图7是本技术一实施例提供的操作记录的同步示意图;
53.图8是本技术另一实施例提供的操作记录的同步示意图;
54.图9是本技术一实施例提供的删除未同步的操作记录时的数据链表的同步示意图;
55.图10是本技术第二实施例提供的一种数据同步的方法s502的具体实现流程图;
56.图11是本技术第三实施例提供的一种数据同步的方法s1001的具体实现流程图;
57.图12是本技术一实施例提供的多个数据链表中已同步的操作记录的示意图;
58.图13是本技术第四实施例提供的一种数据同步的方法s1002的具体实现流程图;
59.图14是本技术第五实施例提供的一种数据同步的方法的具体实现流程图;
60.图15是本技术第六实施例提供的一种数据同步的方法s502的具体实现流程图;
61.图16是本技术第七实施例提供的一种数据同步的方法的s503具体实现流程图;
62.图17是本技术一实施例提供的一种数据同步的设备的结构框图;
63.图18是本技术另一实施例提供的一种终端设备的示意图。
具体实施方式
64.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。
65.应当理解,当在本技术说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
66.还应当理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
67.如在本技术说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0068]
另外,在本技术说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0069]
在本技术说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
[0070]
本技术实施例提供的数据同步的方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本、个人数字助理(personal digital assistant,pda)等终端设备上,还可以应用于数据库、服务器以及基于终端人工智能的服务响应系统,本技术实施例对终端设备的具体类型不作任何限制。
[0071]
例如,所述终端设备可以是wlan中的站点(staion,st),可以是蜂窝电话、无绳电话、会话启动协议(session initiationprotocol,sip)电话、无线本地环路(wireless local loop,wll)站、个人数字处理(personal digital assistant,pda)设备、具有无线通
信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、电脑、膝上型计算机、手持式通信设备、手持式计算设备、和/或用于在无线系统上进行通信的其它设备以及下一代通信系统,例如,5g网络中的移动终端或者未来演进的公共陆地移动网络(public land mobile network,plmn)网络中的移动终端等。需要说明的是,由于该移动终端具体是用于管理各个分布式节点的数据链表,响应各个分布式节点的同步操作,在该情况下,该移动终端具体可以为一长时间处于在线状态的移动终端。优选地,该移动终端为不断电且联网的移动终端。
[0072]
以所述终端设备为手机为例。图1示出的是与本技术实施例提供的手机的部分结构的框图。参考图1,手机包括:射频(radio frequency,rf)电路110、存储器120、输入单元130、显示单元140、传感器150、音频电路160、近场通信模块170、处理器180、以及电源190等部件。本领域技术人员可以理解,图1中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0073]
下面结合图1对手机的各个构成部件进行具体的介绍:
[0074]
rf电路110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器180处理;另外,将设计上行的数据发送给基站。通常,rf电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(low noise amplifier,lna)、双工器等。此外,rf电路110还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(global system of mobile communication,gsm)、通用分组无线服务(general packet radio service,gprs)、码分多址(code division multiple access,cdma)、宽带码分多址(wideband code division multiple access,wcdma)、长期演进(long term evolution,lte))、电子邮件、短消息服务(short messaging service,sms)等,通过rf电路110接收分布式节点上传的数据链表,以及响应各个分布式节点的同步请求。
[0075]
存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行手机的各种功能应用以及数据处理,例如将接收到的分布式节点上传的数据链表存储于存储器120内。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等,存储数据区还可以存储其他终端反馈的数据(比如可穿戴设备反馈的生物特征数据)。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0076]
输入单元130可用于接收输入的数字或字符信息,以及产生与手机100的用户设置以及功能控制有关的键信号输入。具体地,输入单元130可包括触控面板131以及其他输入设备132。触控面板131,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板131上或在触控面板131附近的操作),并根据预先设定的程式驱动相应的连接装置。需要说明的是,该终端设备除了管理各个分布式节点的数据链表外,本身也可以作为一分布式节点,即可以对数据进行编辑操作,在该情况下,用户可以通过输入单元130输入编辑内容,并对目标数据进行编辑操作,继而生成对应的操作记录。
[0077]
显示单元140可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单,例如输出用于编辑目标数据的操作界面,以及接收用户对于目标数据的查询指令,以显示目标数据等。显示单元140可包括显示面板141,可选的,可以采用液晶显示器(liquid crystal display,lcd)、有机发光二极管(organic light-emitting diode,oled)等形式来配置显示面板141。进一步的,触控面板131可覆盖显示面板141,当触控面板131检测到在其上或附近的触摸操作后,传送给处理器180以确定触摸事件的类型,随后处理器180根据触摸事件的类型在显示面板141上提供相应的视觉输出。虽然在图1中,触控面板131与显示面板141是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板131与显示面板141集成而实现手机的输入和输出功能。
[0078]
手机100还可包括至少一种传感器150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在手机移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
[0079]
音频电路160、扬声器161,传声器162可提供用户与手机之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经rf电路110以发送给比如另一手机,或者将音频数据输出至存储器120以便进一步处理。
[0080]
终端设备可以通过近场通信模块170可以接入互联网,从而接收各个分布式节点反馈的数据链表,例如该近场通信模块170集成有wifi通信模块,通过wifi通信模块与当前所处场景下的无线路由器建立通信连接,并通过无线路由器接入互联网。虽然图1示出了近场通信模块170,但是可以理解的是,其并不属于手机100的必须构成,完全可以根据需要在不改变申请的本质的范围内而省略。
[0081]
处理器180是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器180可包括一个或多个处理单元;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
[0082]
手机100还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
[0083]
手机100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的android系统为例,示例性说明手机100的软件结构。
[0084]
图2是本技术实施例的手机100的软件结构框图。将android系统分为四层,分别为应用程序层、应用程序框架层(framework,fwk)、系统层以及硬件抽象层,层与层之间通过
软件接口通信。
[0085]
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(android runtime)和系统库,以及内核层。
[0086]
应用程序层可以包括一系列应用程序包。
[0087]
如图2所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,wlan,蓝牙,音乐,视频,短信息等应用程序。
[0088]
应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。
[0089]
如图2所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
[0090]
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
[0091]
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
[0092]
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
[0093]
电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
[0094]
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
[0095]
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
[0096]
android runtime包括核心库和虚拟机。android runtime负责安卓系统的调度和管理。
[0097]
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
[0098]
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
[0099]
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:opengl es),2d图形引擎(例如:sgl)等。
[0100]
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2d和3d图层的融合。
[0101]
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库
可以支持多种音视频编码格式,例如:mpeg4,h.264,mp3,aac,amr,jpg,png等。
[0102]
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
[0103]
2d图形引擎是2d绘图的绘图引擎。
[0104]
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。在一些实施例中,上述内核层还包含pcie驱动。
[0105]
图3示出了本技术一实施例提供的数据同步的系统的结构框图。参见图3所示,该数据同步的系统包括服务器310以及多个分布式节点320。其中,服务器310与分布式节点320之间建立有通信链路。
[0106]
其中,本技术提供的数据同步的装置具体可以为上述的服务器310。服务器310可以用于管理数据库内各个数据在不同的分布式存储节点上传的数据链表。服务器310可以为数据库内的各个数据配置对应的数据编号,该数据可以为一个文本文档、图片、视频、音频等不同形式的数据,或是任一数据包内的某个数据,例如文本文档中某个数据项的参数值,又或者某个网络页面内的某一区域的显示内容等,在此不对数据进行限定。服务器310可以根据数据编号,建立数据与数据链表之间的关联关系,例如该数据链表的表头添加上述的数据编号。服务器310可以将关于同一数据(即数据编号相同)的所有数据链表进行关联存储。继而根据各个数据链表识别失效操作记录,以更新各个数据链表。当然,服务器310还可以根据各个分布式节点的数据链表,执行操作记录的同步操作,作为分布式事务的管理主体。
[0107]
分布式节点320可以为任意类型的设备,包括但不限于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本、个人数字助理(personal digital assistant,pda)等终端设备。多个分布式节点320可以对同一数据进行编辑操作,在执行上述编辑操作时,该分布式节点320可以处于在线状态,也可以处于离线状态。用户通过分布式节点320上的输入模块对数据进行编辑后,会生成对目标数据的操作记录,并添加到该目标数据对应的数据链表上。分布式节点320可以将数据链表上传给服务器310,也可以在满足预设的同步条件时,对本地的数据链表内的各个操作记录进行数据同步。各个分布式节点除了存储各个操作记录外,还存储有该操作记录对应的操作数据。分布式节点320可以删除失效操作记录对应的操作数据,从而减少无效数据对于存储器的资源占用。
[0108]
图4示出了本技术另一实施例提供的数据同步的系统的结构框图。参见图4所示,该数据同步的系统包括第一分布式节点410以及第二分布式节点420。其中,第一分布式节点410与第二分布式节点420之间可以通过有线和/或无线网络进行通信。
[0109]
其中,上述第一分布式节点410以及第二分布式节点420为任意类型的设备,包括但不限于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本、个人数字助理(personal digital assistant,pda)等终端设备,当然,还可以为服务器或数据库等设备。
[0110]
上述第一分布式节点410可以与其他第二分布式节点420一起,对同一数据进行编辑操作。在执行上述编辑操作后,可以创建关于目标数据的操作记录,从而生成对应的数据
链表。第一分布式节点410可以根据本地生成的数据链表以及第二分布式节点420上传的数据链表,对本地的数据链表内的各个操作记录进行数据同步。该第一分布式节点410还可以存储有该操作记录对应的操作数据。即第一分布式节点包含有各个第二分布式节点420的功能,即对同一数据的编辑功能,以及存储操作记录与操作记录对应的操作数据等。除上述功能之外,第一分布式节点410还可以用于管理整个分布式系统的数据链表,对数据链表内的操作记录进行同步。优选地,上述第一分布式节点410具体为一长时间在线的设备,该长时间在线即要求第一分布式节点410处于联网状态以及处于不断电状态。
[0111]
在一种可能的实现方式中,数据同步的系统可以为第一分布式节点410配置应对异常状态下的备用设备411。第一分布式节点410可以将本地存储的数据链表以及各个第二分布式节点420反馈的数据链表定期同步至备用设备411,在第一分布式节点410处于正常运行的状态下,备用设备411处于待机状态,从而能够减少资源的消耗。若检测到第一分布式节点410处于异常预警状态,例如电量低于预设的最低电量阈值,或者丢包率大于预设的正常丢包阈值,又或者硬件资源占用率大于预设的占用阈值,此时则识别第一分布式节点410可能会掉线,此时,会激活备用设备411,并实时同步第一分布式节点410的数据至备用设备411,并建立与各个第二分布式节点420的通信链路。若检测到第一分布式节点410处于离线状态(例如发生断电或无法连接网络的情况下),则通过上述备用设备411与各个第二分布式节点420建立的通信链路,接收各个第二分布式节点上传的数据链表,以及响应操作记录的同步操作。
[0112]
在一种可能的实现方式中,管理数据链表的操作可以在各个分布式节点进行轮换。即分布式节点在不同的时刻可以作为管理数据链表的第一分布式节点410,或者上报数据链表的第二分布式节点420。在该情况下,数据同步的系统可以根据各个分布式节点的运行参数,确定各个分布式节点的优先级,选取优先级最高的分布式节点作为第一分布式节点410,其他的分布式节点则作为第二分布式节点420。其中,上述运行参数包括有:可用的存储资源、运算速度、网络带宽等,并基于上述运算参数以及各个运算参数预设的优先权重,计算得到各个分布式节点对应的优先级。在运行的过程中,若检测到第一分布式节点410的运行参数低于预设的正常运行范围,则识别该第一分布式节点410处于过载状态,可以管理数据链表的功能转移到其他分布式节点,因此,会获取各个分布式节点的运行参数,并重新确定各个分布式节点的优先级,从而所有第二分布式节点中,选取优先级最高的第二分布式节点作为新的第一分布式节点(即管理数据链表的节点),原本的第一分布式节点将存储有的各个分布式节点的数据链表发送给新的第一分布式节点,从而实现了管理任务的转移,从而数据同步系统无需配置单独的管理设备,提高了数据同步的系统的造价。
[0113]
在一种可能的实现方式中,管理数据链表的操作可以在各个分布式节点进行轮换。即分布式节点在不同的时刻可以作为管理数据链表的第一分布式节点410,或者上报数据链表的第二分布式节点420。在该情况下,数据同步的系统可以为各个分布式节点配置对应的管理周期。若任一分布式节点处于其所对应的管理周期内,则作为上述的第一分布式节点410,管理整个系统的数据链表;其他分布式节点在不处于其所对应的管理周期内,则作为上述的第二分布式节点420,上传数据链表。在到达该分布式节点所对应的管理周期的周期结束时刻,可以将存储与本地的数据链表发送给下一个管理周期对应的分布式节点,以通过下一管理周期对应的分布式节点继续承担数据链表的管理操作,实现操作基于时间
周期进行轮转,无需保持某一设备长期处于在线状态,只需在对应的管理周期时处于在线状态即可,而且哥哥分布式节点均可承担数据链表的管理操作,从而提高了数据同步系统的鲁棒性。
[0114]
在本技术实施例中,流程的执行主体为安装有数据同步的程序的设备。作为示例而非限定,数据同步的程序的设备具体可以为终端设备,该终端设备可以为服务器,专门用于管理数据链表,还可以为智能手机、平板电脑、笔记本电脑等可同时作为分布式节点的设备,在后续的实施例中,以终端设备表示上述管理数据链表的数据同步的程序的设备。图5示出了本技术第一实施例提供的数据同步的方法的实现流程图,详述如下:
[0115]
在s501中,获取目标数据在各个分布式节点对应的数据链表;所述数据链包括:基于操作时间依次排序的多个操作记录。
[0116]
在本实施例中,数据同步的系统内包含有多个分布式节点,该分布式节点可以安装于同一位置,例如处于同一机房内;若多个分布式节点处于同一位置,则各个分布式节点可以通过串口或通信端口的方式,与终端设备建立通信连接,并通过该通信连接向终端设备发送数据链表。上述多个分布式节点可以处于不同的位置,例如处于各个分布式节点处于不同的机房,或者任意多个分布式节点处于同一机房,其他分布式节点处于不同的机房;在该情况下,则各个分布式节点可以通过有线或无线通信方式,与终端设备建立通信连接,并向终端设备发送数据链表。
[0117]
在本实施例中,各个分布式节点均可以对同一目标数据进行操作,该操作包括:增加目标数据、删除目标数据、替换目标数据或变更目标数据的数据内容等各种操作形式,并且根据目标数据的数据类型不同,可以采用多种与数据类型相关的操作方式,例如若目标数据为音频数据,则上述操作可以为:对音频数据通过预设的滤波算法进行滤波处理,得到滤波后的音频数据;若目标数为图像数据,则上述操作可以为:对图像数据进行人脸识别,并提取人脸图像;因此,不同的数据类型所采用的操作方式不同,在此不对操作内容进行限定。
[0118]
在本实施例中,用户可以在分布式节点上对目标数据进行编辑操作,在每次执行编辑操作后,会生成对应的操作记录,根据各个操作记录对应的操作时间,生成关于目标数据的数据链表。由于用户在分布式节点对目标数据进行操作时,该分布式节点并非一定处于在线状态,且处于在线状态也并非实时将编辑后的数据同步至各个分布式节点,基于此,各个分布式节点存储有关于本地操作的数据链表,并在满足预设的上传时机时,将数据链表上传至终端设备,并在到达预设的同步时机时,对数据链表内的操作记录进行同步操作,以保持处于各个分布式终端上关于目标数据的数据内容的一致性。需要说明的是,若在执行同步操作时,任一分布式节点处于离线状态,即本次同步操作并未更新到处于离线的分布式节点的数据链表内,此时,也会识别该操作记录为已同步的操作记录,待该离线的分布式节点上线后,终端设备可以将离线状态下所有同步的操作记录,同步至该离线的分布式节点的数据链表内。
[0119]
在一种可能的实现方式中,上述分布式节点上传数据链表的上传时机具体可以为:分布式节点可以通过内置的客户端程序与终端设备建立通信连接,在分布式节点与终端设备建立有通信连接的状态下,则识别该分布式节点处于在线状态。在在线状态下,分布式节点在检测到生成一个关于目标数据的操作记录后,会更新数据链表,并将更新后的数
据链表上传给终端设备。即上述的上传时机为:节点在线且数据链表触发了更新流程。其中,上述上传数据链表的方式可以为增量上传也可以是全量上传,其中,增量上传具体为分布式节点可以将本次数据链表中新增的操作记录发送给终端设备,终端设备可以将接收到的操作记录添加到对应的数据链表内;全量上传具体为将关于目标数据的完整的数据链表发送给终端设备,终端设备可以删除已存储的关于该分布式节点的数据链表,并保存分布式节点本次上传的数据链表。
[0120]
在一种可能的实现方式中,上述对数据链表进行同步的时机可以为:终端设备若检测到各个分布式节点均处于在线状态,则执行数据链表的同步操作;优选地,终端设备若检测到各个分布式节点处于在线状态,则获取各个分布式节点当前的运行参数,若上述运行参数均大于预设的同步阈值(即各个分布式节点当前均存在一定的可用资源响应同步操作),则执行数据链的同步操作。
[0121]
在一种可能的实现方式中,上述对数据链表进行同步的时机可以为:终端设备若检测到目标数据在各个数据链表中待同步的操作记录的个数大于预设的个数阈值时,则可以执行数据链表的同步操作。例如各个数据链表中待同步的操作记录的个数大于2,此时终端设备可以同时对各个分布式节点的数据链表执行同步操作。
[0122]
示例性地,图6示出了本技术一实施例提供的数据链表的结构示意图。参见图6所示,该数据链表内包含有多个操作记录,每个操作记录包含以下三个内容,分别为:该操作记录对应的唯一标示符、上一次操作所对应的操作记录的上关联字节,以及本次操作对应的操作数据的数据索引。基于上述三个内容,可以根据各个操作记录对应的操作时间,依次连接各个操作记录,从而生成对应的数据链表。如图6中的操作记录1,其上一次操作所对应的操作记录为操作记录2,因此在上关联字节内对应的值为操作记录2的唯一标示符;而由于操作记录1为最后生成的操作记录,因此没有任何操作记录的上关联字节是指向操作记录1,即操作记录1是该数据链的链尾;而该操作记录1中的数据索引可以为一存储路径,用于确定存储本次操作数据的存储地址,例如本次操作是编辑操作,则该存储地址可以存储有对目标数据编辑后的值。需要说明的是,该数据链表的表头可以指向预设的根节点,该根节点可以为空,即用户首次对目标数据进行编辑时,该目标数据并未赋值,此时,会生成一个操作记录,由于该操作记录并不存在比其操作时间更早的其他操作记录,因此,对应的上关联字节可以指向空或预设的根节点。在图6中,该根节点具体为空节点,即empty。
[0123]
在本实施例中,终端设备执行上述数据同步的方式可以为:终端设备可以根据各个操作记录对应的唯一标识符,判断各个数据链表内是否包含该操作记录,若均包含该操作记录,则将该操作记录的同步标识设置为已同步;若该操作记录并非包含在任一数据链表内或未执行同步识别操作,则识别该操作记录为未同步。终端设备可以将各个同步标识为未同步的操作记录同步至各个数据链表内。
[0124]
在一种可能的实现方式中,终端设备执行上述数据同步的方式可以为:判断该待同步的操作记录是否包含在其他分布式节点的数据链表内,若包含,则无需同步;反之,若该操作记录不包含在数据链表内,则根据该操作记录的操作时间,以及各个已有操作记录的操作时间,确定本次添加的操作记录的序号,并基于上述序号插入到数据链表对应的序号的位置,并调整操作时间晚于该操作记录的各个已有操作记录的序号。若该操作记录包含有上关联字节,则可以调整该序号对应的原有的已有操作记录的上关联字节修改为本次
插入的操作记录对应的唯一标示符。示例性地,图7示出了本技术一实施例提供的操作记录的同步示意图。参见图7所示,该数据链表包含多个操作记录,分别为操作记录1~5,各个操作记录对应的操作时间分别为:4月1日、4月2日、4月3日、4月5日以及4月6日。待同步的操作记录(即操作记录a)对应的操作时间为4月4日,其操作时间在操作记录3和操作记录4之间,因此,该待同步的操作记录a的上关联记录为操作记录3,因此将该操作记录a的上关联字节配置为“操作记录3”(即操作记录3对应的唯一标示符);而将操作记录4的上关联字节调整为“操作记录a”,从而生成新的数据链表。
[0125]
在一种可能的实现方式中,终端设备执行上述数据同步的方式可以为:判断该待同步的操作记录是否包含在其他分布式节点的数据链表内,若包含,则无需同步;反之,若该操作记录不包含在数据链表内,则根据该操作记录内包含的上关联字节,添加到该数据链中与该上关联字节对应的已有操作记录后,更新所述数据链表。若该数据链中与已有操作记录已包含对应的下关联记录,则会创建一个新的数据链分支。示例性地,图8示出了本技术另一实施例提供的操作记录的同步示意图。参见图8所示,待同步的操作记录a中的上关联字节为“操作记录3”,存储于其他分布式节点的数据链表中操作记录3的下关联操作记录为操作记录4,且操作记录4和操作记录a的操作数据不一致,因此无法合并上述两个操作记录,因此,会创建一个数据链分支,即由操作记录1
→2→3→
a,得到同步后的数据链表。
[0126]
在s502中,根据所述数据链表中各个所述操作记录的同步标识,确定失效操作记录。
[0127]
在本实施例中,由于数据链表内各个操作记录对应有同步标识,即该操作记录是否已在各个分布式节点上执行了同步操作。若该操作记录已经同步到各个数据链表内,即删除该操作记录并不会对数据链表的结构产生影响,因此可以将其识别为失效操作记录;反之,若该操作记录未同步到各个数据链表内,即删除该操作记录可能会影响该数据链表的结构,因此不能将其删除。示例性地,图9示出了本技术一实施例提供的删除未同步的操作记录时的数据链表的同步示意图。参见图9所示,第一分布式节点内的数据链表包含有5个操作记录,分别为操作记录1至5,而第二分布式节点内的数据链表包含有2个操作记录,分别为操作记录1和2,其中操作记录1和2是已同步的操作记录(即同时存在于第一分布式节点以及第二分布式节点)。若此时,删除掉了第一分布式节点内数据链表中的操作记录1至3,保留记录4和5。由于操作记录4内关联的上关联节点为空节点,与第二分布式节点的数据链表进行同步时,则与原有的操作记录1对应的上关联节点一致,且两个操作数据不同,第二分布式节点会同时保留上述两个操作记录,从而产生了支链,影响了数据链表的结构。基于上述原因,终端设备并不会删除未同步的操作记录,因此可以根据各个操作记录的同步标识,从数据链表中确定出失效操作记录。
[0128]
在本实施例中,触发s502的方式可以由人为手动启动,即用户向终端设备发起一个数据老化指令,则终端设备可以根据各个分布式节点上传的数据链表,对失效操作记录进行删除;也可以基于预设的触发条件,执行上述s502的操作。
[0129]
在一种可能的实现方式中,触发s502的方式可以为:终端设备在接收到分布式节点发送的操作记录的同步请求后,可以对各个分布式节点对应的数据链表内的操作记录进行同步操作,并在同步后调整各个操作记录对应的同步标识。此时,由于已经完成了数据链表的同步流程,因此可以对同步后的数据链表进行统一老化,即识别失效操作记录并进行
删除,此时会执行s502的操作。
[0130]
在一种可能的实现方式中,触发s502的方式可以为:终端设备可以获取各个分布式节点的存储占用率,若任一分布式节点的存储占用率大于预设的占用阈值,则执行s502的操作。即终端设备会识别各个分布式节点对应的数据链表内包含的失效操作记录,并将各个失效操作记录对应的操作数据从分布式节点中进行删除,从而可以释放无效数据的存储资源,以降低分布式节点的存储占用率。
[0131]
在一种可能的实现方式中,触发s502的方式可以为:终端设备可以获取各个分布式节点的数据链表包含的操作记录的个数,若任一所述数据链表内的操作记录的个数大于预设的个数阈值,则执行s502的操作。
[0132]
在s503中,删除所述失效操作记录并更新各个所述数据链表。
[0133]
在本实施例中,终端设备在确定了各个失效操作记录后,可以将失效的操作记录从数据链表中进行删除,并对数据链表进行更新,更新后的数据链表不包含上述已删除的失效操作记录。
[0134]
在一种可能的实现方式中,终端设备可以将删除了失效记录的数据链表反馈给各个分布式节点,各个分布式节点可以根据接收到的数据链表以及本地存储的数据链表,确定失效操作记录,继而确定各个失效操作记录中对应操作数据的数据索引,获取得到对应的操作数据并进行数据删除操作,以释放存储资源。
[0135]
以上可以看出,本技术实施例提供的一种数据同步的方法可以获取各个分布式节点关于目标数据的数据链表,从而通过数据链表内各个操作记录对应的同步标识,确定已失效的操作记录,将已失效的操作记录从数据链表中删除,并更新数据链表,从而能够删除已失效的操作记录对应的操作数据,减少了对失效数据的存储,能够提高分布式节点的存储压力,提高了存储效率。
[0136]
图10示出了本技术第二实施例提供的一种数据同步的方法s502的具体实现流程图。参见图10,相对于图5所述实施例,本实施例提供的一种数据同步的方法中s502包括:s1001~s1002,具体详述如下:
[0137]
在s1001中,若各个所述数据链表内均包含所述同步标识为已同步的所述操作记录,则基于所述操作时间,将最后同步的所述操作记录识别为保留记录。
[0138]
在本实施例中,终端设备可以获取各个数据链表内包含的操作记录的同步标识,并基于同步标识将数据链表划分为两段,包括已同步的数据链段以及待同步的数据链段,已同步的数据链段内的各个操作记录的同步标识均为已同步,而待同步的数据链段内的各个操作记录的同步标识为待同步。
[0139]
在本实施例中,终端设备可以检测各个数据链表中是否均包含有已同步的操作记录,若是,则执行s1001的操作。由于当存在数据链表内不包含已同步的操作记录时,则表示该数据链表内并不存在可以删除的保留记录,在一种可能的实现方式中,终端设备可以将先对该不包含已同步的操作记录的数据链表,与任一其他分布式节点存储的数据链表进行同步操作,并在同步后重新执行s1001的操作。
[0140]
在本实施例中,终端设备根据各个已同步的操作记录(即同步标识为已同步的操作记录)的操作时间,确定出最后完成同步的操作记录,并将其识别为保留记录。其中,该最后同步的操作记录具体为操作时间与当前触发确定失效操作记录的时刻之间的时间差最
小的操作记录。例如,操作记录1到3均为已同步的操作记录,且对应的操作时间分别为4月1日、4月2日以及4月3日,由于操作时间最后的一个已同步的操作记录为操作记录3,即操作记录3为保留记录。
[0141]
在s1002中,将除所述保留记录外的其他已同步的所述操作记录识别为失效操作记录。
[0142]
在本实施例中,终端设备可以各个数据链中将除保留记录外的其他已同步的操作记录识别为失效记录,从而可以确定出需要从数据链表中删除的操作记录。
[0143]
在本技术实施例中,通过将最后同步的操作记录识别为保留记录,从而保证在各个数据链表中存储有相同的操作记录,由于在执行同步操作时,需要确定操作记录的上关联节点是否一致,并基于上关联节点来执行上链操作,若各个数据链表中不包含相同的操作记录,则执行上链操作时容易产生支链,影响数据链表的结构。因此,若在数据链表中保留有至少一个相同的操作记录(即已同步的保留记录),在后续对未同步的操作记录进行同步时,能够避免出现支链,影响数据表的结构,也能够最大限度释放失效的操作记录,提高了分布式节点的存储效率。
[0144]
图11示出了本技术第三实施例提供的一种数据同步的方法s1001的具体实现流程图。参见图11,相对于图10所述实施例,本实施例提供的一种数据同步的方法中s1001包括:s1101~s1104,具体详述如下:
[0145]
进一步地,所述基于所述操作时间,将最后同步的所述操作记录识别为保留记录,包括:
[0146]
在s1101中,获取各个所述分布式节点的在线状态。
[0147]
在本实施例中,分布式节点在处于在线状态下,可以与终端设备建立有通信连接,且该通信连接处于激活状态。因此,终端设备可以根据当前处于激活状态的通信连接的个数,确定在线的分布式节点的个数,以及根据各个通信连接对应的通信对端,确定处于在线状态的分布式节点。
[0148]
在本实施例中,终端设备可以存储有数据同步系统内包含的所有节点列表,若检测到该节点列表内存在任一分布式节点处于离线状态,则执行s1102的操作;若检测到节点列表内各个分布式节点均处于在线状态,则可以执行基于所述操作时间,将最后同步的所述操作记录识别为保留记录的操作。
[0149]
在s1102中,若任一所述分布式节点处于离线状态,则从所有第一数据链表中选取任一所述第一数据链表生成保留链表;所述第一数据链表为所属的所述分布式节点处于在线状态的所述数据链表。
[0150]
在本实施例中,终端设备可以将数据链表根据所属的分布式节点的在线状态划分为两个类型。其中,若数据链表所属的分布式节点处于在线状态,则该数据链表识别为第一数据链表;若数据链表所属的分布式节点处于离线状态,则该数据链表识别为第二数据链表。
[0151]
在本实施例中,终端设备可以从任意选取一个在线的分布式节点对应的第一数据链表,作为保留链表,以便后续当前处于离线状态的分布式节点上线后,可以基于保留链表对第二数据链表进行数据同步操作。
[0152]
在s1103中,基于所述操作时间,从所述第一数据链表中将最后同步的所述操作记
录识别为所述第一数据链表的第一保留记录。
[0153]
在本实施例中,终端设备可以根据各个操作记录对应的操作时间,从所有第一数据链表中选取出最后同步的操作记录作为各个第一数据链表的第一保留记录。由于第一数据链表内的操作记录与处于离线的第二数据链表中,已同步的操作记录的个数可能不同,因此,最后同步的操作记录在不同的数据链表中会存在差异。为了保证各个数据链表保证有且只有一个相同的操作记录,从第一数据链表中识别得到最后同步的操作记录,并将该操作记录识别为该第一数据链表的第一保留记录。其中,分布式节点处于在线状态,且最后同步的操作记录,必然对于所有分布式节点而言,是内容相同的操作记录。因为同步操作,是对于所有在线的分布式节点而言所执行的同步操作,因此可以避免出现后续节点在同步时,无法确定相同的上关联节点的情况。
[0154]
在s1104中,基于所述操作时间,从所述第二数据链表中将最后同步的所述操作记录识别为所述第二数据链表的第二保留记录;所述第二数据链表为所属的所述分布式节点处于离线状态的所述数据链表。
[0155]
在本实施例中,由于部分分布式节点处于离线状态,因此,终端设备存储有的数据链表,并没有记录有该类型的分布式节点实际本地生成的数据链表,是历史上传得到的数据链表,因此将该第二数据链表中最后同步的操作记录,识别为该第二数据链表对应的第二保留记录。例如,某一分布式节点在4月1日上线,并对数据链表进行同步,最后同步的操作记录为4月1日的操作记录。此时,终端设备存储有4月1日关于该分布式节点的数据链表。而在4月2日以及4月3日,数据同步的系统执行了操作记录的同步操作,但由于该分布式节点并没有上线,因此无法将同步的操作记录更新至该数据链表内。在4月4日时,终端设备需要对失效的操作记录进行删除,此时该分布式节点上传到终端设备的数据链表为截止至4月1日的操作记录,会将4月1日的操作记录识别为第二保留记录。
[0156]
示例性地,图12示出了本技术一实施例提供的多个数据链表中已同步的操作记录的示意图。其中,分布式节点1-3处于在线状态,分布式节点4处于离线状态。分布式节点1的数据链表内包含有操作记录1至8,其中,操作记录1-6为已同步的操作记录,其中,操作记录7和8为待同步的操作记录;而分布式节点2的数据链表内包含有操作记录1至7,其中,操作记录1-7为均为已同步的操作记录;分布式节点3的数据链表内包含有操作记录1-9,其中,操作记录1-7为已同步的操作记录,操作记录8和9为未同步的操作记录;分布式节点4的数据链表内包含有操作记录1-5,操作记录1-3为已同步的操作记录,操作记录4和5为处于离线状态下,用户在分布式节点4上编辑得到的数据。在此,第一数据链表即为分布式节点1-3的数据链表,其中,最后同步的操作记录分别分布式节点1的操作记录6,分布式节点2和3中的操作记录7。因此,可以将上述3个操作记录作为对应数据列表内的第一保留记录。对应地,分布式节点4处于离线状态,则对应的第二数据链表为分布式节点4的数据链表,且第二数据链表中最后同步的操记录为操作记录3,即第二保留记录为操作记录3。
[0157]
在本技术实施例中,根据不同的在线状态为不同的数据链表确定对应的保留节点,从而能够在删除数据链表中无效的操作记录的同时,能够保证后续对数据链表进行同步时,不会影响数据链表的结构。
[0158]
图13示出了本技术第四实施例提供的一种数据同步的方法s1002的具体实现流程图。参见图13,相对于图12所述实施例,本实施例提供的一种数据同步的方法中s1002包括:
s1301~s1302,具体详述如下:
[0159]
进一步地,所述将除所述保留记录外的其他已同步的所述操作记录识别为失效操作记录,包括:
[0160]
在s1301中,将所述第二数据链表中除所述第二保留记录的其他已同步的所述操作记录识别为失效操作记录。
[0161]
在本实施例中,终端设备由于保留链表用于在当前离线的分布式节点重新上线时,进行同步操作时进行同步操作。因此,需要确保保留链表与第二数据链表中至少保留一个相同的操作记录,会将操作时间早于第二保留记录的其他已同步的操作记录识别为失效操作记录,即失效操作记录的编辑操作是在保留记录的编辑操作之前发生的。
[0162]
在一种可能的实现方式中,若存在多个离线的分布式节点,则上述确定第二保留记录的操作是独立的,同样地,将该第二数据链表中除第二保留记录外的其他已同步的操作记录识别为失效操作记录。由于各个第二数据链表均是基于保留链表进行数据同步操作,因此,只要保证保留链表是完整的,则不同的第二数据链表均可以基于保留链表进行同步操作,相互之间的同步操作是独立的。
[0163]
在s1302中,将所述第一数据链表中所述第一保留记录外的其他已同步的所述操作记录识别为失效操作记录。
[0164]
在本实施例中,终端设备可以根据各个第一数据链表中对应的第一保留记录,对关联的第一数据链表进行失效操作记录的识别操作,即将该第一数据链表中除第一保留记录外的其他已同步的操作记录识别为失效操作记录。
[0165]
需要说明的是,保留链表具体是存储于终端设备,因此在对该保留链表对应的分布式节点的数据链表进行失效数据识别时,依然会确定该保留链表对应的第一保留记录,即在后续的操作时,会基于第一保留记录,识别保留链表内的失效操作记录,但该失效操作记录是用于删除保留记录对应的分布式节点的操作数据上,而并不会影响存储于终端设备的保留链表内。
[0166]
在本技术实施例中,通过对分布式节点的在线状态不同,采用对应的失效操作记录的识别手段,可以提高失效操作记录的识别准确性,从而更大限度的释放无效数据占用的存储资源。
[0167]
图14示出了本技术第五实施例提供的一种数据同步的方法的具体实现流程图。参见图14,相对于图13所述实施例,本实施例提供的一种数据同步的方法中在所述将所述第二数据链表中除所述第二保留记录的其他已同步的所述操作记录识别为失效操作记录之后,还包括:s1401~s1404,具体详述如下:
[0168]
进一步地,在所述将所述第二数据链表中除所述第二保留记录的其他已同步的所述操作记录识别为失效操作记录之后,还包括:
[0169]
在s1401中,若检测到所述第二数据链表对应的分布式节点处于在线状态,则基于所述保留链表对所述第二数据链表内的各个操作记录进行数据同步。
[0170]
在本实施例中,若处于离线的分布式节点重新上线,即上述测到所述第二数据链表对应的分布式节点处于在线状态,终端设备可以通过保留链表对该分布式节点的第二数据链表进行同步操作。其中,同步的过程具体为:第二分布式节点可以对第二数据链表进行更新,即将在离线状态下发起的操作记录上传给终端设备,以得到更新后的第二数据链表,
终端设备则通过保留链表内已同步的操作记录,同步至上述更新后的第二数据链表内,已得到同步后的第二数据链表,终端设备在执行同步操作后,可以识别该第二数据链表内是否包含待同步的操作记录,若存在则向当前在线的所有其他分布式节点发送同步指令,将需要同步的操作记录同步至其他分布式节点内,以予以存储。
[0171]
在s1402中,若检测到关于所述第二数据链表的同步完成信息,则将所述第二数据链表内各个操作记录的所述同步标签配置为已同步。
[0172]
在本实施例中,在对第二数据链表内的所有操作记录执行同步操作后,可以接收到各个分布式节点反馈同步完成指令,若所有在线的分布式节点均反馈上述同步完成指令,则会生成同步完成信息,以指示该第二数据链表中的所有操作记录以完成同步操作。终端设备可以将该第二数据链表的各个操作记录的同步标签识别为已同步。
[0173]
在s1403中,基于所述操作时间,将最后同步的所述操作记录识别为所述第二数据链表的保留记录。
[0174]
在本实施例中,终端设备在对第二数据链表进行同步操作后,可以对第二数据链表对应的分布式节点进行失效记录的识别操作,同样地,为了确保后续更新数据链表时,能够保证操作记录能够识别得到对应的上关联节点,需要确定一个最后同步的保留记录,因此,会将第二数据链表中最后同步的操作记录识别为保留记录。
[0175]
在s1404中,将所述第二数据链表内除所述保留记录外的其他已同步的所述操作记录识别为失效操作记录。
[0176]
在本实施例中,终端设备可以将除保留记录外的其他所有已同步的操作记录识别为失效操作记录,从而能够保证第二数据链表中有且只有一个操作记录与其他数据链表的操作记录是相同的,最大程度上释放无效数据的占用资源。在确定第二数据链表内的失效操作记录后,可以将更新后的第二数据链表反馈给所属的分布式节点,以使对应的分布式节点释放对应的占用资源。
[0177]
在本技术实施例中,在检测到处于离线的分布式节点重新上线时,可以通过保留记录对该离线后重新上线的分布式节点进行数据同步操作,以保证目标数据的数据链表与其他分布式数据链表一致,并且在更新了数据链表后,对分布式节点进行失效操作记录的识别操作,从而能够释放离线后重新上线的分布式节点的资源占用,避免分布式节点因错过资源释放时机而导致资源积压。
[0178]
图15示出了本技术第六实施例提供的一种数据同步的方法s502的具体实现流程图。参见图15,相对于图5所述实施例,本实施例提供的一种数据同步的方法s502包括:s1501~s1504,具体详述如下:
[0179]
进一步地,所述根据所述数据链表中各个所述操作记录的同步标识,确定失效操作记录,包括:
[0180]
在s1501中,若任一所述数据链表内不包含所述同步标识为已同步的所述操作记录,则对所有所述数据链表内的各个操作记录进行数据同步。
[0181]
在本实施例中,终端设备若检测到各个分布式节点处于在线状态,且存在一个数据链表内不包含有已同步的操作记录,即无法保证各个数据链表中包含有至少一个相同的操作记录,基于此,终端设备需要对数据链表中的操作记录进行数据同步,以保证各个分布式节点的数据链表一致性。
[0182]
在s1502中,若检测到关于各个所述数据链表的同步完成信息,则将各个所述操作记录的所述同步标签配置为已同步。
[0183]
在本实施例中,各个分布式节点对本地的数据链表完成同步后,可以向终端设备反馈一个同步完成信息,若检测到各个数据链表的同步完成信息后,可以将各个操作记录的同步标签配置为已同步,即表示各个操作记录已经与其他分布式节点的操作记录保持一致。
[0184]
在s1503中,基于所述操作时间,将最后同步的所述操作记录识别为各个所述数据链表的保留记录。
[0185]
在本实施例中,终端设备可以根据各个操作记录的操作时间,识别得到最后同步的操作记录,并将各个数据链表中最后同步的操作记录识别为保留记录。通过配置保留记录,能够保证老化数据后的各个数据链表中至少包含一个相同的操作记录,从而能够在后续同步时,保证数据链表结构的一致性,避免出现支链。
[0186]
在s1504中,将所述数据链表内除所述保留记录外的其他已同步的所述操作记录识别为失效操作记录。
[0187]
在本实施例中,在本实施例中,终端设备可以将除保留记录外的其他所有已同步的操作记录识别为失效操作记录,从而能够保证数据链表中有且只有一个操作记录与其他数据链表的操作记录是相同的,最大程度上释放无效数据的占用资源。在确定数据链表内的失效操作记录后,可以将更新后的数据链表反馈给所属的分布式节点,以使对应的分布式节点释放对应的占用资源。
[0188]
在本技术实施例中,在各个数据链表中不存在已同步的操作记录时,可以先进行全量同步后,在进行失效操作记录的识别,保证了数据链表结构的一致性,避免出现支链。
[0189]
图16示出了本技术第七实施例提供的一种数据同步的方法的s503具体实现流程图。参见图16,相对于图5、图10、图11、图13、图14以及图15任一所述实施例,本实施例提供的一种数据同步的方法s503包括:s1601~s1602,具体详述如下:
[0190]
进一步地,所述删除所述失效操作记录并更新各个所述数据链表,包括:
[0191]
在s1601中,向与所述数据链表关联的所述分布式节点发送所述失效操作记录的数据释放指令,以使所述分布式节点在本地数据库删除所述失效操作记录对应的操作数据。
[0192]
在本实施例中,终端设备在确定了失效操作记录后,可以将各个失效操作记录对应的数据释放指令发送给所属的分布式节点,该数据释放指令携带有该操作记录的唯一标识符。分布式节点可以根据该唯一标识符,从数据链表中确定出操作记录,并基于该操作记录内包含有的数据索引,确定操作数据的存储位置,并将该操作数据从本地数据库进行删除。
[0193]
在s1602中,将保留记录的上关联字节由指向所述失效操作记录调整为指向所述目标数据预设的根节点;所述保留记录为所述数据链中最后同步的操作记录。
[0194]
在本实施例中,由于各个保留记录的上关联字节指向已失效的操作记录,此时,为了保证数据链的完整性,需要调整保留记录内的上关联字节的内容,避免数据链表断链。基于此,终端设备可以调整保留记录的上关联字节,并将
[0195]
在本技术实施例中,。
[0196]
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0197]
对应于上文实施例所述的数据同步的方法,图17示出了本技术实施例提供的数据同步的装置的结构框图,为了便于说明,仅示出了与本技术实施例相关的部分。
[0198]
参照图17,该数据同步的装置包括:
[0199]
数据链表获取单元171,用于获取目标数据在各个分布式节点对应的数据链表;所述数据链包括:基于操作时间依次排序的多个操作记录;
[0200]
失效操作记录确定单元172,用于根据所述数据链表中各个所述操作记录的同步标识,确定失效操作记录;
[0201]
数据链表更新单元173,用于删除所述失效操作记录并更新各个所述数据链表。
[0202]
可选地,所述失效操作记录确定单元172包括:
[0203]
第一保留记录识别单元,用于若各个所述数据链表内均包含所述同步标识为已同步的所述操作记录,则基于所述操作时间,将最后同步的所述操作记录识别为保留记录;
[0204]
第一失效操作记录确定单元,用于将除所述保留记录外的其他已同步的所述操作记录识别为失效操作记录。
[0205]
可选地,所述第一保留记录识别单元包括:
[0206]
在线状态确定单元,用于获取各个所述分布式节点的在线状态;
[0207]
保留链表确定单元,用于若任一所述分布式节点处于离线状态,则从所有第一数据链表中选取任一所述第一数据链表生成保留链表;所述第一数据链表为所属的所述分布式节点处于在线状态的所述数据链表;
[0208]
第一保留记录确定单元,用于基于所述操作时间,从所述第一数据链表中将最后同步的所述操作记录识别为所述第一数据链表的第一保留记录;
[0209]
第二保留记录确定单元,用于基于所述操作时间,从所述第二数据链表中将最后同步的所述操作记录识别为所述第二数据链表的第二保留记录;所述第二数据链表为所属的所述分布式节点处于离线状态的所述数据链表。
[0210]
可选地,所述第一失效操作记录确定单元包括:
[0211]
第一失效操作记录识别单元,用于将所述第二数据链表中除所述第二保留记录的其他已同步的所述操作记录识别为失效操作记录;
[0212]
第二失效操作记录识别单元,用于将所述第一数据链表中所述第一保留记录外的其他已同步的所述操作记录识别为失效操作记录。
[0213]
可选地,所述数据同步的装置还包括:
[0214]
节点上线检测单元,用于若检测到所述第二数据链表对应的分布式节点处于在线状态,则基于所述保留链表对所述第二数据链表内的各个操作记录进行数据同步;
[0215]
第一操作记录同步单元,用于若检测到关于所述第二数据链表的同步完成信息,则将所述第二数据链表内各个操作记录的所述同步标签配置为已同步;
[0216]
第二保留记录识别单元,用于基于所述操作时间,将最后同步的所述操作记录识别为所述第二数据链表的保留记录;
[0217]
第二失效操作记录识别单元,用于将所述第二数据链表内除所述保留记录外的其
他已同步的所述操作记录识别为失效操作记录。
[0218]
可选地,所述失效操作记录确定单元172包括:
[0219]
数据同步执行单元,用于若任一所述数据链表内不包含所述同步标识为已同步的所述操作记录,则对所有所述数据链表内的各个操作记录进行数据同步;
[0220]
第二操作记录同步单元,用于若检测到关于各个所述数据链表的同步完成信息,则将各个所述操作记录的所述同步标签配置为已同步;
[0221]
第三保留记录识别单元,用于基于所述操作时间,将最后同步的所述操作记录识别为各个所述数据链表的保留记录;
[0222]
第三失效操作记录识别单元,用于将所述数据链表内除所述保留记录外的其他已同步的所述操作记录识别为失效操作记录。
[0223]
可选地,所述数据链表更新单元173包括:
[0224]
数据删除单元,用于向与所述数据链表关联的所述分布式节点发送所述失效操作记录的数据释放指令,以使所述分布式节点在本地数据库删除所述失效操作记录对应的操作数据;
[0225]
上关联字节调整单元,用于将保留记录的上关联字节由指向所述失效操作记录调整为指向所述目标数据预设的根节点;所述保留记录为所述数据链中最后同步的操作记录。
[0226]
因此,本技术实施例提供的数据同步的装置同样可以获取各个分布式节点关于目标数据的数据链表,从而通过数据链表内各个操作记录对应的同步标识,确定已失效的操作记录,将已失效的操作记录从数据链表中删除,并更新数据链表,从而能够删除已失效的操作记录对应的操作数据,减少了对失效数据的存储,能够提高分布式节点的存储压力,提高了存储效率。
[0227]
图18为本技术一实施例提供的终端设备的结构示意图。如图18所示,该实施例的终端设备18包括:至少一个处理器180(图18中仅示出一个)处理器、存储器181以及存储在所述存储器181中并可在所述至少一个处理器180上运行的计算机程序182,所述处理器180执行所述计算机程序182时实现上述任意各个数据同步的方法实施例中的步骤。
[0228]
所述终端设备18可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该终端设备可包括,但不仅限于,处理器180、存储器181。本领域技术人员可以理解,图18仅仅是终端设备18的举例,并不构成对终端设备18的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
[0229]
所称处理器180可以是中央处理单元(central processing unit,cpu),该处理器180还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0230]
所述存储器181在一些实施例中可以是所述终端设备18的内部存储单元,例如终端设备18的硬盘或内存。所述存储器181在另一些实施例中也可以是终端设备18的外部存
储设备,例如所述终端设备18上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,所述存储器181还可以既包括所述终端设备18的内部存储单元也包括外部存储设备。所述存储器181用于存储操作系统、应用程序、引导装载程序(bootloader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器181还可以用于暂时地存储已经输出或者将要输出的数据。
[0231]
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本技术方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
[0232]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0233]
本技术实施例还提供了一种网络设备,该网络设备包括:至少一个处理器、存储器以及存储在所述存储器中并可在所述至少一个处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意各个方法实施例中的步骤。
[0234]
本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
[0235]
本技术实施例提供了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时实现可实现上述各个方法实施例中的步骤。
[0236]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质。例如u盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
[0237]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0238]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟
以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0239]
在本技术所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0240]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0241]
以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。