分布式多点同步系统及其同步方法

文档序号:7997181阅读:342来源:国知局
分布式多点同步系统及其同步方法
【专利摘要】本发明揭示了一种分布式的多点同步系统及其同步方法,所述系统由两个以上分布式的同步终端组成;所述同步终端包括同步对象数据库、同步消息数据库、同步处理模块、同步请求模块和同步服务模块。本发明提出的多点同步系统及其同步方法,实现了在网络中多个用户终端之间实时同步信息内容,而无需通过中心服务器。用户终端之间通过同步协议直接通信和交换同步内容,不需要由同步服务器进行内容的中转和分发,大大提高了系统的可靠性和安全性。
【专利说明】分布式多点同步系统及其同步方法

【技术领域】
[0001] 本发明属于计算机及网络【技术领域】,涉及一种分布式的多点同步系统,尤其涉及 一种无中心服务器的多点同步系统;同时,本发明还涉及上述多点同步系统的同步方法。

【背景技术】
[0002] 近年来,越来越多的电脑终端和手机、平板等移动设备走入人们的生活。个人和家 庭往往拥有多个电脑和移动终端,人们需要在多个终端之间自动地同步个人笔记、照片等 私人信息,也需要和朋友家人的终端之间同步共享的内容。与此同时,在公司内部,工作团 队成员之间也需要大量共享和同步信息。
[0003] 目前市场上已有多种信息共享和同步的工具,例如微软的SkyDrive,谷歌的 GoogleDoc已经网络硬盘Box. net等。而社交网络服务商也能使用户自由地分享内容,并自 动在用户之间同步内容。
[0004] 然而,所有这些同步工具和服务都要求用户将内容上传到中心服务器或云服务 器,所有共享这些内容的用户都必须到中心服务器上自动或手动地同步下载最新的内容。 中心服务器上始终存在内容的最新版本。
[0005] 这种同步方式的缺点在于:
[0006] 1)要求中心服务器具备高容量的存储和带宽,给服务商带来较高的成本。
[0007] 2)中心服务器的的可靠性和安全性要求很高。
[0008] 3)用户之间很难共享高容量的内容,如视频。这些内容必须上传到服务器上,再下 传到终端,非常耗时。
[0009] 4)用户很难迁移:不同服务商的服务器之间无法自动做内容迁移。
[0010] 更为严重的问题是用户内容的安全性要求。许多商业用户无法信任公共服务器的 安全性,只好自行建立公司内部服务器。这样有需要购买安装专业服务器和软件,带来了高 昂的初期和维护成本。
[0011] 因此,市场迫切需要一种去中心化的、分布式的多点同步技术,使多个终端设备之 间可以两两直接通信,进行内容的同步更新,而不需要借助中心服务器进行内容的复制和 转发。
[0012] 多点同步技术的难度在于:
[0013] 1)在多个终端上如何保持信息的一致性。由于没有一个中心服务器永远保证信息 的最新版本,因此同步方法必须保证终端之间依靠互相通信保证最新的内容。
[0014] 2)另一个难度在于该方法必须适应终端之间的动态连接,即终端不可能像服务器 一样保持始终在线,在一个网络中,也并不能保证所有的终端之间都有稳定的连接。
[0015] 3)该方法必须做到一个共享对象可以被多个用户终端同时进行更新,即所谓的协 同工作。在此过程中不会丢失信息,也不会造成互相冲突。


【发明内容】

