P2p网络中的数据同步
阅读说明:本技术 P2p网络中的数据同步 (Data synchronization in P2P networks ) 是由 陈建军 裴春峰 刘晔 马科·季米特里耶维奇 于 2020-03-05 设计创作,主要内容包括:一种用于P2P自组织网络中数据同步的计算机实现方法包括:检索标识形成所述P2P网络的多个设备的网络配置信息;确定第一设备的本地物理时间与第二设备的本地物理时间之间的时间偏移;检测存储在所述第一设备中的键值存储中的多个数据对象中的一个数据对象的变化,其中,所述多个数据对象中的每个数据对象包括同步指示符;根据所述同步指示符,将所述数据对象变化传送到至少第二设备;在从所述至少第二设备接收到确认收到所述数据对象变化的信息时,使用时间戳更新所述网络配置信息,其中,所述时间戳基于所述时间偏移且表示传送所述数据对象变化时所述第一设备的所述本地物理时间。(A computer-implemented method for data synchronization in a P2P ad hoc network, comprising: retrieving network configuration information identifying a plurality of devices forming the P2P network; determining a time offset between a local physical time of the first device and a local physical time of the second device; detecting a change to one of a plurality of data objects stored in a key-value store in the first device, wherein each of the plurality of data objects includes a synchronization indicator; communicating the data object change to at least a second device in accordance with the synchronization indicator; upon receiving information from the at least second device confirming receipt of the data object change, updating the network configuration information with a timestamp, wherein the timestamp is based on the time offset and represents the local physical time of the first device at the time the data object change was transmitted.)
相关申请交叉引用
本申请要求于2019年3月6日提交的申请号为62/814,554、发明名称为“P2P网络中的数据同步(Data Synchronization in a P2P Network)”的美国临时申请的优先权和权益,该申请通过引用并入本文中。
技术领域
本发明涉及对等(peer-to-peer,P2P)网络中的数据同步,P2P网络包括P2P无线自组织网络。一些方面涉及通过同步时间戳进行P2P自组织网络中的数据同步。
背景技术
当两个以上设备(手机、智能电视、PC、路由器、智能摄像机等)连接在一起时,无需通过单独的服务器计算机就可以创建P2P网络共享计算资源。P2P网络可以是自组织网络,其中的对等设备通过蓝牙或Wi-Fi相互连接,以共享资源。P2P网络也可以是一个永久性的基础设施,通过有线连接链接一些设备。
手机、PAD和各种物联网(Internet-of-Things,IoT)计算设备越来越受欢迎。数据变化可以同时在许多设备上发生,因此,对于在计算设备上执行的许多应用来说,能够实时同步设备之间的数据改变是至关重要的。
发明内容
现在描述各种示例,简单地介绍一些概念,在
具体实施方式
中会进一步描述这些概念。发明内容并非旨在确定请求保护的主题的关键或必要特征,也并非旨在限制请求保护的主题的范围。
根据本发明的第一方面,提供了一种用于对等(peer-to-peer,P2P)自组织网络中数据同步的计算机实现方法。所述方法包括:检索标识形成所述P2P自组织网络的多个设备的网络配置信息;确定所述多个设备中的第一设备的本地物理时间与所述多个设备中的第二设备的本地物理时间之间的时间偏移;检测存储在所述第一设备中的键值存储中的多个数据对象中的一个数据对象的变化,其中,所述多个数据对象中的每个数据对象包括同步指示符;根据所述同步指示符,将所述数据对象的所述变化传送到所述P2P自组织网络中的所述多个设备中的至少第二设备;在从所述第二设备接收到确认收到所述数据对象变化的信息时,使用时间戳更新所述网络配置信息,其中,所述时间戳基于所述时间偏移且表示传送所述数据对象变化时所述第一设备的所述本地物理时间。
根据所述第一方面,在所述方法的第一种实现方式中,所述网络配置信息包括形成所述P2P自组织网络的所述多个设备中的每个设备的设备配置文件信息。所述设备配置文件信息包括:设备标识信息,与所述设备相关;发送水印,表示与所述设备最后一次成功通信的时间戳;在线指示符,表示所述设备在所述P2P自组织网络中是否处于激活状态。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第二种实现方式中,更新所述网络配置信息包括:使用表示所述数据对象变化传送到所述至少第二设备时所述第一设备的所述本地物理时间的所述时间戳,为所述至少第二设备更新所述设备配置文件信息中的所述发送水印。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第三种实现方式中,所述时间戳包括传送所述数据对象变化时所述第一设备的所述本地物理时间,并通过所述时间偏移调整。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第四种实现方式中,所述多个数据对象中的每个数据对象还包括:键值对;时间戳,表示创建所述数据对象的时间;删除标志,表示是否要删除所述数据对象。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第五种实现方式中,存储在所述键值存储中的所述多个数据对象中的每个数据对象的所述键值对包括与在所述第一设备上执行的应用程序相关的应用程序数据。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第六种实现方式中,从所述多个设备中的第三设备接收所述数据对象的更新版本,其中,所述数据对象的所述更新版本包括传送所述数据对象的所述更新版本时所述第三设备的本地物理时间的时间戳。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第七种实现方式中,当表示创建所述数据对象的时间的时间戳小于通过所述更新版本接收的时间戳时,用所述数据对象的所述更新版本替换所述数据对象。
根据所述第一方面或所述第一方面的任一上述实现方式,在所述方法的第八种实现方式中,当表示创建所述数据对象的时间的时间戳大于通过所述更新版本接收的时间戳时,丢弃所述数据对象的所述接收到的更新版本。
根据本发明的第二方面,提供了一种数据同步系统,包括:存储器,存储指令;一个或多个处理器,与所述存储器通信。所述一个或多个处理器执行所述指令以:检索标识形成对等(peer-to-peer,P2P)自组织网络的多个设备的网络配置信息;确定所述多个设备中的第一设备的本地物理时间与所述多个设备中的第二设备的本地物理时间之间的时间偏移;检测存储在所述第一设备中的键值存储中的多个数据对象中的一个数据对象的变化,其中,所述多个数据对象中的每个数据对象包括同步指示符;根据所述同步指示符,将所述数据对象的所述变化传送到所述P2P自组织网络中的所述多个设备中的至少第二设备;在从所述第二设备接收到确认收到所述数据对象变化的信息时,使用时间戳更新所述网络配置信息,其中,所述时间戳基于所述时间偏移且表示传送所述数据对象变化时所述第一设备的所述本地物理时间。
根据所述第二方面,在所述数据同步系统的第一种实现方式中,所述网络配置信息包括形成所述P2P自组织网络的所述多个设备中的每个设备的设备配置文件信息。所述设备配置文件信息包括:设备标识信息,与所述设备相关;发送水印,表示与所述设备最后一次成功通信的时间戳;在线指示符,表示所述设备在所述P2P自组织网络中是否处于激活状态。
根据所述第二方面或所述第二方面的任一上述实现方式,在所述数据同步系统的第二种实现方式中,为了更新所述网络配置信息,所述一个或多个处理器执行所述指令以:使用表示所述数据对象变化传送到所述至少第二设备时所述第一设备的所述本地物理时间的所述时间戳,为所述至少第二设备更新所述设备配置文件信息中的所述发送水印。
根据所述第二方面或所述第二方面的任一上述实现方式,在所述数据同步系统的第三种实现方式中,所述多个数据对象中的每个数据对象还包括:键值对;时间戳,表示创建所述数据对象的时间;删除标志,表示是否要删除所述数据对象。
根据所述第二方面或所述第二方面的任一上述实现方式,在所述数据同步系统的第四种实现方式中,存储在所述键值存储中的所述多个数据对象中的每个数据对象的所述键值对包括与在所述第一设备上执行的应用程序相关的应用程序数据。
根据所述第二方面或所述第二方面的任一上述实现方式,在所述数据同步系统的第五种实现方式中,从所述多个设备中的第三设备接收所述数据对象的更新版本,其中,所述数据对象的所述更新版本包括传送所述数据对象的所述更新版本时所述第三设备的本地物理时间的时间戳。
根据所述第二方面或所述第二方面的任一上述实现方式,在所述数据同步系统的第六种实现方式中,当表示创建所述数据对象的时间的时间戳小于通过所述更新版本接收的时间戳时,用所述数据对象的所述更新版本替换所述数据对象。
根据本发明的第三方面,提供了一种非瞬时性计算机可读介质,所述非瞬时性计算机可读介质存储用于对等(peer-to-peer,P2P)自组织网络中数据同步的指令,当一个或多个处理器执行所述指令时,使所述一个或多个处理器执行以下步骤。所述操作包括:检索标识形成所述P2P自组织网络的多个设备的网络配置信息;确定所述多个设备中的第一设备的本地物理时间与所述多个设备中的第二设备的本地物理时间之间的时间偏移;检测存储在所述第一设备中的键值存储中的多个数据对象中的一个数据对象的变化,其中,所述多个数据对象中的每个数据对象包括同步指示符;根据所述同步指示符,将所述数据对象的所述变化传送到所述P2P自组织网络中的所述多个设备中的至少第二设备;从所述第二设备接收到确认收到所述数据对象变化的信息之后,使用时间戳更新所述网络配置信息,其中,所述时间戳基于所述时间偏移且表示传送所述数据对象变化时所述第一设备的所述本地物理时间。
根据所述第三方面,在所述非瞬时性计算机可读介质的第一种实现方式中,为了确定所述时间偏移,所述指令还使所述一个或多个处理器执行以下步骤:在与所述第一设备的第一时间戳相关的时间,将来自所述第一设备的同步请求传送到所述第二设备;在所述第一设备的第二时间戳,从所述第二设备接收同步响应,其中,所述同步响应包括所述第二设备的第一时间戳和所述第二设备的第二时间戳,分别表示所述第二设备接收所述同步请求的本地时间和发送所述同步响应的本地时间;根据所述第一设备的所述第一时间戳和所述第二时间戳以及所述第二设备的所述第一时间戳和所述第二时间戳,确定所述时间偏移。
根据所述第三方面或所述第三方面的任一上述实现方式,在所述非瞬时性计算机可读介质的第二种实现方式中,所述指令还使所述一个或多个处理器执行以下步骤:从所述多个设备中的至少第三设备接收所述数据对象的更新版本,其中,所述数据对象的所述更新版本包括传送所述数据对象的所述更新版本时所述至少第三设备的本地物理时间的时间戳;执行以下操作之一:当表示在所述第一设备创建所述数据对象的时间的时间戳小于通过所述更新版本接收的时间戳时,用所述数据对象的所述更新版本替换所述数据对象;当表示在所述第一设备创建所述数据对象的时间的时间戳大于通过所述更新版本接收的时间戳时,丢弃所述数据对象的所述接收到的更新版本。
前述示例中的任一个可以与前述其它示例中的任何一个或多个组合以在本发明范围内产生新实施例。
附图说明
在不一定按比例绘制的附图中,不同视图中相似的数字可以描述类似组件。附图通过示例而非限制的方式一般地示出了在本文中描述的各种实施例。
图1为一些示例性实施例提供的具有P2P自组织网络的网络架构的高级系统概述,该网络架构使用提供数据同步和时间戳同步功能的自然存储(natural store,NS)模块。
图2为一些示例性实施例提供的P2P自组织网络中设备中的自然存储模块的框图。
图3为一些示例性实施例提供的存储在自然存储的本地数据库中的用户数据和系统数据配置。
图4为一些示例性实施例提供的适用于在P2P自组织网络中进行数据同步的方法的流程图。
图5为一些示例性实施例提供的适用于在P2P自组织网络中数据同步期间用接收到的数据替换本地数据或丢弃接收到的数据的方法的流程图。
图6为一些示例性实施例提供的适用于在新的设备加入P2P自组织网络时更新数据同步组的方法的流程图。
图7为一些示例性实施例提供的P2P自组织网络中的设备之间的通信交换,以获得进行时间戳同步的设备之间的时间戳偏移的框图。
图8为一些示例性实施例提供的适用于时间戳同步的方法的流程图。
图9为一些示例性实施例提供的适用于在P2P自组织网络中进行数据同步的方法的流程图。
图10为一些示例性实施例提供的代表性软件架构的框图,所述软件架构可与本文描述的各种设备硬件结合使用。
图11为一些示例性实施例提供的实现算法和执行方法的设备的电路的框图。
具体实施方式
首先应理解,即使下文提供了一个或多个实施例的示例性实现方式,但是结合图1至图11描述的所公开系统和/或方法可使用任何数量的技术实现,无论该技术是当前已知还是尚未存在的。本发明决不应限于下文所说明的说明性实施方案、附图和技术,包括本文所说明并描述的示例性设计和实施方案,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
以下结合附图进行详细描述,所述附图是描述的一部分,并通过图解说明的方式示出可以实施本发明的具体实施例。这些实施例进行了足够详细的描述以使本领域技术人员能够实践本发明主题,应理解,可以利用其它实施例,并且在不脱离本发明范围的情况下可以进行结构、逻辑和电更改。因此,以下描述的示例性实施例并不当作限定,本发明的范围由所附权利要求书界定。
本文所使用的术语“基于网络的服务基础设施”包括将按需计算容量(例如,通过一个或多个虚拟机或运行在网络设备上的其它虚拟资源)和存储容量作为一种服务提供给多个网络设备和存储容量作为服务向终端接收者(例如,服务基础设施的客户)社区的多个网络设备,其中,终端接收者通过网络以通信方式耦合到服务基础设施中的网络设备。服务基础设施的客户可以使用一个或多个计算设备(也称为客户设备或主机设备)通过网络访问和管理服务基础设施提供的服务(例如计算或存储服务)。客户设备、网络和基于网络的服务基础设施可以统称为“网络架构”。服务基础设施的客户也可以称为“用户”。
本文所使用的术语“自然存储”是指包括适当的电路、逻辑、接口和/或代码的模块的集合,这些电路、逻辑、接口和/或代码可以用于P2P网络中的计算设备中,以提供与数据同步、时间戳同步相关的功能,以及下文讨论的其它功能。图2示出了P2P网络设备使用的示例性自然存储的图。
由于设备可以随时加入和离开,无论是永久(即成员关系更改)还是临时(即设备上线/离线),因此P2P自组织网络会对数据同步带来挑战。此外,当使用相同数据但在不同设备上进行并发数据更新时,会发生数据冲突。一种技术方案可以是根据更改时间戳解决这些冲突。但是,当时钟漂移发生时,设备上的时钟会变得不同,导致P2P自组织网络中的时间戳不同步。
本文公开的技术可用于P2P自组织网络中的实时数据同步和设备时间戳同步,P2P自组织网络不需要服务器或网络后端来执行集中协调。这种方法可以实现低时延数据同步,并且在没有互联网连接时也可以工作。更具体地说,本文公开的技术使用一种利用时间戳的可靠的跨平台实时P2P数据同步算法。此外,为了实现不同设备之间具有一致的时间戳,还公开了P2P网络中的多个设备之间的时间戳同步技术。
为了执行P2P自组织网络中的设备之间的数据同步,在每个设备上维护自然存储(或NaturalStore或NS),其中每个存储包括提供键值存储功能的数据库、P2PDataSync模块、TimeSync模块和SyncCommunicator模块。P2PDataSync模块处理设备之间的数据同步,包括在同步失败时重试数据通信。TimeSync模块通过在每个设备上确定设备与P2P网络中的多个其余设备中的每个设备之间的时间偏移来处理多个设备之间的时间戳同步。然后,选择最大偏移为特定设备的设备偏移,每次设备生成时间戳时,时间戳都会通过设备偏移调整。SyncCommunicator模块负责在P2P网络中的设备之间发送数据、设备通知事件和时间戳。下面讨论自然存储提供的其它数据同步和时间戳同步功能。
使用所公开技术的好处包括(1)即使当设备离线(或与其它设备或主网络的网络连接中断)时,由每个自然存储提供的键值存储功能也可以继续工作,当设备上线(或网络连接恢复)时,数据同步自动恢复;(2)使用轻量级P2P时间戳同步算法,在P2P网络中调整时间戳和同步设备时间,不需要中央服务器。此外,所公开的数据同步技术是基于P2P的,不需要群首(例如,中央服务器)来协调数据同步,这可能成为可能的单点故障。此外,与基于网络时间协议(network time protocol,NTP)的方法(在这种方法中,与NTP服务器的连接是必须的)相比,基于时间戳的冲突解决技术比基于无冲突复制数据类型(conflict-freereplicated data type,CRDT)的方法更普遍适用,其中,P2P时间戳同步技术的响应时间得到降低,并且能够在网络连接(例如,与互联网连接)不可用时同步设备时间。
图1为一些示例性实施例提供的具有P2P自组织网络的网络架构的高级系统概述,该P2P自组织网络使用提供数据同步和时间戳同步功能的自然存储模块。参考图1,网络架构100可以包括多个设备(例如,用户设备)108、110……112,这些设备通过网络106以通信方式耦合到基于网络的服务基础设施104。在一些方面,设备108……112可以形成P2P自组织网络102,并且可以与对应的用户150……152相关联。用户150……152中的每个都可以使用设备108……112中的一个或多个与基于网络的服务基础设施104或与P2P自组织网络中的其它设备交互,例如,所述P2P自组织网络使用可以在设备中实现为网页客户端或应用程序(app)客户端的网络访问客户端(图1中未示出)。
用户150……152中的每个可以是人类用户(例如,人类)、机器用户(例如,由软件程序配置与设备108……112和基于网络的服务基础设施104交互的计算机),或其任何适当的组合(例如,由机器辅助的人类或由人类监督的机器)。用户150……152不是网络架构100的一部分,但各自都与设备108……112中的一个或多个相关联,并且可以是设备的用户(例如,用户150可以是设备108的所有者,用户152可以是设备112的所有者)。例如,设备108可以是台式电脑、车辆计算机、平板计算机、导航设备、便携式媒体设备或属于用户150的智能手机。用户150……152可以使用设备108……112访问由基于网络的服务基础设施104提供的服务(例如,计算服务或存储相关服务)。计算服务可以由基础设施104中的一个或多个计算设备提供,并且可以包括无服务器计算服务,例如,实例化和使用虚拟机(virtualmachine,VM)、虚拟私有云(virtual private cloud,VPC)、应用程序容器(例如,在VPC中实例化的暖容器),等等。存储相关服务可以包括数据存储服务、数据复制服务等。计算服务还可以包括提供软件即服务(software as a service,SaaS)、基础设施即服务(Infrastructure as a Service,IaaS)、平台即服务(Platform as a Service,PaaS)、桌面即服务(Desktop as a Service,DaaS)、管理软件即服务(managed software as aservice,MSaaS),移动后端即服务(mobile backend as a service,MBaaS)和信息技术管理即服务(information technology management as a service,ITMaaS)。例如,基于网络的服务基础设施104可以提供设备108……112中的一个或多个,可访问与SaaS布置相关的应用程序120……122。
图1中所示的任何设备都可以在通用计算机中实现,该通用计算机通过软件修改(例如,配置或编程)为专用计算机,以执行本文中针对该机器、数据库或设备描述的功能。本文所使用的“数据库”是存储数据的数据存储资源,该数据的结构为文本文件、表、电子表格、关系数据库(例如,对象关系数据库、NoSQL数据库、网络或图数据库)、三重存储、分层数据存储或其任何适当的组合。此外,通过应用程序编程接口(application programminginterface,API)或远程过程调用(remote procedure call,RPC)访问(或存储)的数据可视为从数据库访问(或存储到数据库)。此外,图1中所示的任何两个或多个设备或数据库可以组合成单个机器、数据库或设备,并且本文描述的任何单个机器、数据库或设备的功能可以在多个机器、数据库或设备之间细分。
网络106可以是使机器、数据库和设备(例如,设备108……112和基于网络的服务基础设施104中的设备)之间能够通信的任何网络。因此,网络106可以是有线网络、无线网络(例如,移动或蜂窝网络)或其任何适当的组合。网络106可以包括构成专用网络、公共网络(例如,互联网)或其任何适当组合的一个或多个部分。
在某些方面,计算设备108……112可以通过无线通信链路172、174……176彼此耦合,形成P2P自组织网络102。此外,代替使用应用程序120……122在由基于网络的服务基础设施104提供的SaaS布置中,计算设备108……112可以分别使用对应的设备资源执行应用程序120……122中的一个或多个。此外,在P2P自组织网络102中的设备上执行的每个应用程序120……122与对应的自然存储相关联,该自然存储可以包括用于在P2P自组织网络102中提供数据同步和时间戳同步服务的各种模块(如下文所述)。例如,应用程序120……122与对应的自然储存(natural store,NS)124……126(设备108中)、128……130(设备110中)以及132……134(设备112中)相关联。在这方面,自然存储可以被唯一标识并与给定应用程序和执行所述应用程序的给定设备相关联。
在一些方面,P2P自组织网络102中的设备可以由用户150……152中的至少一个使用。在这方面,自然存储也可以被唯一标识并与给定应用程序、执行此类应用程序的给定设备以及正在使用该设备的给定用户相关联。换句话说,如果用户150和152都使用在设备108上执行的应用程序120,则将在设备108中创建两个单独的自然存储,这两个自然存储都与应用程序120和设备108相关联,其中一个自然存储也与用户150相关联,另一个自然存储也与用户152相关联。
图2为一些示例性实施例提供的P2P自组织网络中设备中的自然存储模块的框图。参考图2,示出了与应用程序(app)120相关联并分别位于设备108和110中的自然存储(natural store,NS)124和128的更详细的图。
NS 124是一个自然存储,具有以下属性:(1)处理与存储在本地数据库(例如214)中的数据相关的API,如Put、Get、Remove和RangeScan API;(2)提供跨平台支持,包括Android、Windows、Linux和iOS;(3)提供一个安全的环境,因为每个设备应用程序和设备用户组合都可以具有与此类组合关联的单个NS;(4)促进同步,因为每个NS都可以被视为设备中的单独同步单元,NS中可以支持数据库事务;(5)提供对NS状态更改事件的回调支持,例如添加数据、更新数据或从本地存储中删除数据,或当设备加入或离开P2P自组织网络时。
NS 124可以包括本地数据库、分布式键值存储,该分布式键值存储包括数据库应用程序编程接口(application programming interface,API)202、执行模块204、P2P数据同步(P2PDataSync)模块206、时间同步(TimeSync)模块208、存储模块210、同步通信器(SyncCommunicator)模块212、本地数据库214和自组织网络服务模块216。
数据库API 202可以用作公共API,用于访问(例如,由应用程序开发人员)由NS124中的一个或多个其余模块204……216提供的数据和时间戳同步功能。执行模块204可以包括合适的电路、逻辑、接口和/或代码,并用作执行引擎,以解析和执行包括数据库API202在内的各种API。P2PDataSync模块206可以包括合适的电路、逻辑、接口和/或代码,并用于执行P2P自组织网络102中的设备之间的P2P数据同步(包括检测到数据同步失败时的数据同步重试)。TimeSync模块208可以包括合适的电路、逻辑、接口和/或代码,并用于执行设备108的时间戳同步。存储模块210可以包括合适的电路、逻辑、接口和/或代码,并用于将用户数据持久保存在本地设备存储器中,例如本地数据库214或另一种类型的存储器中。SyncCommunicator模块212可以包括合适的电路、逻辑、接口和/或代码,并用于通过有线或无线连接(例如,蓝牙或其它类型的无线连接)并使用自组织网络服务模块216,发起设备108与P2P自组织网络102中的其它设备之间的数据通信。自组织网络服务模块216可以包括合适的电路、逻辑、接口和/或代码,并用于通过回调API从P2P网络102中的对等设备接收和发送数据以及设备在线/离线事件。在一些方面,SyncCommunicator模块212可以使用自组织网络服务模块216发送数据和本地时间戳信息,以及通过回调API从P2P网络102中的对等设备接收设备在线/离线事件。
设备110中的NS 128还可以是分布式键值存储,该分布式键值存储包括数据库API222、执行模块224、P2PDataSync模块226、TimeSync模块228、存储模块230、SyncCommunicator模块232、本地数据库234和自组织网络服务模块236。NS 128中的模块222至236具有与NS 124中的对应模块202至216相似的功能,如上所述。此外,图1中所示的与P2P自组织网络中的其它设备(或在设备上执行的应用程序)相关联的其余NS可以包括与参考图2讨论的NS 124相同的模块。
图3为一些示例性实施例提供的存储在自然存储(例如,NS 124)的本地数据库214中的用户数据和系统数据配置。参考图3,本地数据库214用于存储用户数据302和系统数据304。用户数据302可以以键值格式存储为单个数据对象(例如,对象306、308……310)。更具体地说,对象306、308……310分别可以包括以下对应数据:键(例如,312、314……316)、值(例如,318、320……322)、时间戳(例如,324、326……328)、deleted_bit(例如,330、332……334)和sync_bit(例如,336、338……340)。时间戳(例如,324、326……328)是创建对象时的本地设备时间戳。deleted_bit(例如,330、332……334)是当从本地数据库删除对应的数据对象时,可以设置为真(TRUE)(例如,值设置为1)的位。具有设定delete_bit的对象可以定期收集垃圾并从本地数据库中删除垃圾。sync_bit(例如,336、338……340)是可以设置为真(TRUE)的位(例如,值设置为1),表示对应的对象需要同步到P2P网络中的其它对等体(例如,系统数据304中的DataSync组中列出的其它设备)。例如,如果最新的对象更改来自本地设备(例如,108)中执行的Put操作,则可以将sync_bit设置为真(TRUE)。在一些方面,当最新的对象更改来自对等设备的写入(Write)操作时,sync_bit可以被取消设置(例如,设置为假(FALSE)或值0)(例如,从对等设备接收对象的更新版本,其中更新版本的时间戳高于与对象的本地版本关联的当前时间戳)。
在一些方面,数据可以根据以下顺序同步提交(即,存储)到NS 124的本地数据库214的用户数据302中:(1)当存储数据时,使用本地设备时间,将数据作为新的对象存储在用户数据302中,并具有对应的时间戳;(2)设置新创建对象的sync_bit;(3)P2PDataSync模块206可以使用SyncCommunicator模块212和自组织网络服务216(例如,通过后台P2P同步任务)发起对象在P2P网络中的其余设备之间的数据同步。
系统数据304可以包括数据同步组(或DataSync组)350以及其它系统元数据。DataSync组350可以包括与和当前设备(例如,设备108)在相同的P2P自组织网络中的其它对等设备相关联的系统信息。DataSync组350可以包括标识P2P网络中的其它对等设备(例如,通过网络ID或其它类型的设备ID)的设备标识信息352……354,发送水印信息(或sending_watermark)356……358,以及在线指示符信息(或is_online)360……362(可以是一个标志,表示对应设备是在线且属于P2P网络的一部分还是离线且不属于P2P网络的一部分)。
在一些方面,DataSync组350中的设备标识信息352……354可以包括本地数据库214属于的NS的标识信息(即NS_ID)。换句话说,DataSync组350中每个设备的NS_ID可以相同。
在一些方面,sending_watermark信息356……358包括本地时间戳,表示当设备108成功地将数据传送到与对应设备ID相关联的特定设备时的本地时间。例如,当新的对象(或现有对象的更新版本)被设备108同步并传送到其它对等设备进行更新时,设备108可以在接收到来自特定设备的确认信息时,当对象被传送到特定设备时,使用时间戳更新sending_watermark信息。
在一些方面,设备可以动态地添加到DataSync组350中或从DataSync组350中删除。在一些方面,在P2P自组织网络中的发送设备和接收设备之间的动态数据同步期间,每个NS负责发送(以及在失败时重新发送)本地数据更改(例如,新数据对象或对现有数据对象的更新)到DataSync组指示的对等设备(以及设置数据对象的sync_bit时)。NS可以跟踪每个对等设备的数据同步进度,并可以从特定数据对象的sending_watermark连续发送(和重新发送)。在这方面,来自每个对等体的数据同步保证对象按对象时间戳的顺序发送。在接收设备处,如果接收到的对象具有比对应的本地对象更大的时间戳(即,如果对对象的更新与比存储在接收设备处的同一对象的时间戳大的时间戳通信),然后将接收设备处的本地对象替换为接收到的对象(并且将存储在接收设备的本地数据库中的接收到的对象的sync_bit设置为假(FALSE))。如果接收到的对象的时间戳小于本地对象的时间戳,则接收到的对象将被接收设备丢弃。因此,上述数据同步技术的特点是新的数据对象和更新的数据对象的数据同步一致性,P2P自组织网络中没有数据丢失,以及跨不同平台的数据同步支持,具有在线或离线设备状态。
图4为一些示例性实施例提供的适用于在P2P自组织网络中进行数据同步的方法的流程图。参考图4,方法400包括操作402、404、406、408和410。作为示例而非限制,描述方法400为由设备108的NS 124中的一个或多个模块执行。
在操作402中,检测到新的对象或对现有数据对象的修订。例如,P2PDataSync模块206可以检测到通过数据库API 202接收的用于存储在本地数据库214中的新的数据对象。在操作404中,将新的数据对象的sync_bit设置为真(TRUE)。在操作406中,将新的对象(连同表示对象被记录在数据库214中的本地时间的本地时间戳)传送到由NS 124的DataSync组350指示的一个或多个对等设备。在操作408中,NS 124可以检测是否从接收设备接收到新的对象已被接收的确认信息。如果没有接收到确认信息,则在操作406中重新发送对象。如果接收到确认信息,则在操作410中,使用对象被传送到接收设备时的本地时间戳更新与DataSync组350中的接收设备相对应的sending_watermark。
图5为一些示例性实施例提供的适用于在P2P自组织网络中数据同步期间用接收到的数据替换本地数据或丢弃接收到的数据的方法的流程图。参考图5,方法500包括操作502、504、506和508。作为示例而非限制,描述方法500为由设备108的NS 124中的一个或多个模块执行。在操作502中,在第一设备(例如设备108)处从第二设备(例如设备110)接收数据对象,其中第二设备被列出在第一设备的DataSync组(例如,350)中。在操作504中,NS124可以确定接收到的对象的时间戳是否大于对应本地对象的时间戳。例如,设备108可以接收对对象306的更新,并且接收到的更新的时间戳可以与本地数据库214的用户数据302中与对象306相关联的时间戳324进行比较。
如果接收到的对象具有较大的时间戳,则在操作506中,用接收到的对象替换本地对象306,并且将替换对象的sync_bit(例如,图3的sync_bit 336)设置为假(FALSE)。如果接收到的对象具有较小的时间戳,则在操作508中,设备108的NS 124丢弃接收到的对象。
图6为一些示例性实施例提供的适用于在新的设备加入P2P自组织网络时更新数据同步组的方法的流程图。参考图6,方法600包括操作602、604、606、608和610。作为示例而非限制,方法600由设备108的NS 124中的一个或多个模块执行。在操作602中,检测(例如,在设备108上)到网络服务通知,指示新设备(例如,设备110)正在加入P2P自组织网络102。例如,自组织网络服务模块216可以接收回调,并且SyncCommunicator模块212可以通知P2PDataSync模块206,设备110正在通过回调重新加入P2P自组织网络102。在操作604中,P2PDataSync模块206可以确定设备110是否被列出在NS 124的DataSync组350中。如果设备110被列出在DataSync组350中,在操作606中,将设备110的is_online标志设置为真(TRUE)。如果设备110未被列出在DataSync组350中,则在操作608中,可以验证(例如,通过P2PDataSync模块206)设备110的NS ID与设备108的NS124使用的NS ID相同。在验证成功后,在操作610中,可以将设备110加入DataSync组350中。在替代方案中,可以调用回调以让用户授权将设备110添加到DataSync组350中。
从设备110侧,设备110的SyncCommunicator模块可以通知(设备110的)P2PDataSync模块,设备108是P2P自组织网络102的一部分。设备110的P2PDataSync模块可以检查其DataSync组,并确认设备108是该组的一部分。然后,P2PDataSync模块将设备108的is_online标志标记为真(TRUE)。
在设备永久离开P2P网络或新设备首次加入P2P网络时,为了更新P2P网络中对等设备的对应DataSync组,可以按照如上所述的类似处理顺序进行操作。
图7为一些示例性实施例提供的用于P2P自组织网络中设备获得进行时间戳同步的设备之间的时间戳偏移通信交互框图700。
如上所述,由P2PDataSync模块206执行的P2P数据同步功能依赖于每个设备来提供一致的时间戳,用于维护P2P自组织网络中的全局顺序。
P2P自组织网络102中的每个设备都具有自己的物理时钟。即使最初设置准确,由于时钟漂移,设备的物理时钟在一段时间后也会有所不同,原因是时钟以略有不同的速率计算时间。同步设备上时钟的标准方法是使用NTP/PTP协议,其中设备的物理时钟根据集中式服务器校正。一旦网络中的每台设备完成基于NTP/PTP的同步,设备就会在组内相互同步。由于在自组织无线网络中,与集中式服务器的无线连接并不总是可用的,因此与集中式服务器的基于NTP/PTP的同步并不总是可能的。因此,本文公开的技术可用于同步P2P自组织网络中的设备之间的时间戳。本文公开的用于时间戳同步的技术具有以下性质:不需要互联网接入;没有单点故障(即,纯基于P2P的时间戳同步);不需要主节点,每个设备计算自己的时间戳偏移;每个设备上的时间戳单调增加,这是使用如本文所述的NS模块进行数据同步的一个功能;可以调整时间戳校准的频率以实现所需的精度;并且时间戳同步是可扩展的(实现方式可以与P2P网络中的设备数量成线性关系,或者时间戳同步可以限制为少量(即常数)相邻P2P网络设备)。
图7更详细地示出了计算两个设备(例如,设备702和设备704)之间的时间戳偏移。当同步请求(SyncReq)706传送到设备704时,设备702可以将起始时间戳记录为TS1。当接收到同步请求706时,设备704可以记录本地时间戳TS2。当同步响应(SyncResp)708传送到设备702时,设备704还可以记录时间戳TS3。同步响应708包括设备704的时间戳TS2和TS3。当接收到同步响应708时,设备702可以记录本地时间戳TS4。这样,设备702可以计算单向网络时延,DELAY=((TS4-TS1)–(TS3-TS2))/2,其中“/”表示除法运算。然后,设备702可以计算与设备704的偏移,OFFSET=TS2–TS1–DELAY。
设备702可以确定与P2P自组织网络中的其余设备的类似偏移,并确定待应用于设备702的时间戳的最终偏移,以便实现P2P自组织网络中的时间戳同步。在一些方面,时间戳和确定的OFFSET可以以毫秒或其它时间单位测量。
图8为一些示例性实施例提供的适用于时间戳同步的方法的流程图。当计算出两个设备之间的时间戳偏移(例如,如上所述的设备702和704之间的OFFSET)时,就可以使用图8中的操作执行P2P自组织网络中的时间戳同步。
参考图8,方法800包括操作802、804、806和808。作为示例而非限制,描述方法800为由设备108的NS 124中的一个或多个模块(例如,TimeSync模块208)执行。在操作802中,确定当前设备和同一P2P组中的另一个设备之间的时间差(或偏移)(例如,如参考图7所讨论的)。在操作804中,重复偏移确定操作以获得当前设备和同一P2P组中的其余设备之间的其它时间差(或偏移)。在操作806中,从所确定的时间差中选择最大时间差(或偏移)。在操作808中,将选定的最大时间差应用于本地设备时间,以便获得校准/同步的时间戳。
图9为一些示例性实施例提供的适用于在P2P自组织网络中进行数据同步的方法的流程图。方法900包括操作902、904、906、908和910。作为示例而非限制,描述方法900为由设备108的NS 124中的一个或多个模块执行。在操作902中,检索标识形成P2P自组织网络的多个设备的网络配置信息。例如,网络配置信息可以包括系统数据,例如描述设备108中NS124的DataSync组350的系统信息。
在操作904中,确定多个设备中的第一设备(例如,设备108)的本地物理时间与所述多个设备中的第二设备(例如,设备110)的本地物理时间之间的时间偏移。例如,多个偏移可以由设备108确定(例如,如结合图7和图8所讨论的),并且设备108可以选择最大偏移进行时间戳同步。
在操作906中,检测存储在所述第一设备中的键值存储中的多个数据对象中的一个数据对象的变化,其中,所述多个数据对象中的每个数据对象包括同步指示符。例如,(例如,由P2PDataSync模块206)检测数据对象306的变化,其中数据对象306包括作为同步指示符的sync_bit 336。
在操作908中,根据所述同步指示符,将所述数据对象的变化传送到P2P自组织网络中的多个设备中的至少第二设备。例如,如果sync_bit设置为真(TRUE),则将数据对象306传送到其它设备进行同步。
在操作910中,当从至少第二设备接收到收到数据对象变化的确认消息时,使用时间戳更新网络配置信息。例如,在设备108以本地时间戳(例如,通信时间)将更新的对象306传送到设备110之后,当从设备110接收到收到更新后对象的确认消息时,可以将时间戳存储在与DataSync组350中的设备110相对应的sending_watermark字段中。设备108产生的时间戳基于时间偏移(例如,在操作904中确定的)且表示传送数据对象变化时第一设备(例如,设备108)的本地物理时间。
图10为一些示例性实施例提供的代表性软件架构1000的框图,所述软件架构1000可与本文描述的各种设备硬件结合使用。图10仅仅是软件架构1002的非限制性示例,应理解,可以实现许多其它架构来促进实现本文所描述的功能。软件架构1002可以在图11的设备1100等硬件中执行,该硬件包括处理器1105、内存1110、存储器1115和1120以及I/O组件1125和1130。示出了代表性硬件层1004,该硬件层1004可以表示图11的设备1100等。代表性硬件层1004包括具有相关联的可执行指令1008的一个或多个处理单元1006。可执行指令1008表示软件架构1002的可执行指令,包括实现图1至图9的方法、模块等。硬件层1004还包括内存和/或存储模块1010,所述内存和/或存储模块1010也具有可执行指令1008。硬件层1004还可以包括其它硬件1012,所述其它硬件1012表示硬件层1004的任何其它硬件,如图示为设备1100的一部分的其它硬件。
在图10的示例性架构中,软件架构1002可以概念化为各层的堆栈,其中每个层具有特定功能。例如,软件架构1002可以包括操作系统1014、库1016、框架/中间件1018、应用程序1020和表示层1044等层。在操作上,应用程序1020和/或层内的其它组件可以通过软件堆栈调用应用程序编程接口(application programming interface,API)调用1024,并响应API调用1024接收以消息1026示出的响应、返回值等。图10所示的层实际是代表性的,并非所有软件架构1002都具有所有层。例如,一些移动或专用操作系统可能不提供框架/中间件1018,而其它操作系统可以提供这种层。其它软件结构可以包括附加的或不同的层。
操作系统1014可以管理硬件资源并提供公共服务。操作系统1014例如可以包括内核1028、服务1030、驱动器1032和自然存储模块1060。内核1028可以用作硬件与其它软件层之间的抽象层。例如,内核1028可以负责内存管理、处理器管理(例如,调度)、组件管理、组网、安全设置等。服务1030可以为其它软件层提供其它公共服务。驱动器1032可以负责控制底层硬件或与底层硬件连接。例如,根据硬件配置,驱动器1032可以包括显示器驱动器、摄像机驱动器、蓝牙驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(UniversalSerial Bus,USB)驱动器)、驱动器、音频驱动器、电源管理驱动器等。
在某些方面,自然存储模块1060可以包括合适的电路、逻辑、接口和/或代码,并且可以用于执行结合图1至图9讨论的一个或多个功能和NS 124的模块202至216。
库1016可提供可供应用程序1020和/或其它组件和/或层使用的公共基础设施。库1016的功能通常是使其它软件模块可以以比与底层操作系统1014的功能(例如,内核1028、服务1030、驱动器1032和/或模块1060)直接连接更容易的方式执行任务。库1016可以包括系统库1034(例如,C标准库),所述系统库1034可以提供如内存分配功能、字符串操作功能、数学功能等功能。此外,库1016可以包括API库1036,如媒体库(例如,支持各种媒体格式(如MPEG4、H.264、MP3、AAC、AMR、JPG PNG)的呈现和操作的库)、图形库(例如,可用于在显示器上呈现2D和3D图形内容的OpenGL框架)、数据库(例如,可以提供各种关系数据库功能的SQLite)、网页库(例如,可以提供网页浏览功能的WebKit)等。库1016还可以包括多种其它库1038,以向应用程序1020和其它软件组件/模块提供许多其它API。
框架/中间件1018(有时也称为中间件)可以提供可供应用程序1020和/或其它软件组件/模块使用的高级公共基础设施。例如,框架/中间件1018可提供各种图形用户界面(graphic user interface,GUI)功能、高级资源管理、高级位置服务等。框架/中间件1018可以提供可供应用程序1020和/或其它软件组件/模块使用的各种其它API,其中一些API可以是特定操作系统1014或平台专用的。
应用程序1020包括内置应用程序1040和/或第三方应用程序1042。代表性内置应用程序1040的示例可以包括但不限于联系人应用程序、浏览器应用程序、阅读器应用程序、定位应用程序、媒体应用程序、消息应用程序和/或游戏应用程序。第三方应用程序1042可以包括任何内置应用程序1040以及各种其它应用程序。在具体示例中,第三方应用程序1042(例如,由除特定平台的供应商以外的实体使用AndroidTM或iOSTM软件开发工具包(software development kit,SDK)开发的应用程序)可以是在如iOSTM、AndroidTM、Phone等移动操作系统或其它移动操作系统上运行的移动软件。在该示例中,第三方应用程序1042可以调用由移动操作系统(如操作系统1014)提供的API调用1024,以便有利于实现本文描述的功能。
应用程序1020可以利用内置操作系统功能(例如,内核1028、服务1030、驱动器1032和/或模块1060)、库(例如,系统库1034、API库1036和其它库1038)以及框架/中间件1018创建用户界面,从而与系统用户交互。可选地或另外,在一些系统中,可以通过表示层(如表示层1044)与用户进行交互。在这些系统中,应用程序/模块“逻辑”可以和与用户交互的应用程序/模块的各方面分开。
某些软件架构使用虚拟机。在图10的示例中,虚拟机由虚拟机1048示出。虚拟机创建软件环境,在软件环境中,应用程序/模块可以如同在硬件机器(例如,图9的设备900)中执行一样。虚拟机1048由主机操作系统(图10中的操作系统1014)托管,并且通常(尽管并不总是)具有虚拟机监控器1046。该虚拟机监控器1046用于管理虚拟机1048的操作以及与主机操作系统(即操作系统1014)的连接。软件架构1002在操作系统1050、库1052、框架/中间件1054、应用程序1056和/或表示层1058等虚拟机1048内执行。在虚拟机1048内执行的这些软件架构层可以与前述对应层相同,也可以不同。
图11为一些示例性实施例提供的实现算法和执行方法的设备的电路的框图。在各种实施例中不需要使用所有组件。例如,客户端、服务器和基于云的网络设备可以各自使用不同的组件集,或者,在例如服务器的情况下使用较大存储设备。
一个计算机1100(也称为计算设备1100、计算机系统1100或计算机1100)形式的示例性计算设备可以包括处理器1105、内存存储器1110、可移动存储器1115、不可移动存储器1120、输入接口1125、输出接口1130和通信接口1135,它们均通过总线1140连接。尽管示例性计算设备被示出和描述为计算机1100,但计算设备在不同实施例中可以呈不同形式。
存储器1110可以包括易失性存储器1145和非易失性存储器1150,并且可以存储程序1155。计算机1100可以包括或可以访问计算环境,所述计算环境包括各种计算机可读介质,如易失性存储器1145、非易失性存储器1150、可移动存储器1115和不可移动存储器1120。计算机存储器包括随机存取存储器(random-access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmable read-onlymemory,EPROM)和电可擦除可编程只读存储器(electrically erasable programmableread-only memory,EEPROM)、闪存或其它存储器技术、只读光盘存储器(compact discread-only memory,CD ROM)、数字通用磁盘(digital versatile disk,DVD)或其它光盘存储器、磁带盒、磁带、磁盘存储器或其它磁性存储设备,或任何其它能够存储计算机可读指令的介质。
存储在计算机可读介质中的计算机可读指令(例如,存储在存储器1110中的程序1155)可由计算机1100的处理器1105执行。硬盘驱动器、CD-ROM和RAM是包括非瞬时性计算机可读介质(例如存储设备)在内的物品的一些示例。术语“计算机可读介质”和“存储设备”不包括被认为过于瞬时的载波。“计算机可读非瞬时性介质”包括所有类型的计算机可读介质,包括磁性存储介质、光存储介质、闪存介质和固态存储介质。应当理解,软件可以安装在计算机中并随计算机一起销售。或者,可以获取软件并将其装载到计算机中,包括通过物理介质或分配系统获取软件,包括例如从软件创作者拥有的服务器或从软件创作者未拥有但使用的服务器获取软件。例如,软件可以存储在服务器上,以便通过网络分配。如本文所用,术语“计算机可读介质”和“机器可读介质”是可互换的。
程序1155可以使用本文讨论的模块,例如自然存储模块1160,利用客户偏好结构。自然存储模块1160可以与结合图10讨论的自然存储模块1060相同。
本文所述的任何一个或多个模块可以使用硬件(例如,机器的处理器、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或其任何合适的组合)实现。此外,这些模块中的任何两个或更多个可以组合成单个模块,并且本文所述的单个模块的功能可以在多个模块之间细分。此外,根据各种示例性实施例,本文描述为在单个机器、数据库或设备内实现的模块可以分布到多个机器、数据库或设备中。
在某些方面中,模块1160以及作为程序1155的一部分的一个或多个其它模块可以集成为单个模块,执行集成模块的对应功能。
在示例性实施例中,计算机1100包括:网络配置模块,用于检索标识形成P2P自组织网络的多个设备的网络配置信息;时间偏移模块,用于确定所述多个设备中的第一设备的本地物理时间与所述多个设备中的第二设备的本地物理时间之间的时间偏移;数据对象变化模块,用于检测存储在所述第一设备中的键值存储中的多个数据对象中的一个数据对象的变化,其中,所述多个数据对象中的每个数据对象包括同步指示符;通信模块,用于根据所述同步指示符,将所述数据对象的所述变化传送到所述P2P自组织网络中的所述多个设备中的至少第二设备;网络配置更新模块,用于从所述第二设备接收到确认收到所述数据对象变化的信息之后,使用时间戳更新所述网络配置信息,其中,所述时间戳基于所述时间偏移且表示传送所述数据对象变化时所述第一设备的所述本地物理时间。在一些实施例中,所述计算机1100可以包括用于执行实施例中所描述的步骤中的任一步骤或步骤的组合的其它模块或附加模块。此外,如任一附图中所示出的或任一权利要求中所叙述的方法的任何附加或替代实施例或方面也可以预期包括类似的模块。
尽管上文详细描述了几个实施例,但也可以进行其它修改。例如,在图中描述的逻辑流程不需要所示特定顺序或连续顺序来达到期望的结果。可以向所描述的流程提供其它步骤或从所描述的流程中删除步骤,并可以向所描述的系统添加其它组件或从所描述的系统中移除组件。其它实施例可在所附权利要求书的范围内。
还应理解,可以在符合本发明的一个或多个计算设备中安装并与符合本发明的一个或多个计算设备一起销售包括一个或多个计算机可执行指令的软件,所述一个或多个计算机可执行指令有利于如上文结合本发明的任何一个步骤或所有步骤所描述的处理和操作。或者,可以获取软件并将其装载到一个或多个计算设备中,包括通过物理介质或分布系统获取软件,包括例如从软件创作者拥有的服务器或从软件创作者未拥有但使用的服务器获取软件。例如,软件可以存储在服务器上,以便通过网络分配。
此外,本领域技术人员应理解,本发明在其应用中不限于在说明书中阐述或附图中说明的组件的构造和布置细节。本文的实施例能够适用其它实施例并且能够以各种方式实践或执行。此外,应理解,本文使用的措辞和术语是为了描述目的,不应视为限制性的。在本文中使用“包括”、“包含”或“具有”及其变体旨在涵盖其后列举的项目及其等效物以及其它项目。除非另有限制,否则术语“连接”、“耦合”和“安装”以及其变体在本文中被广泛使用,并且涵盖直接连接和间接连接、耦合和安装。此外,术语“连接”和“耦合”及其变体不限于物理或机械连接或耦合。此外,如“上”、“下”、“底部”和“顶部”等术语是相对的,用于帮助说明,但并不具有限制性。
可以至少部分地在数字电子电路、模拟电子电路中,或计算机硬件、固件、软件或其组合中实现根据所说明的实施例使用的说明性设备、系统和方法的组件。例如,这些组件可以实现为有形地体现于信息载体中,或机器可读存储设备中的计算机程序产品(如计算机程序、程序代码或计算机指令),以由数据处理装置(如可编程处理器、计算机或多台计算机)执行,或用于控制数据处理装置的操作。
计算机程序可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以部署成任何形式,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其它单元。可以将计算机程序部署成在一台计算机中或多台计算机中在一个站点处执行,也可以分布在多个站点处并通过通信网络互连。此外,用于实现本文描述的技术的功能程序、代码和代码段很容易被本文描述的技术所属领域的程序员理解为在权利要求的范围内。与说明性实施例相关联的方法步骤可以由一个或多个可编程处理器执行,从而执行计算机程序、代码或指令来执行功能(例如,对输入数据进行操作和/或生成输出)。例如,方法步骤也可以由专用逻辑电路(例如,现场可编程门阵列(field programmable gate array,FPGA)或专用集成电路(application-specific integrated circuit,ASIC))执行,并且用于执行所述方法的装置可以实现为该专用逻辑电路。
结合本文所公开实施例描述的各种说明性逻辑块、模块和电路可以利用通用处理器、数字信号处理器(digital signal processor,DSP)、ASIC、FPGA或其它可编程逻辑设备、分立门或晶体管逻辑、分立硬件组件或其为执行本文描述的功能而设计的任何组合来实施或执行。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
例如,适合执行计算机程序的处理器包括通用和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者中接收指令和数据。计算机的必需元件是用于执行指令的处理器和用于存储指令和数据的一个或多个内存设备。通常,计算机还包括一个或多个用于存储数据的大容量存储设备(例如磁盘、磁光盘或光盘),或与一个或多个用于存储数据的大容量存储设备可操作地耦合以从所述大容量存储设备接收数据和/或将数据传送给所述大容量存储设备。适于体现计算机程序指令和数据的信息载体包括各种形式的非易失性内存,例如,包括半导体内存设备,例如电可编程只读内存或电可编程ROM(electrically programmable read-onlymemory,EPROM)、电可擦除可编程ROM(electrically erasable programmable ROM,EEPROM)、闪存设备、数据存储盘(例如,磁盘、内置硬盘、或可移动磁盘、磁光盘、CD-ROM和DVD-ROM盘)。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路。
本领域技术人员应当理解,信息和信号可以使用多种不同的技术和方法中的任意一种来表示。例如以上描述提到的数据、指令、命令、信息、信号、比特、符号和芯片可由电压、电流、电磁波、磁场或粒子、光场或粒子、或者任何组合表示。
如本文所使用的,“机器可读介质(或计算机可读介质)”是指能够暂时或永久存储指令和数据的设备,可以包括但不限于随机存取存储器(random-access memory,RAM)、只读存储器(read-only memory,ROM)、缓冲存储器、闪存、光学介质、磁性介质、高速缓存存储器、其它类型的存储器(例如,电可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EEPROM))和/或其任何合适的组合。术语“机器可读介质”应理解为包括能够存储处理器指令的单个介质或多个介质(例如,集中式或分布式数据库,或关联的高速缓存和服务器)。术语“机器可读介质”还应理解为包括能够存储由一个或多个处理器1105执行的指令的任何介质或多种介质的组合,一个或多个处理器1105执行所述指令时,一个或多个处理器1105执行本文描述的任何一种或多种方法。相应地,“机器可读介质”是指单个存储装置或设备,以及包括多个存储装置或设备的基于“云”的存储系统或存储网络。本文使用的术语“机器可读介质”不包括信号本身。
此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其它系统、模块、技术或方法进行组合或集成。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式经由某一接口、设备或中间组件间接地耦合或通信。其他变化、替代和改变的示例可以由本领域的技术人员在不脱离本文精神和所公开的范围的情况下确定。
尽管已经参考本发明的特定特征和实施例描述了本发明,但是明显在不脱离本发明的情况下可以制定本发明的各种修改和组合。例如,可以将其它组件添加到所描述的系统中或从所描述的系统中移除其它组件。说明书和附图仅被视为所附权利要求书所定义的本发明的说明并且考虑落于本发明的范围内的任何和所有修改、变体、组合或均等物。其它方面可在所附权利要求书的范围内。
- 上一篇:一种医用注射器针头装配设备
- 下一篇:声音通信系统以及呼叫控制服务器的冗余化方法