[0016] 本发明所要解决的技术问题是:提供一种多点同步的方法,实现了在网络中的多 个终端之间直接通信同步,而不需要借助中心服务器进行内容的复制和转发。
[0017] 为解决上述技术问题,本发明采用了如下技术方案:
[0018] 一种分布式多点同步系统,所述系统包括两个以上同步终端。两两终端之间具有 直接的或间接的通信路径;所述同步终端包括同步对象数据库、同步消息数据库、同步处理 模块、同步请求模块、同步服务模块。
[0019] 所述同步请求模块负责向其他终端发送同步请求。该请求包含同步的目标对象和 同步对象的特征域。该模块也负责于对方终端交换同步消息。
[0020] 所述同步服务模块负责响应其他终端发来的同步请求,根据请求的内容于对方终 端交换同步消息。
[0021] 所述同步处理模块负责处理接收的同步消息,更新同步对象的内容,存入同步对 象数据库;该模块也负责响应终端内部的同步需求,制作同步消息,由同步请求模块和同步 服务模块对外发送。
[0022] 所述同步对象数据库用于存储需要同步的对象。所述同步对象是指任何可以被共 享和同步的内容单元,可以是如博客、文件、任务、图片等简单的内容,也可以是基于不同应 用的对象,例如日历、财务报表、计划、讨论等。
[0023] 所述同步消息数据库用于保存该终端接收和发送的所有同步消息。
[0024] 一种分布式多点同步系统,所述系统包含了基于特征域和索引的同步对象结构和 同步消息结构。
[0025] 每一个同步对象由多个特征域组成。每个特征域是由特征单元组成的列表。每个 特征单元包含了索引项和内容项。
[0026] 同步消息的结构:
[0027] ?消息ID :必须为全球唯一的标识码,保证消息的唯一性。
[0028] ·目标同步对象ID :必须为全球唯一的标识码,保证同步对象的唯一性。
[0029] ?同步消息体:包含同步操作,即对同步对象的特征域进行更新的操作指示。该操 作对特征域的更新是基于索引的。
[0030] ?消息生成用户ID
[0031] ?消息生成终端ID
[0032] 本发明包含了一种上述系统的同步方法,所述方法包括如下步骤:
[0033] 1.同步消息的制作
[0034] 当终端用户对一个同步对象进行操作,修改了该对象的内容时,同步处理模块将 生成一条同步消息,该同步消息被存入同步消息数据库和同步请求队列。
[0035] 2.同步请求队列
[0036] 每个终端为每个同步联系人维护一个同步请求队列,其中存放需要与该联系人交 换的同步消息。当该终端与该联系人的终端通信时,会将同步请求队列中的同步消息发送 给对方。
[0037] 3.同步协议
[0038] 同步请求模块和同步服务模块负责与其他终端采用同步协议进行通信。
[0039] 同步请求模块
[0040] 同步请求模块需要完成两个任务:
[0041] 任务1 :向外发送最新的同步消息
[0042] 同步请求模块检查同步请求队列。当发现该队列中存在同步消息时,对每一个同 步消息采取如下步骤:
[0043] 5)检查同步对象的来源,并主动联系对象来源的终端,发起同步请求。该请求包含 了同步消息ID
[0044] 6)对方终端的同步服务模块响应请求,检查同步消息ID,如果在其同步消息数据 库中没有包含该消息,则回应要求接收该消息。
[0045] 7)同步请求方将同步消息发送给接收方。
[0046] 8)接收方将同步消息交给同步处理模块,同步处理模块更新对象,并将同步消息 存放到同步消息数据库中。
[0047] 任务2 :向其他终端查询是否有最新的同步消息
[0048]同步请求模块向本用户的其他终端查询是否有最新的同步消息。
[0049] 如果本终端存放了来自其他用户的对象,则同步请求模块将联系这个对象的来源 用户的终端,查询是否有关于该对象的同步消息。
[0050] 4)向对方终端发起同步请求。该请求包含了:
[0051] ?同步对象I D
[0052] ?在消息数据库中最新的有关该对象的消息I D
[0053] 5)对方终端的同步服务模块响应请求,检查请求中的消息ID,如果在其同步消息 数据库中存在更新的消息,则将这些更新的同步消息发送给请求方。
[0054] 6)请求方将同步消息交给同步处理模块,同步处理模块更新对象,并将同步消息 存放到同步消息数据库中。
[0055] 同步服务模块
[0056] 同步服务模块等待来自其他终端的同步请求,对来自其他终端同步请求模块的请 求分别作出回应。
[0057] 请求1 :对方终端要求发送同步消息
[0058] 4)同步服务模块响应请求,检查同步消息ID,如果在其同步消息数据库中没有包 含该消息,则回应要求接收该消息。
[0059] 5)从对方终端接收该消息。
[0060] 6)将同步消息交给同步处理模块,同步处理模块更新对象,并将同步消息存放到 同步消息数据库中。
[0061] 请求2 :对方终端要求查询最新同步消息
[0062] 同步服务模块响应查询请求,检查请求中的消息ID,如果在其同步消息数据库中 存在更新的消息,则将这些更新的同步消息发送给对方终端。
[0063] 本发明中多点同步系统的优越性在于:
[0064] 1)不需要中心同步服务器
[0065] 应用此同步系统技术的软件和服务不需要部署云服务或中心服务器,所有的同步 数据保存在用户自己的终端上。网络服务商省却了巨额的带宽和存储成本,同时减少了可 靠性和安全性风险。商业公司用户不需要安装建立独立的中心服务器。减少了软硬件支出 和人员开支。由于数据和内容分散在员工的电脑上,大大提高了可靠性和安全性。
[0066] 2)更高的安全性
[0067] 由于用户数据不保存在云端或中心服务器上,用户不用担心数据泄密问题。
[0068] 3)更快的同步速度
[0069] 终端之间的同步速度更快,可以保证及时通信的需要。由于终端之间之间通信,大 大方便了高容量的视频内容的共享。
[0070] 本发明中的多点同步方法具有如下特点:
[0071] 1)同步对象和同步消息的唯一'I"生
[0072] 由于同步对象和同步消息具备全球唯一性,保证了各个终端不会重复同步更新。 同步对象和同步消息的唯一性是解决多点同步一致性的基础。
[0073] 2)基于特征域和索引的同步更新操作
[0074] 同步消息中的同步操作,包含了针对同步对象的更新操作指示。该操作是基于目 标对象的特征域和索引,其特点是:
[0075] ?每个同步消息所指定的更新操作仅仅针对对象的某个特征域。
[0076] ?被更新的特征域是基于索引的,即仅仅特定索引项的内容被更新。
[0077] 这种同步更新操作的好处,就是不会重写覆盖对象的全部内容,而是仅仅更新对 象的特定特征域中的特定索引单元。例如,对一个数据表的更新操作,仅仅包含增加、删除 或更新特定的数据项;对一个讨论组的操作,仅仅包含一个新的帖子的增加操作。这样,多 个终端就可以对同一个对象同时进行更新,而不会破坏该对象的一致性。
[0078] 3)可靠的同步协议
[0079] 该方案的同步协议包含了两个步骤,保证了通信的双方交换各自需要的同步消 息,并保证同步消息的正确顺序。在此过程中,同步双方各自检查对方拥有的消息和自己拥 有的消息,并仅仅接收和处理自己没有的同步消息。这一过程保证了同步对象中每个终端 中都收到完整的消息序列。同步消息不会被遗漏,也不会被重复。

【专利附图】

【附图说明】
[0080] 图1为实施例中多点同步终端的结构示意图。
[0081] 图2为实施例中的同步对象结构示意图。

【具体实施方式】
[0082] 下面结合附图详细说明本发明的实施例。
[0083] 实施例:一个基于多点同步系统的个人笔记本SmartPage
[0084] 本实施例描述的SmartPage个人笔记本是一个安装在P C、手机或P A D上的应 用软件,用于记录用户的笔记、文件、图片、任务等。个人笔记本上的内容可以以页为单位在 用户之间共享。共享的内容被保存在各个用户的设备上,通过多点同步系统保持自动同步。 这个同步过程不需要借助中心服务器或云服务来完成,全部依靠用户电脑和移动终端之间 的直接通信完成。
[0085] SmartPage的内容对象具有高度灵活性,可以是如博客、文件、任务、图片等简单的 内容,也可以是基于不同应用的对象,例如日历、财务报表、计划、讨论等。这些对象都可以 被添加在用户的页面上,设置为共享,在不同用户的页面中复制。任何更新都会被同步到其 他终端上。用户也可以设置某些对象为共享协作对象,即其他用户可以更新该对象的内容。
[0086] SmartPage全面应用了本发明专利所述的多点同步的体系结构和同步方法。每个 同步终端软件都由同步对象数据库、同步消息数据库、同步处理模块、同步请求模块和同步 服务模块组成,参见图1.
[0087] SmartPage中的对象是建立在一个名为SmartNote的对象模型之上的。该对象模 型建立在特征域和索引单元的基础上,所有的同步操作都基于这个对象模型。该对象模型 的结构参见图2.
[0088] 应用本发明专利所述的多点同步协议,我们开发了一个基于SmartNote的多点同 步协议。该协议的具体描述如下:
[0089] 1)同步消息格式
[0090] 籲 ID :消息 ID
[0091] · TARGET :目标对象 ID
[0092] 籲BODY :同步消息体,包含同步更新操作
[0093] · AUTHOR :消息生成用户ID
[0094] · HOST :消息生产终端ID
[0095] 2)同步协议
[0096] ?终端A向终端B发起请求建立连接。
[0097] ?阶段 1 :
[0098] i.终端A向终端B递交"愿望清单"。愿望清单包含了终端A希望查询的同步对 象。
[0099] 终端 AWISHLIST--"终端 B
[0100] WISHLIST :
[0101][对象发布用户1 :[对象1 :消息索引1 ;对象2 :消息索引2..],
[0102] 对象发布用户2 :[对象1 :消息索引1 ;对象2 :消息索引2..],
[0103]
[0104] ]
[0105] ii.终端B根据"愿望清单"检查同步消息数据库,返回符合清单要求(即终端A 没有的消息)的消息列表。终端A处理这些消息,并保存到消息数据库。
[0106] 终端A ---终端β
[0107] [对象发布用户1 :[对象1 :消息列表1 ;对象2 :消息列表2..],
[0108] 对象发布用户2 :[对象1 :消息列表1 ;对象2 :消息列表2..],
[0109]
[0110] ]
[0111] iii.终端Α检查自己的同步请求队列。如果该队列包含需要发给终端Β的消息, 则将这些消息ID通知对方。
[0112] 终端 A STOCK LIST--"终端 Β
[0113] STOCK LIST :
[0114] [对象发布用户1 :[对象1 :消息ID1 ;对象2 :消息ID2. ·],
[0115] 对象发布用户2 :[对象1 :消息ID1 ;对象2 :消息ID2..],
[0116]
[0117] ]
[0118] iv.终端B检查自己的消息数据库,如果发现自己需要某些消息,则将需要消息的 ID列表发送给终端A。
[0119] 终立而A 终立而B
[0120] [对象发布用户1 :[对象1 :消息ID1 ;对象2 :消息ID2. ·],
[0121] 对象发布用户2 :[对象1 :消息ID1 ;对象2 :消息ID2..],
[0122]
[0123] ]
[0124] V.终端A将终端B需要的消息发送给对方。
[0125] 终端A-终端B
[0126] [对象发布用户1 :[对象1 :消息1 ;对象2 :消息2..],
[0127] 对象发布用户2 :[对象1 :消息1 ;对象2 :消息2..],
[0128]
[0129] ]
[0130] ?阶段 2:
[0131] vi.终端A向终端B询问是否有"愿望清单"。终端B将自己的愿望清单发送给终 端A。
[0132] 终端 A <--终端 B WISHLIST
[0133] WISHLIST :
[0134] [对象发布用户1 :[对象1 :消息索引1 ;对象2 :消息索引2..],
[0135] 对象发布用户2 :[对象1 :消息索引1 ;对象2 :消息索引2..],
[0136]
[0137] ]
[0138] vii.终端A根据"愿望清单"检查同步消息数据库,返回符合清单要求(即终端B 没有的消息)的消息列表。终端B处理这些消息,并保存到消息数据库。
[0139] 终端A--"终端B
[0140] [对象发布用户1 :[对象1 :消息列表1 ;对象2 :消息列表2..],
[0141] 对象发布用户2 :[对象1 :消息列表1 ;对象2 :消息列表2..],
[0142]
[0143] ]
[0144] viii.终端B检查自己的同步请求队列。如果该队列包含需要发给终端A的消息, 则将这些消息ID通知对方。
[0145] 终端 A <--终端 B STOCK LIST
[0146] STOCK LIST :
[0147] [对象发布用户1 :[对象1 :消息ID1 ;对象2 :消息ID2..],
[0148] 对象发布用户2 :[对象1 :消息ID1 ;对象2 :消息ID2..],
[0149] …
[0150] ]
[0151] ix.终端A检查自己的消息数据库,如果发现自己需要某些消息,则将需要消息的 ID列表发送给终端B。
[0152] 终端A---"终端β
[0153] [对象发布用户1 :[对象1 :消息ID1 ;对象2 :消息ID2. ·],
[0154] 对象发布用户2 :[对象1 :消息ID1 ;对象2 :消息ID2..],
[0155]
[0156] ]
[0157] X.终端Β将终端Α需要的消息发送给对方。
[0158] 终端A <--终端β
[0159] [对象发布用户1 :[对象1 :消息1 ;对象2 :消息2..],
[0160] 对象发布用户2 :[对象1 :消息1 ;对象2 :消息2..],
[0161]
[0162]]
[0163] 综上所述,本发明提供了一种多点同步的系统和方法,实现了在网络中的多个终 端之间直接通信同步,而不需要借助中心服务器进行内容的复制和转发。这种方法免除了 建立中心服务器或云服务的需要,减少了网络服务商和商业公司的投资和运营成本。保证 了用户数据的安全性和可靠性,提高了同步数据的实时性。
[0164] 这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例 中。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实 施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明 的精神或本质特征的情况下,本发明可以以其它形式、结构、布置、比例,以及用其它组件、 材料和部件来实现。在不脱离本发明范围和精神的情况下,可以对这里所披露的实施例进 行其它变形和改变。
【权利要求】
1. 一种分布式的多点同步系统及其同步方法,其特征在于,所述系统由两个以上分布 式的同步终端组成;所述用户终端之间通过同步协议直接通信和交换同步内容,不需要由 同步服务器进行内容的中转和分发。
2. 根据权利要求1所述的多点同步系统,其特征在于,所述多点同步系统可以在多个 终端上保持同步对象的内容。所述同步对象是指任何可以被共享和同步的内容单元,可以 是如博客、文件、任务、图片等简单的内容,也可以是基于不同应用的对象,例如日历、财务 报表、计划、讨论等。 所述同步对象可以由某个同步终端生成,并被其他同步终端保存。该同步对象可以被 多个终端同时更新,其更新的结果可以被同步到所有保存该对象的终端上。
3. 根据权利要求1所述的多点同步系统,其特征在于,所述同步终端包括同步对象数 据库、同步消息数据库、同步处理模块、同步请求模块、同步服务模块。 所述同步请求模块负责向其他终端发送同步请求。该请求包含同步的目标对象和同步 对象的特征域。该模块也负责与对方终端交换同步消息。 所述同步服务模块负责响应其他终端发来的同步请求,根据请求的内容于对方终端交 换同步消息。 所述同步处理模块负责处理接收的同步消息,更新同步对象的内容,存入同步对象数 据库;该模块也负责响应终端内部的同步需求,制作同步消息,由同步请求模块和同步服务 模块对外发送。 所述同步对象数据库用于存储需要同步的对象。所述同步对象是指任何可以被共享和 同步的内容单元,可以是如博客、文件、任务、图片等简单的内容,也可以是基于不同应用的 对象,例如日历、财务报表、计划、讨论等。 所述同步消息数据库用于保存该终端接收和发送的所有同步消息。
4. 根据权利要求1所述的多点同步方法,其特征在于,所述同步终端之间交换同步消 息。每个同步消息包含了针对一个或多个同步对象的更新操作。每个同步消息具有唯一性, 即任何用户和终端产生的同步消息都是唯一的。
5. 根据权利要求1所述的多点同步系统,其特征在于,所述系统包含了基于特征域和 索引的同步对象结构和同步消息结构。 每一个同步对象由多个特征域组成。每个特征域是由特征单元组成的列表。 每个特征单元包含了索引项和内容项。 同步消息的结构: ?消息工D :必须为全球唯一的标识码,保证消息的唯一性。 ?目标同步对象ID :必须为全球唯一的标识码,保证同步对象的唯一性。 ?同步消息体:包含同步操作,即对同步对象的特征域进行更新的操作指示。 该操作对特征域的更新是基于索引的。 ?消息生成用户ID ?消息生成终端ID。
6. 根据权利要求4和要求5所述的多点同步系统和方法,其特征在于,所述的同步消息 包含了针对目标对象的基于特征域和索引的更新操作指示。基于特征域和索引的更新操作 的含义是: 1) 每个同步消息所指定的更新操作仅仅针对对象的某个特征域。 2) 被更新的特征域是基于索引的,即仅仅特定索引项的内容被更新。
7.根据权利要求1所述的多点同步系统和同步方法,其特征在于,所述方法包括如下 步骤: 1) 同步消息的制作 当终端用户对一个同步对象进行操作,修改了该对象的内容时,同步处理模块将生成 一条同步消息,该同步消息被存入同步消息数据库和同步请求队列。 2) 同步请求队列 每个终端为每个同步联系人维护一个同步请求队列,其中存放需要与该联系人交换的 同步消息。当该终端与该联系人的终端通信时,会将同步请求队列中的同步消息发送给对 方。 3) 同步协议 同步请求模块和同步服务模块负责与其他终端采用同步协议进行通信。 *同步请求模块 同步请求模块需要完成两个任务: 任务1 :向外发送最新的同步消息 同步请求模块检查同步请求队列。当发现该队列中存在同步消息时,对每一个同步消 息采取如下步骤: 1) 检查同步对象的来源,并主动联系对象来源的终端,发起同步请求。该请求包含了同 步消息ID。 2) 对方终端的同步服务模块响应请求,检查同步消息ID,如果在其同步消息数据库中 没有包含该消息,则回应要求接收该消息。 3) 同步请求方将同步消息发送给接收方。 4) 接收方将同步消息交给同步处理模块,同步处理模块更新对象,并将同步消息存放 到同步消息数据库中。 任务2 :向其他终端查询是否有最新的同步消息。 同步请求模块向本用户的其他终端查询是否有最新的同步消息。 如果本终端存放了来自其他用户的对象,则同步请求模块将联系这个对象的来源用户 的终端,查询是否有关于该对象的同步消息。 1) 向对方终端发起同步请求。该请求包含了: ?同步对象ID ?在消息数据库中最新的有关该对象的消息ID索引 2) 对方终端的同步服务模块响应请求,检查请求中的消息ID,如果在其同步消息数据 库中存在更新的消息,则将这些更新的同步消息发送给请求方。 3) 请求方将同步消息交给同步处理模块,同步处理模块更新对象,并将同步消息存放 到同步消息数据库中。 *同步服务模块 同步服务模块等待来自其他终端的同步请求,对来自其他终端同步请求模块的请求分 别作出回应。 请求1 :对方终端要求发送同步消息 1) 同步服务模块响应请求,检查同步消息ID,如果在其同步消息数据库中没有包含该 消息,则回应要求接收该消息。 2) 从对方终端接收该消息。 3) 将同步消息交给同步处理模块,同步处理模块更新对象,并将同步消息存放到同步 消息数据库中。 请求2 :对方终端要求查询最新同步消息 同步服务模块响应查询请求,检查请求中的消息ID,如果在其同步消息数据库中存在 更新的消息,则将这些更新的同步消息发送给对方终端。
【文档编号】H04L29/08GK104052768SQ201310079934
【公开日】2014年9月17日 申请日期:2013年3月13日 优先权日:2013年3月13日
【发明者】彭涛 申请人:彭涛
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1