CN109905476A - 用于分布式状态的同步的订阅通知机制 - Google Patents
用于分布式状态的同步的订阅通知机制 Download PDFInfo
- Publication number
- CN109905476A CN109905476A CN201910151587.9A CN201910151587A CN109905476A CN 109905476 A CN109905476 A CN 109905476A CN 201910151587 A CN201910151587 A CN 201910151587A CN 109905476 A CN109905476 A CN 109905476A
- Authority
- CN
- China
- Prior art keywords
- bucket
- client device
- remote server
- information
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Telephonic Communication Services (AREA)
- Information Transfer Between Computers (AREA)
- Mobile Radio Communication Systems (AREA)
- Small-Scale Networks (AREA)
Abstract
本申请涉及用于分布式状态的同步的订阅通知机制。本发明提供了用于使在多个实体之间的分布状态同步以及认证设备以访问远程服务器所提供的信息和/或服务的设备、系统、方法和有关的计算机程序产品。同步技术包括存储信息桶的客户端设备和存储信息桶的远程服务器。客户端设备将识别信息桶的订阅请求发送给远程服务器,并且,当该桶变化时,远程服务器将该变化发送给客户端设备。认证技术包括包括唯一的默认凭证的客户端设备,当该唯一的默认凭证出示给远程服务器时,提供对服务器的限制的访问。客户端设备可获得分配的凭证,当该分配的凭证出示给远程服务器时,提供对服务器的较少限制的访问。
Description
分案说明
本申请属于申请日为2013年9月20日的中国发明专利申请No.201380061082.4的分案申请。
技术领域
本专利说明书涉及用于使在多个实体当中的分布状态同步且用于认证彼此通信和/或基于云的服务器的设备的设备、系统、方法以及相关的计算机程序产品。更具体地,该专利说明书涉及通过远程服务器使在一个或多个客户端设备当中的信息桶(buckets ofinformation)及其变化同步,使得在全部设备和远程服务器上共享的信息桶的内容是相同的,以及涉及促进智能家庭设备和基于云的服务器之间的通信的多层认证方法。
背景技术
随着日益增加的移动设备和基于云的计算的使用,以及日益增加的对于在这种环境下提供远程访问和控制能力的期望,用于使多个设备之间的数据同步的技术正变得日益重要。已知多种用于使数据同步的技术。例如,在双向文件同步中,在一对位置之间,例如移动电话和家用个人计算机之间对更新文件进行复制,目的在于使在该两个位置处的选定文件与所有位置上保持相同。这种同步技术可使用各种用于处理文件的变更、包括版本控制、镜像等的工具。
目前可获得大量的执行数据同步的产品。例如,加州(CA)的Cupertino公司的Apple的iCloudTM,允许诸如图片和视频的数据在诸如移动电话、平板电脑等的设备之间共享。加州(CA)圣马特奥市的SugarSync公司提供能够被安装在移动设备、工人电脑等上的软件应用程序,其允许文件和文件夹在多个计算机和设备之间同步。
尽管用于使数据同步的现代技术具有在多个设备上文件共享的有利的显著进展,但是在许多情况下这些技术在结构上被设计成通过永久的(AC-电源)或者相对长期的(移动设备电池)供电在设备上实施,和/或仅仅在具体预定的情形下需要及时同步的情况下(例如,当用户拍照以在多个设备上共享)。这种场景可与基本上更有挑战性的场景相比较,其中,在多个设备之间的数据同步被期望用于促进实时的设备对设备的控制或监控,但是其中,功率限制造成需要使一个或多个设备在关闭状态或者极其低功率状态下维持延长的时间段。
随着日益增加的基于云的计算(其中计算系统的元件彼此远程分散)的使用,对于确保安全的操作环境认证这些元件的身份也变得日益重要。许多设备认证技术,例如使用预共享的对称/非对称密钥和/或使用数字签名,在客户端设备实际上是需要向服务器认证其身份(和/或用户的身份)的单机设备的客户-服务器模型中运行良好。然而,这类场景,可与基本上更有挑战性的场景(其中客户端设备及其与服务器的关系是动态的)形成对比,例如在客户端设备可与用户账户配对以获得权利访问受保护的资源,否则该受保护的资源不能够获得的情形。
发明内容
在此公开了用于同步数据的各种技术。尽管此类技术可在各种各样的合适网络中的各种电子设备中实施,一些技术可特别适合于一个或多个电子设备具有相对较低的功率容量的环境。类似地,此类技术可类似地非常适于期望最小化用于执行数据同步所需的功率消耗的环境。
所公开的技术包括使数据在客户端设备和远程服务器之间同步的各种方法。一些方法针对客户端设备。例如,客户端设备可存储多个信息桶,每个桶包括多个字段-值对,且远程服务器可存储多个信息桶,每个桶包括多个字段-值对。因此,一种方法可包括各种操作。例如,该方法可包括在客户端设备处将订阅请求发送给远程服务器。该订阅请求使客户端设备订阅在远程服务器处的多个桶的子集,在远程服务器处的多个桶的子集分别对应于在客户端设备处的多个桶的子集,对于该在远程服务器处的多个桶的子集,将建立和/或维持同步。当客户端设备生成对于在客户端设备处的所述桶中的一个桶(其对应于在远程服务器处的订阅的桶中的一个订阅的桶)的至少一个字段-值对的更新时,该方法包括附加的步骤:将所述更新传送给远程服务器;接收来自远程服务器的响应;和基于所接收的响应,使在客户端设备处的更新的信息桶与在远程服务器处的对应的订阅的桶协调一致。协调可包括各种操作,例如如果来自远程服务器的响应包括新的时间戳和/或版本标识符,则采用所述新的时间戳和/或版本标识符重写更新的桶的已有的时间戳和/或版本标识符。协调还可包括:如果来自远程服务器的响应包括至少一个替换字段-值对,则采用所述至少一个替换字段-值对重写所更新的至少一个字段-值对的内容。另外,当所述客户端设备接收来自所述远程服务器的通知通信时,其中,所述通知通信通知所述客户端设备关于通过所述远程服务器对所述远程服务器处的所述订阅的桶中的一个桶的更新且提供与所述订阅的桶中的一个桶相关的更新的桶信息,所述方法包括采用所接收的相关的更新的桶信息至少部分地重写在所述客户端设备处的对应桶的内容。
一些方法针对远程服务器。例如,客户端设备可存储多个信息桶,每个信息桶包括多个字段-值对,以及远程服务器可存储多个信息桶,每个信息桶包括多个字段-值对。因此,方法可包括各种操作。例如,所述方法可包括在远程服务器处接收来自客户端设备的订阅请求,该订阅请求识别在远程服务器上存储的信息桶。所识别的信息桶对应于在客户端设备处存储的多个信息桶中的一个信息桶。所述方法还可包括:通过所述远程服务器确定在所述远程服务器处存储的所识别的信息桶和在所述客户端设备处存储的对应的信息桶之间是否存在状态差异。所述方法还可包括:如果确定在所述远程服务器处存储的所识别的信息桶和在所述客户端设备处存储的对应的信息桶之间存在状态差异,则用代表在所述远程服务器处存储的所识别的信息桶和在所述客户端设备处存储的对应的信息桶之间的至少一个差异的信息通知所述客户端设备。
除了公开各种方法和过程之外,所公开的技术包括用于同步数据的各种设备和系统。在一个实施方式中,公开了客户端设备。客户端设备包括用于存储多个信息桶的存储元件,每个信息桶包括多个字段-值对。客户端设备还包括与该存储元件联接的协调模块。该协调模块可操作以执行各种功能。例如,协调可生成对于在客户端设备处的一个信息桶的所期望的更新,将该所期望的更新传送给存储多个信息桶的远程服务器(每个信息桶包括多个字段-值对),接收来自远程服务器的响应,以及基于所述接收的响应,使在所述客户端设备处的将更新传送给所述远程服务器所针对的所述信息桶与在所述远程服务器处的所述多个信息桶中的对应的信息桶协调一致。
在另一实施方式中,公开了计算机系统。所述计算机系统包括用于存储多个信息桶的存储元件,每个信息桶包括多个字段-值对。所述计算机系统还包括与所述存储元件联接的同步服务器。所述同步服务器可操作以执行各种功能。例如,所述同步服务器可接收来自存储多个信息桶(每个信息桶包括多个字段-值对)的客户端设备的识别在存储元件上存储的信息桶的订阅请求,所识别的信息桶对应于在所述客户端设备处存储的多个信息桶中的一个信息桶。所述同步服务器还可确定在所述存储元件处存储的所识别的信息桶和在所述客户端设备处存储的对应的信息桶之间是否存在状态差异。如果确定在所述存储元件处存储的所识别的信息桶和在所述客户端设备处存储的对应的信息桶之间存在状态差异,则所述同步服务器还可用代表在所述存储元件处存储的所识别的信息桶和在所述客户端设备处存储的对应的信息桶之间的至少一个差异的信息通知客户端设备。
还公开了各种用于执行多层设备认证的各种技术。尽管此类技术可在各种各样的合适网络的各种电子设备中实施,一些技术可特别适合于一个或多个电子设备具有相对较低的功率容量的环境。类似地,此类技术可类似地非常适于期望最小化用于执行数据同步所需的功率消耗的环境。
所公开的技术包括用于认证客户端设备以与远程服务器通信的各种方法。一些方法针对客户端设备。例如,一种方法可包括:通过客户端设备使用第一设备凭证与第一远程服务器建立连接,该第一设备凭证对于客户端设备是唯一的且存储在客户端设备处;以及认证所述客户端设备以与所述第一远程服务器通信。所述方法还可包括在客户端设备处获取来自第一远程服务器的第二设备凭证,该第二设备凭证认证该客户端设备以与第二远程服务器通信。所述方法还可包括通过客户端设备使用第二设备凭证与第二远程服务器建立连接。
一些方法针对远程服务器。例如,一种方法可包括在远程服务器处接收来自客户端设备的第一设备凭证,第一设备凭证包括由第三方生成的对于客户端设备唯一的秘密。所述方法还可包括确定第一设备凭证是否有效。当确定第一设备凭证有效时,第二设备凭证可在远程服务器处生成,该第二设备凭证可操作以认证客户端设备以与所述远程服务器的一个或多个部件通信。另外,当确定第一设备凭证有效时,远程服务器可将第二设备凭证传送至客户端设备。
除了公开各种方法和过程外,所公开的技术包括用于同步数据的各种设备和系统。在一个实施方式中,公开了客户端设备。客户端设备包括用于存储第一设备凭证的存储元件,该第一设备凭证对于客户端设备唯一且可操作以认证客户端设备以与第一远程服务器通信。客户端设备还可包括与该存储元件联接的认证模块。所述认证模块可操作以执行各种功能。例如,认证模块可使用第一设备凭证与第一远程服务器建立连接、从第一远程服务器获取第二设备凭证,第二设备凭证认证客户端设备以与第二远程服务器通信、以及使用第二设备凭证与第二远程服务器建立连接。
在另一实施方式中,公开了计算机系统。计算机系统包括存储用于客户端设备的设备凭证的存储元件。计算机系统还包括与存储元件联接的注册服务器。所述注册服务器可操作以执行各种功能。例如,所述注册服务器可接收来自客户端设备的第一设备凭证,该第一设备凭证包括由第三方生成的对于客户端设备唯一的秘密。注册服务器还可确定第一设备凭证是否有效。当确定第一设备凭证有效时,注册服务器可生成第二设备凭证,该第二设备凭证可操作以认证客户端设备以与远程服务器的一个或多个部件通信、以及将第二设备凭证传送至客户端设备。
为了更完整地理解本发明的实施方式的本质和优势,应参考随后的详细描述和附图。从下面的附图和详细描述中将明显地看出本发明的其他方面、目的和优势。然而,从权利要求的陈述中充分显现出本发明的范围。
附图说明
图1示出根据一实施方式的实现用于使分布在系统中的设备的状态同步的订阅-通知机制的系统。
图2示出根据一实施方式的图1的系统以及在该系统的各个实体上设置的信息桶。
图3示出根据一实施方式的包括远程服务器的一些简化部件的图1的系统。
图4为示出根据一实施方式的客户端设备的部件的简化框图。
图5为示出根据一实施方式的注册服务器的部件的简化框图。
图6为示出根据一实施方式的同步服务器的部件的简化框图。
图7为示出根据一实施方式的日志服务器的部件的简化框图。
图8示出根据一实施方式的与远程服务器相关联的存储元件的内容。
图9示出根据一实施方式的包含本文描述的同步机制的协议栈。
图10示出根据一实施方式的用于将监控设备连接到远程服务器的过程的通信序列。
图11示出根据一实施方式的用于将接入设备连接到远程服务器的过程的通信序列。
图12示出根据一实施方式的当在系统的监控设备处发起状态变化时,用于使系统的实体之间的状态同步的过程的通信序列。
图13示出根据一实施方式的当在系统的接入设备处发起状态变化时,用于使系统的实体之间的状态同步的过程的通信序列。
图14示出根据一实施方式的当在系统的同步服务器处发起状态变化时,用于使系统的实体之间的状态同步的过程的通信序列。
图15A示出根据一实施方式的用于执行层重定向的过程的通信序列。
图15B为根据一实施方式的用于客户端设备执行层重定向的过程的流程图。
图15C为根据一实施方式的用于注册服务器执行层重定向的过程的流程图。
图16A示出根据一实施方式的用于执行软件更新的过程的通信序列。
图16B为根据一实施方式的用于客户端设备执行软件更新的过程的流程图。
图16C为根据一实施方式的用于注册服务器执行软件更新的过程的流程图。
图17A示出根据一实施方式的用于识别分配的同步服务器的过程的通信序列。
图17B为根据一实施方式的用于注册服务器识别分配的同步服务器的过程的流程图。
图17C为根据一实施方式的用于同步服务器识别分配的同步服务器的过程的流程图。
图18A示出根据一实施方式的用于创建桶的过程的通信序列。
图18B为根据一实施方式的用于注册服务器创建信息桶的过程的流程图。
图18C为根据一实施方式的用于同步服务器创建信息桶的过程的流程图。
图19A示出根据一实施方式的用于请求相关桶的过程的通信序列。
图19B为根据一实施方式的用于客户端设备请求与客户端设备相关的桶的过程的流程图。
图19C为根据一实施方式的用于同步服务器响应于与客户端设备相关的桶的请求的过程的流程图。
图20A示出根据一实施方式的用于发送桶内容的过程的通信序列。
图20B为根据一实施方式的用于监控设备在初始连接期间将相关桶的内容发送至同步服务器的过程的流程图。
图20C为根据一实施方式的用于同步服务器在初始连接期间响应于接收桶内容而将响应发送至监控设备的过程的流程图。
图20D为根据一实施方式的用于监控设备在后续连接期间将相关桶的内容发送至同步服务器的过程的流程图。
图20E为根据一实施方式的用于同步服务器在后续连接期间响应于接收桶内容而将响应发送至监控设备的过程的流程图。
图21A示出根据一实施方式的用于订阅相关桶的过程的通信序列。
图21B为根据一实施方式的用于客户端设备订阅相关桶的过程的流程图。
图21C为根据第一实施方式的用于同步服务器接收订阅请求的过程的流程图。
图21D为根据第二实施方式的用于同步服务器接收订阅请求的过程的流程图。
图22A为根据一实施方式的用于操作客户端设备以使在客户端设备处的桶的变化与在同步服务器处的对应的桶同步的过程的流程图。
图22B为根据一实施方式的用于执行参照图22A所描述的操作1512的过程的流程图。
图23A为根据一实施方式的用于操作同步服务器以使客户端设备所请求的桶的变化与在该同步服务器处的对应的桶以及在其他客户端设备处的对应的桶同步的过程的流程图。
图23B为根据一实施方式的用于执行参照图23A所描述的操作1604的过程的流程图。
图23C为根据一实施方式的用于执行参照图23A所描述的操作1606的过程的流程图。
图24A和图24B示出使在客户端设备处的对应的桶和在远程服务器处的对应的桶的状态同步的示例,其中,客户端设备的桶比远程服务器处的桶旧,客户端设备企图改变其桶,但是由于该客户端设备未意识到在远程服务器处的较新的桶,故该改变被远程服务器拒绝。
图25A至图25D示出使在客户端设备处的对应的桶和在远程服务器处的对应的桶的状态同步的示例,其中,客户端设备发送比在远程服务器处存储的桶新的桶,且在该远程服务器处存储的桶可以是客户端设备所期望的桶或者与客户端设备所期望的桶不同的桶。
图26A至图26C示出使在客户端设备处的对应的桶和在远程服务器处的对应的桶的状态同步的示例,其中,客户端设备在与远程服务器已经生成或接收(来自另一设备)对桶的改变的时间完全相同的时间发送相同的桶。
图27A为示出默认凭证传送到客户端设备的框图。
图27B为示出分配的凭证传送到客户端设备的框图。
图28A示出根据一实施方式的用于认证客户端设备以与其分配的同步服务器通信的过程的通信序列。
图28B为根据一实施方式的用于客户端设备与其分配的同步服务器通信的过程的流程图。
图28C为根据一实施方式的用于注册服务器生成客户端设备的分配的凭证的过程的流程图。
图28D为根据一实施方式的用于同步服务器与分配的客户端设备通信的过程的流程图。
图28E为根据第一实施方式的用于判断分配的凭证是否有效的过程的流程图。
图28F为根据第二实施方式的用于判断分配的凭证是否有效的过程的流程图。
图28G为根据第三实施方式的用于判断分配的凭证是否有效的过程的流程图。
图29A示出根据一实施方式的用于轮换分配的凭证的过程的通信序列。
图29B为根据一实施方式的用于客户端设备轮换其分配的凭证的过程的流程图。
图29C为根据一实施方式的用于远程服务器轮换客户端设备的分配的凭证的过程的流程图。
图30A示出根据一实施方式的用于处理拒绝的分配的凭证的过程的通信序列。
图30B为根据一实施方式的用于客户端设备处理拒绝的分配的凭证的过程的流程图。
图31A示出根据一实施方式的用于传送信息至日志服务器的过程的通信序列。
图31B为根据一实施方式的用于客户端设备传送日志信息至日志服务器的过程的流程图。
图31C为根据一实施方式的用于日志服务器接收和归类从客户端设备传送的信息的过程的流程图。
图32A示出根据一实施方式的用于客户端设备访问不同类型的信息的过程的通信序列。
图32B为根据一实施方式的用于客户端设备访问不同类型的信息的过程的流程图。
图32C为根据一实施方式的用于同步服务器向客户端设备提供对不同类型的信息的访问的过程的流程图。
图33示出根据示例性实施方式的监控设备的部件。
图34示出智能家庭环境的示例,在该智能家庭环境内,文中描述的设备、方法、系统、服务和/或计算机程序产品中的一个或多个是可适用的。
图35示出根据一实施方式的专用计算机系统。
图36示出可扩展设备和服务平台的网络级视图,其中,智能家庭环境可与该可扩展设备和服务平台集成在一起。
图37示出图36的可扩展设备和服务平台的抽象的功能视图。
具体实施方式
本发明的实施方式总体涉及使系统中的多个实体间的分布状态同步。在智能家庭环境内,所述系统中的实体通常包括与远程服务器通信的至少一个监控设备,其中,在示例性实施方式中的该监控设备是智能的、多传感的、网络连接设备,例如恒温器、危险检测单元、环境传感器、环境控制器、安全性有关的传感器、安全性有关的控制器、照明传感器/控制器、智能家电、家电传感器/控制器、娱乐有关的设备、通信有关的设备、害虫检测器、入侵检测器、门和窗破洞传感器等。应理解到,尽管出于描述简洁和清晰的目的,术语“监控设备”可在一个或多个示例中作为与远程服务器通信的设备,但是此术语应被理解成包括能够执行各种智能家庭有关的控制功能中任一控制功能的各种控制设备中的任一控制设备,包括在瞬时规范中识别的那些控制设备,这是因为“控制”功能将必须包括用于几乎全部的智能家庭设备的至少一个“监控”方面。因此,文中所使用的术语“监控设备”应被理解成包含恒温器,例如,该恒温器具有控制功能(控制HVAC系统的操作),对于该控制功能,监控功能是必要的组成部分(感测环境温度、湿度和/或其他待被控制的环境条件)。远程服务器远离该监控设备且保持与该监控设备的信息状态相同的信息状态。在许多实施方式中,系统还包括至少一个与远程服务器通信的接入设备,其中,该接入设备可为手提电脑、移动电话、平板电脑、智能电话或被用于观看、控制和/或其他影响监控设备的操作状态的类似设备。
为了促进系统的实体之间的状态同步,可使用基于订阅的通知机制。在文中所述的基于订阅的通知机制中,在实体之间同步的公共信息(文中被称作信息“桶”)的例子被存储在各个实体处。远程服务器维持针对系统的全部用户而连接的全部设备的桶,其中,该设备仅仅维持与它们和/或在公共结构内的其他设备(例如,在单一智能家庭环境内的设备)或者受制于公共控制方案的其他设备(例如,与相同消费者或消费者账户相关的设备)有关的桶。为了维持与远程服务器处的桶的状态的同步,监控设备和/或接入设备(一般地说通常被称作客户端设备)将订阅请求提交给远程服务器,其中,该订阅请求是用于远程服务器将远程服务器处的桶的变化通知给客户端设备的请求。对于包括监控设备且具有相关的接入设备的结构,例如可由接入设备引发变化,由此远程服务器通过其待决的订阅请求而通知监控设备该变化。可替选地,例如可由监控设备引发变化,由此远程服务器通过其待决的订阅而通知接入设备该变化。
本发明的实施方式还通常涉及用于促进设备和远程服务器之间的通信的多层认证技术。实体通常包括与远程服务器通信的客户端设备(例如,监控设备、接入设备等),其中,在示例性实施方式中的该客户端设备在智能家庭环境内是智能的、多传感的、网络连接的设备,例如恒温器、危险检测单元、环境传感器、环境控制器、安全性有关的传感器、安全性有关的控制器、照明传感器/控制器、智能家电、家电传感器/控制器、娱乐有关的设备、通信有关的设备、害虫检测器、入侵检测器、门和窗破洞传感器等。远程服务器远离客户端设备且存储信息(例如,安全资源)和/或提供客户端设备可期望获取或交互的服务。基于客户端设备的认证级别,该远程服务器可提供或者拒绝对客户端设备的访问。
当涉及认证级别时,客户端设备可使用不同的设备凭证或者其他特征/关系来认证其身份。基于所给出的设备凭证和/或其他特征/关系,远程服务器可提供访问客户端设备的增加的级别或者降低的级别。一些设备凭证(例如“默认凭证”)可允许客户端设备访问来自远程服务器的受限制的数据集和/或功能。其他设备凭证(例如,“分配的凭证”)可允许客户端设备访问来自远程服务器的更大的数据集和/或功能。此外,如果满足一些关系(例如,客户端设备已经与特定的用户账户配对),则分配的凭证的呈现可允许客户端设备访问来自远程服务器的甚至更大的数据集和/或功能,其为对于用户账户唯一的信息(例如,敏感用户信息)。
该专利说明书的主题涉及下面共同转让申请的主题,这些申请分别通过引用方式并入文中:2011年10月17日递交的美国序列号No.13/275,307的申请;2011年10月17日递交的美国序列号No.13/275,311的申请;2012年3月22日递交的国际申请序列号No.PCT/US12/30084的申请;以及2012年5月8日递交的美国序列号No.13/466,815的申请。上述提到的专利申请在此共同被称作“并入的共同转让申请”。
用于实现通信协议的系统
本文公开了根据一个或多个实施方式的基于订阅的同步的各个方面和实现。转向附图,图1示出了根据一实施方式的实现用于使分布于系统内的设备的状态同步的订阅-通知机制的系统100。系统100包括远程服务器102,所述远程服务器远离一个或多个客户端设备104且借助网络106与一个或多个客户端设备104通信连接。客户端设备104可包括各种电子设备。在一个实施方式中,客户端设备104可包括一个或多个监控设备108,然而,在其他实施方式中,客户端设备108还可包括一个或多个接入设备110。
监控设备108为可操作以生成待在系统100内共享的基本数据的电子设备。在一个实施方式中,监控设备108可通过监控它的环境的一个或多个方面且将监控的数据作为基本数据而生成此类基本数据。例如,在监控设备108为智能恒温器的情形下,监控设备可包括感测诸如温度、湿度、占用率等的环境特征的传感器。此类数据可因此由监控设备108生成且被传送至远程服务器102。当在监控设备108处存在变化时,例如当感测到环境变化时,那些变化可类似地被传送给远程服务器102。
除了通过监控其环境的方面生成数据外,还可通过与监控设备108进行的用户交互而生成数据。例如,在监控设备108为智能恒温器时,用户可通过监控设备108而限定所期望的温度(即“设定点温度”或者更简单地“设定点”),其中监控设备108可随后控制电子联接的HVAC系统以达到和/或维持所期望的温度。或者,通过其中程序化的算法,监控设备108本身可生成设定点。不论设定点如何生成或改变,设定点以及设定点的变化可类似被传送至远程服务器102。
反过来,远程服务器102可改变与监控设备108相关联的数据的一个或多个字段。例如,远程服务器102可想要改变在监控设备108处存储的设定点。在这种情形下,远程服务器102可改变其自己的监控设备108的设定点的版本,且将该变化传送至监控设备108。因此,除了在监控设备108处对数据的改变反映在远程服务器102处外,在远程服务器102处对数据的改变也反映在监控设备108处。
在一些实施方式中,也可提供接入设备110,其中,接入设备110可操作以从监控设备108处访问数据并且改变在监控设备108处的数据。为了从监控设备处108访问数据,接入设备110可从远程服务器102处获取此类数据的副本。由于在监控设备108处的信息状态和在远程服务器102处的信息状态通常是相同的,故通过从远程服务器102处获取数据,使得在接入设备110处的信息状态通常与在监控设备108处的信息状态相同。此外,为了改变监控设备108的数据(例如,设定点),用户可在接入设备110处引起该变化,在接入设备110处,该变化借助远程服务器102被传播给监控设备108。
应意识到,远程服务器102操作以维持与在监控设备108处提供的信息状态相同的信息状态,在一些情形下,远程服务器102可改变其关于监控设备108的信息状态,且使此类变化被传播给监控设备108,使得远程服务器102的状态和监控设备108的状态同步。在提供接入设备110的实施方式中,远程服务器102类似地操作以维持监控设备108和接入设备110两者中相同的信息状态,使得监控设备108的状态和接入设备110的状态同步。
在至少一个实施方式中,可提供多个监控设备108。在这种情形下,尽管各个监控设备108可生成其本身的唯一基本信息,该基本信息与远程服务器102和一个或多个接入设备110同步,各个监控设备108也可与选择的其他监控设备108共享其信息的子集。例如,在监控设备108为智能恒温器的情况下,它们可彼此共享占用数据而不共享温度数据。因此,在多个监控设备108处的信息的子集的状态可彼此同步。
网络106是用于实现不同实体之间(例如客户端设备104和远程服务器102之间)的通信的任何合适网络。此类网络可包括例如局域网、广域网、虚拟专用网络、因特网、内联网、外联网、公用电话交换网、红外线网络、无线网络、无线数据网络、蜂窝网络、或者任何其他这样的网络或者其组合。另外,该网络可包含任何合适的网络拓扑结构。网络106可采用任何合适的协议,在网络106上的通信可通过有线的或无线的连接及其组合而进行。
应意识到,在参照图1所描述的具体示例中,监控设备108和接入设备110可与共同用户相关(例如,它们可分别与特定的用户账户“配对”,如在文中进一步描述的)。作为配对(和随后描述的订阅过程)的结果,监控设备108的状态和接入设备110的状态可被同步。即,与特定的用户账户进行配对的监控设备108和接入设备110可订阅一个或多个信息桶,使得通过任一设备造成的那些信息桶的变化被传播给另一设备。然而,应意识到,配对的设备(例如,监控设备108和接入设备110)仅仅为可包含在系统100中的全部客户端设备的子集。即,系统100可包括与不同的账户配对的多个监控设备108、以及与相同的或不同的账户配对的多个接入设备110。因此,同步通常在彼此相关联(例如,与共同用户账户“配对”)的客户端设备之间进行,而不在彼此不相关的客户端设备之间进行。
在某些实施方式中的系统100为分布式计算环境,该分布式计算环境采用使用一个或多个计算机网络或者直接连接而经由通信链路互连的多个计算机系统和部件。然而,本领域技术人员将理解到,这种系统在具有比图1所示的部件更少数目或更多数目的部件的系统中同样会良好操作。因此,图1的系统100的描述应被看作本质上是示例性的,且不应看作是限制本发明的范围。
图2示出根据一实施方式的图1的系统以及在该系统的各个实体处提供的信息桶。系统100的实体以“桶”的形式存储数据,其中,各个桶包括多个字段-值对。字段可被限定用于监控设备108和/或其环境的多个属性。值与各个字段相关。对于智能恒温器,示例性的字段-值对可为:
“hvac_加热器_状态”:0
字符串“hvac_加热器_状态”为涉及HVAC加热器的状态的字段,数“0”为涉及HVAC加热器的状态(例如,关闭)的值。示例性的桶为:
桶名称:结构.<id>
{
"设备":[设备.<id>,设备<id>]
"名称":"我的起居室的恒温器",
"离开":错误,
"显示_位置":"加利福尼亚州帕洛阿尔托\n"
}
在该示例中的桶被称作“结构”且包括与监控设备108所在的结构(例如,住宅)相关联的字段-值对。参照图2,“结构”桶可为桶“B1”108A,桶“B1”包括在监控设备108处初始限定的值。各个桶可设置有版本标识符和/或时间戳。版本标识符唯一地识别桶的版本,而时间戳识别服务器102接收或生成桶(或者其中的值)的时间。因此,再次参照图2,桶“B1”可与从服务器102处接收到的唯一版本“v1”和时间戳“t1”相关。
监控设备108可具有多个桶,“B1”108A至“BN”108N,其中,各个桶包括其本身的一组字段-值对。远程服务器也会具有多个桶,“B1”102A至“BN”102N,其分别对应于监控设备108的桶。当在稳定状态下时,远程服务器102处的桶的内容和监控设备108处的对应的桶的内容将是相同的。在使用版本标识符和/或时间戳的实施方式中,在远程服务器102处的桶和在监控设备108处的对应的桶的版本标识符和/或时间戳将类似地是相同的。
如所述,在一些实施方式中,系统100包括一个或多个接入设备110。接入设备110类似地包括桶“B1”110A至“BN”110N,桶“B1”110A至“BN”110N分别对应于监控设备108的桶。当处于稳定状态时,在接入设备110处的桶的内容和分别在远程服务器102和监控设备108处的对应的桶的内容将是相同的。在使用版本标识符和/或时间戳的实施方式中,在接入设备110处的桶的版本标识符和/或时间戳与在远程服务器102和监控设备108处的桶的版本标识符和/或时间戳将类似地是相同的。
在至少一个实施方式中,可提供全部与同一结构或者用户账户相关联的多个监控设备108。各个监控设备108包括其唯一的一组桶B1至BN(其中,对于各个设备108,N可以是相同或不同的),这些桶与远程服务器102同步且在一些情况下与接入设备110同步。另外,监控设备108中的一些或者全部可包括共享桶“BS”108S。共享桶BS与其他桶类似,而且在与相同结构或者用户账户相关联的多个监控设备108当中可被共享或者同步。为了促进这种共享,远程服务器102也可包括针对各个监控设备108的共享桶“BS”102S。当一个监控设备108对其共享桶“BS”做出变化时,远程服务器102可将那些变化传播给其他的监控设备108。以这种方式,监控设备108可有效地彼此通信。
接入设备110也可包括共享桶“BS”110S。在至少一个实施方式中,接入设备110包括全部监控设备108的共享桶“BS”。以这种方式,接入设备110可操作以访问在多个监控设备108之间共享的信息桶。在2011年10月21日递交的美国临时专利申请No.61/627,996中描述了共享桶的其他细节和示例。一个此类示例包括所谓的离开状态(away-state)标志,每一个离开状态标志对应于家中的不同的占用-感测设备,如果该占用-感测设备在预定的时间间隔中没有检测到占用,则每一个离开状态标志被对应的设备设置为“离开就绪”状态,其中,直到全部的标志被设定为“离开就绪”,一个设备才会进入实际的离开状态(低能量使用状态)。对于占用感测恒温器的示例性例子,这将确保直到全部设备已经“看到”必要的非占用条件,恒温器才会进入不太舒适的低能量使用状态,从而建立该家确实未被占用的高可能性。
图3示出根据一实施方式的包括远程服务器102的一些简化部件的图1的系统。相同附图标记的实体与先前描述的那些实体相同,因此省略了进一步的描述。远程服务器102包括注册服务器112、多个同步服务器114A至114M、日志服务器116和存储元件118。注册服务器112、同步服务器114A至114M以及日志服务器116通过网络106而可通信地连接至客户端设备104。同步服务器114A至114M也可通信地连接至注册服务器112和存储元件118。
如在文中更为详细地进一步描述地,存储元件118可存储用于系统100的所有用户的各种信息,例如桶102A至桶102N和桶102S。例如,参照图2,对于系统100的各个用户,存储元件118可存储桶102A至桶102N和任何共享桶102S中的全部。注册服务器112和同步服务器114A至114M可然后操作以确保存储元件118内的桶的状态与相关联的客户端设备104内的桶的状态相同。存储元件118还可或者可替选地存储与认证相关的信息。例如,存储元件118可存储分配的凭证、默认凭证等。
在一些实施方式中以及如在文中进一步描述,注册服务器112充当用于客户端设备104的第一联系点。例如,监控设备108可具有在其内硬编码的注册服务器112的位置标识符(例如,URL),使得在初始化或者重新连接时,监控设备108可始终联系注册服务器112。除了别的之外,注册服务器112可识别同步服务器114A至114M中的负责使在客户端设备104处的桶与在存储元件118处的桶同步的一个同步服务器,且将所选择的同步服务器的身份提供给客户端设备104。客户端设备可随后连接至所选择的同步服务器,该所选择的同步服务器随后将使客户端设备104的状态彼此同步(例如当客户端设备104彼此相关联,诸如与同一用户账户配对)且将客户端设备104的状态与存储元件118同步。
在特定的实施方式中,系统100为分布式计算环境,分布式计算环境的远程服务器102包括各种部件。然而,本领域技术人员将理解到,这种远程服务器在具有与如图3所示部件相比更少数目或更多数目的部件时同样会良好运行。因此,在图3中系统100的描述应被作为本质上是示例性的,且不应作为限制本教导的范围。
图4为根据一实施方式示出客户端设备104的部件的简化框图。客户端设备104包括许多不同的功能模块,包括安全模块120、认证模块122、协调(reconciliation)模块124、会话识别生成器126和存储元件128。存储元件128可包括各种信息,例如注册服务器位置128A、设备标识符128B、当前软件版本128C、一个或多个信息桶128D、默认凭证128E、以及在某些时候包括分配的凭证128F。
安全模块120可操作以在客户端设备和系统100的其他元件(例如注册服务器112和/或同步服务器114)之间提供安全的(例如,密码加密的)通信。为了促进这种安全通信,安全模块120可包括用于执行一个或多个安全有关的功能的代码或者硬件功能性,例如对称加密、非对称加密、密钥协商和/或密钥建立、散列、签名等。因此,安全模块120可操作以实现各种密码通信协议中的一者或多者,例如传输层安全(TSL)、安全套接层(SSL)等。由于与远程服务器102建立安全连接,可以向客户端设备104认证远程服务器102的身份(例如,注册服务器112和/或同步服务器114的身份)。
与安全模块120的提供安全通信信道以及向客户端设备104认证远程服务器102的身份的功能相反,认证模块122可操作以向远程服务器102认证客户端设备104的身份。如同安全模块120一样,认证模块122可包括用于执行一个或多个安全有关的功能的代码或者硬件功能性,例如对称加密、非对称加密、密钥协商和/或密钥建立、散列、签名等。然而,在该情形下,认证模块120可操作以实现各种认证协议中的一个或多个,例如可扩展认证协议(EAP)、挑战握手认证协议(CHAP)、挑战应答认证机制(CRAM)等。可被使用的认证协议的各种示例在此随后进行描述。
协调模块124可操作以使客户端设备104的桶128D的状态与在同步服务器114中提供的对应桶的状态协调一致。通过使桶128D的状态与在同步服务器114中的对应桶的状态协调一致,在客户端设备104处的桶128D和同步服务器114处的对应桶被确保以至少最终地具有相同的内容。另外,当系统100包括彼此相关联的多个客户端设备104时,例如与相同用户账户配对的监控设备108和接入设备110,通过使各个客户端设备104的桶128D的状态和同步服务器114中提供的对应桶的状态协调一致,在全部客户端设备104处的桶128D类似地被确保以至少最终具有相同的内容。在此进一步描述各种协调技术。
会话ID生成器模块126可操作以生成会话标识符,该会话标识符识别在客户端设备104和远程服务器102之间建立的唯一通信会话。会话标识符可在各种时间中的任一时间生成,且可持续各种时间段中的任一时间段。例如,唯一会话标识符可在客户端设备104通电时而生成且可持续到客户端设备104断电。又例如,会话标识符可在客户端设备104每次重新连接至注册服务器112以获取新的分配的凭证时生成且持续到客户端设备104再次需要重新连接至注册服务器112。再例如,会话标识符可周期性地生成。针对每一会话生成的会话标识符为唯一地识别通信会话的标识符。例如,会话标识符可为随机地生成的字符串、时间排序的数值、或者其他信息序列。在此进一步描述会话标识符的使用。
如所提及的,存储元件128包括各种信息,例如注册服务器位置128A、设备标识符128B、当前软件版本128C、一个或多个信息桶128D、默认凭证128E、以及在某些时候包括分配的凭证128F。注册服务器位置128A表示注册服务器112的目标位置从而促进客户端设备104和注册服务器112之间的通信。例如,注册服务器位置128A可为识别注册服务器112的名称的统一资源标识符(URI)、统一资源定位符(URL)等,以使客户端设备104能够通过网络106(例如因特网)连接至注册服务器112。在一些实施方式中,注册服务器位置128A可被硬编码到或者以其它方式存储到客户端设备104的非易失性存储器中。
设备标识符128B为唯一识别客户端设备104的数据字符串或者其它信息序列。设备标识符128B可为静态的或者动态的。例如,静态设备标识符128B可被硬编码到或以其它方式存储在客户端设备104的非易失性存储器中,且可为例如序列号、媒体访问控制(MAC)地址、或者其他唯一标识符。动态设备标识符128B可为动态生成的标识符,其也唯一地识别客户端设备104。动态设备标识符128B可由客户端设备104生成,或者在一些实施方式中,由系统的其他实体(例如注册服务器112)生成。在一个特定的实施方式中,客户端设备104可包括多个设备标识符128B,例如静态标识符和动态标识符,其中,静态标识符被硬编码到客户端设备104中,且动态标识符由注册服务器112生成且通过注册服务器112提供给客户端设备104。在一个特定的实施方式中,设备标识符128B可被设置在如在此进一步描述的默认凭证128E和分配的凭证128F的一个或多个中。
当前软件版本128C为识别正在客户端设备104上执行的软件版本的数据字符串或者其他信息序列。例如,在一些实施方式中,客户端设备104的一个或多个模块、以及在许多情形下客户端设备的附加的操作功能,以存储在客户端设备104上的软件代码实现。当前软件版本128C表示该软件代码的版本,这是因为软件代码随着时间可被更新或者被不同版本替代。
桶128D为先前参照图2所描述的信息桶。因此,当客户端设备104为监控设备108时,各个桶128D包括多个用于限定客户端设备104和/或其环境的属性的字段-值对。在此,字段-值对经常被称作桶的“内容”,但桶的内容可包括除了字段-值对以外的多种信息(例如,报头、格式化字符等)。各个桶128D具有与其相关联的唯一识别桶的桶标识符或名称(例如,“桶A”),也可具有为其分配的且与其相关联的如在先前描述的时间戳(“t”)和版本(“v”)。
默认凭证128E为对于客户端设备104和远程服务器102已知的诸如密码的凭证,其在制造时给予该设备且在该设备的整个使用期内属于该设备。因此,默认凭证可表示客户端设备被特定的实体制造。默认凭证可包括多种信息中的一个或多个,例如识别凭证的类型(即,默认凭证)的方案、唯一识别设备的标识符(例如,序列号、MAC地址等)、以及对于客户端设备104和远程服务器102已知的秘密(例如,标识符的散列版本)。
分配的凭证128F为对于客户端设备104和远程服务器102已知的诸如密码的凭证,其在交互过程期间由远程服务器102分配给客户端设备104,且在一些实施方式中可周期性地过期。与默认凭证相比,该分配的凭证可操作以向客户端设备提供对安全资源的增加的访问,并且在该设备与用户账户配对时,认证客户端设备与该账户相关联。分配的凭证可包括多种信息中的一个或多个,例如识别凭证的类型(即,分配的凭证)的方案、唯一识别设备的标识符(例如,序列号、MAC地址等)、以及对于客户端设备104和远程服务器102已知的秘密(例如,随机数)。
尽管描述为独立的模块,应意识到,关于客户端设备104描述的多个模块和元件可组合成一个或多个模块或者进一步被分成一个或多个模块。该多个模块可以以软件或硬件形式实现,且存储元件128可以以任何合适的方式实现,例如在一个或多个磁盘驱动器、光存储设备、固态存储设备(例如随机存取存储器(“RAM”)和/或只读存储器(“ROM”))等上的一个或多个数据库。
在此还描述了客户端设备104的元件的多个其他特征、操作和用途。另外,应意识到,客户端设备104,尽管被描述为包括多个模块和部件,但其可包括用于促进在此描述的电子设备的操作的其他元件。本领域技术人员还将意识到,客户端设备在具有比图4所示的部件更少数目或者更多数目的部件时,可同样运行良好。因此,在图4中的客户端设备104的描述应被看作在本质上是示例性的,且不看作对本教导的范围的限制。
图5为示出根据一实施方式的注册服务器112的部件的简化框图。注册服务器112包括多个不同的功能模块,包括安全模块140、认证模块142、层重定向模块144、软件更新模块146、同步服务器识别模块148以及存储元件150。存储元件150可包括多个信息,例如同步服务器标识符150A、软件版本/更新程序图150B、软件版本/层图150C、以及设备标识符/层图150D。
安全模块140,与关于客户端设备104描述的安全模块120一样,可操作以提供系统100的注册服务器112和其他元件(例如客户端设备104)之间的安全通信。因此,安全模块140可包括与安全模块120的代码或者硬件功能相似的代码或者硬件功能,以与客户端设备104建立安全连接且通过与客户端设备104的安全模块120的通信而向客户端设备104认证其身份。
认证模块142也与关于客户端设备104描述的认证模块122相似,且因此可操作以与客户端设备104的认证模块122通信,进而认证客户端设备104的身份。因此,认证模块122可包括与客户端设备104的代码或者硬件功能相似的代码或者硬件功能,以通过与客户端设备104的认证模块122的通信而认证客户端设备104的身份。
层重定向模块144可操作以基于特定层而将客户端设备104重新定向到远程服务器102的不同实例,客户端设备104可为该特定层的一部分。即,可存在远程服务器102的多个不同的实例(即,工作副本),包括注册服务器112和同步服务器114A至114M。该不同的实例可提供与客户端设备104初始连接的基本实例相同的功能,或者可提供附加的或可替选的功能。例如,远程服务器102的不同实例可出于不同目的而产生,例如,用于生产目的、质量保证目的、分段运输目的等。生产实例可为客户端设备104经由注册服务器位置128A初始连接的基本实例,且可包括用于消费者使用的稳定的可操作性版本。相反,质量保证实例可为测试实例,系统100的测试者操作的客户端设备104经由重定向模块144重新定向至该测试实例,其中该测试实例可被用于测试系统100的各个实体(例如客户端设备104、注册服务器112等)的新的或不同的操作性。
软件更新模块146可操作以识别软件版本信息和提供该软件版本信息给客户端设备104。软件版本信息可指示客户端设备104应执行的最新的或者所需的软件版本,和/或可指示客户端设备104可访问的软件更新目的地(例如,目标URT)以获得软件更新。软件更新模块146特别适合于这样的实施:其中,客户端设备104包括用于执行如文中所述的其一些或全部功能的计算机软件。
同步服务器识别模块148可操作以识别多个同步服务器114A至114M中的一个同步服务器,该一个同步服务器被分配给客户端设备104且用于代表该客户端设备104和其他有关的客户端设备104(例如当多个客户端设备104与同一结构或用户账户相关联时)执行同步操作。如先前所述,在一些实施方式中,远程服务器102包括多个同步服务器114A至114M。各个同步服务器可被分配以代表全部可能的客户端设备104的子集(即,向注册服务器112注册的全部客户端设备104的子集)执行同步操作。由于各个同步服务器仅仅被分配至全部可能的客户端设备104的子集,故整个系统100的同步工作量在同步服务器114A至114M中分布。用于将同步服务器114A至114M分配给客户端设备104的多个技术在此进一步进行描述,尽管在图3中未被描述,也应意识到,在一些实施方式中,系统100可只包括单个同步服务器而不是多个同步服务器。在这样的情况下,单个同步服务器代表所有客户端设备104执行同步操作。应意识到,同步服务器识别模块148尤其非常适合于包括多个同步服务器的实现。
如所述,存储元件150包括多种信息,例如同步服务器标识符150A、软件版本/更新程序图150B、软件版本/层图150C、以及设备标识符/层图150D。同步服务器标识符150A分别唯一地识别多个同步服务器114A至114M中的一个同步服务器。例如,同步服务器标识符150A可包括URI、URL等,用于各个同步服务器。因此,注册服务器112了解不同的同步服务器且能够将所选择的同步服务器的目标位置传送给客户端设备104。
软件版本/更新程序图150B为使客户端设备(例如,设备标识符)与特定的软件版本且在一些实施方式中与软件更新目的地关联、或者使客户端设备(例如,设备标识符)映射到特定的软件版本且在一些实施方式中映射到软件更新目的地的图。在至少一个实施方式中,不同客户端设备104可被控制以局部地执行不同版本的计算机软件。例如,分配给用户的客户端设备104可被控制以执行适合用户的软件版本,然而分配给系统100的测试者的客户端设备104可被控制以适合执行测试者的软件版本。因此,软件版本/更新程序图150B包括客户端设备104和这些设备应执行的软件版本之间的映射。由于设备标识符128B唯一地识别各个客户端设备104,故软件版本/更新程序图150B可包括设备标识符和软件版本之间的映射以使注册服务器112能够基于客户端设备104的设备标识符128B确定客户端设备104应执行的合适的软件版本。另外,在一些实施方式中,可使用不同的软件更新实体或者目标位置,从而不同的软件更新程序位置可与不同的软件版本相关联。在一些实施方式中,同一软件更新程序位置可被用于全部软件更新,在其他实施方式中,同一软件版本可被全部客户端设备104所使用。
软件版本/层图150C为使客户端设备104正执行的当前软件版本与客户端设备104是其一部分的层相关联的图。通过识别客户端设备104是其一部分的层,注册服务器112可将客户端设备104维持在远程服务器102的实例上,或者通过层重定向模块144将客户端设备104转送到远程服务器102的不同实例上。通过识别客户端设备的层,软件版本/层图150C可相应地识别注册服务器112的不同实例的目标位置,使得例如在客户端设备104目前正在执行未授权的软件版本的情况下,注册服务器112可将客户端设备104重新定向至注册服务器112的不同实例(例如,测试实例)以及由此重新定向至远程服务器102的不同实例。
设备标识符/层图150D为如同软件版本/层图150C的图,但是并不使客户端设备104正执行的当前软件版本与层相关联,图150C使客户端设备104的设备标识符与层相关联。以这样的方式,注册服务器能够将客户端设备104重新定向至远程服务器102的不同实例,而与客户端设备104正在执行的软件版本无关。
尽管被描述为独立的模块,但是应意识到,关于注册服务器112所描述的多个模块和元件可被组合成一个或多个模块或者进一步被分成一个或多个模块。可以以软件或硬件形式实施多个模块,且存储元件150可以以任何合适的方式实施,例如在一个或多个磁盘驱动器、光存储设备、固态存储设备(例如随机存取存储器(“RAM”)和/或只读存储器(“ROM”))等上的一个或多个数据库。
在此进一步描述了注册服务器112的元件的多个其他特征、操作和用途。另外,应意识到,尽管注册服务器112被描述为包括多个模块和部件,但其可包括用于促进如文中所描述的电子设备的操作的其他元件。本领域技术人员还应理解到,注册服务器112在具有比图5所示的部件更少数目或更多数目的部件时,同样会运行良好。因此,图5中的注册服务器112的描述应被看作本质上是示例性的,且不应看作是限制本教导的范围。
图6为示出根据一实施方式的同步服务器114的部件的简化框图。同步服务器114包括多个不同的功能模块,包括安全模块160、认证模块162、客户端分配器模块164、相关桶标识符166、桶生成器168、版本生成器170、时间戳生成器172、协调模块174和存储元件178。存储元件178可包括多种信息,例如同步服务器标识符178A、设备标识符178B、设备标识符/桶图178C和设备标识符/用户账户图178D。
安全模块160,与关于客户端设备104描述的安全模块120一样,可操作以提供系统100的同步服务器114和其他元件(例如客户端设备104)之间的安全通信。因此,安全模块160可包括与安全模块120的代码或者硬件功能相似的代码或者硬件功能,以与客户端设备104建立安全连接且通过与客户端设备104的安全模块120的通信而向客户端设备104认证其身份。
认证模块162也与关于客户端设备104描述的认证模块122相似,且因此可操作以与客户端设备104的认证模块122通信,进而认证客户端设备104的身份。因此,认证模块162可包括与客户端设备104的代码或者硬件功能相似的代码或者硬件功能,以通过与客户端设备104的认证模块122的通信而认证客户端设备104的身份。
客户端分配器模块164可操作以将多个同步服务器114A至114M中的一个同步服务器分配给特定的客户端设备104。如先前所述,单个同步服务器114可代表客户端设备的子集执行同步操作。因此,客户端分配器模块164可包括用于识别特定的同步服务器以分配给特定的客户端设备104的一个或多个算法。在一个特定的实施方式中,客户端分配器模块164可实现一致性散列算法以进行这样的分配。然而,实施方式不限于使用一致性散列算法,也可使用其他类型的散列算法,例如简单散列函数、完美散列函数、最小完美散列函数、专用散列函数、滚动散列函数、通用散列函数等。为了促进识别特定的同步服务器,各个同步服务器可熟知系统100内的全部同步服务器以及期望被分配同步服务器的客户端设备104的设备标识符。系统100内的全部同步服务器的身份可被存储在例如同步服务器标识符178A中,而所接收的设备标识符可被存储为设备标识符178B。凭借该方案,当注册服务器112要将特定的客户端设备104定向至同步服务器114中的指定的同步服务器114时,注册服务器112可首先询问同步服务器114中的任一同步服务器114,它们中的哪一个同步服务器应当是用于所讨论的特定的客户端设备104的指定的同步服务器。除了其他优势外,在多个同步服务器114之间的均衡负荷可通过它们自身的自治式分配算法来实现,而无需注册服务器112或者任何其他的外部负荷均衡系统来管理该负荷均衡过程。
相关桶标识符166可操作以识别与特定的客户端设备104有关的桶。由于是相关的,故这些桶将在客户端设备和同步服务器之间同步。例如,简要地转向图8,图8描述了根据一实施方式的存储元件118的一些内容。对于各个设备,存储元件118包括多个桶。例如,对于客户端设备104“设备A”,存储元件116包括桶190,桶190包括“桶A”、“桶B”、“桶C”、“桶Z”和“桶S”。设备A与“用户A”的用户账户配对或者与“用户A”的用户账户相关联。尽管存储元件118针对设备A包括至少5个桶,但仅有这些桶的子集190A(包括桶A、桶B、桶C和桶S)与在同步服务器114处的对应桶同步。至少一个桶190B,即桶Z,与在同步服务器114处的对应桶不同步。因此,对于给定的客户端设备104,相关桶标识符166可操作以识别桶A、桶B、桶C和桶S,这是因为它们为(在该示例中)要在客户端设备104和远程服务器102之间同步的桶。
桶生成器168可操作以生成远程服务器102处的桶的实例。在一些实施方式中,信息桶(例如,桶190)未预先存在于存储元件118(即,在远程服务器102)中。相反,当初始连接至客户端设备或初始化客户端设备时,可创建桶。例如,当最初将监控设备108连接至注册服务器112时,注册服务器112可使与客户端设备104相关联的桶在存储元件118处创建。
版本生成器170可操作以生成针对各个桶的版本标识符。版本标识符可为字符串或者其他数据序列,该字符串或者其他数据序列操作以唯一地识别在某个特定时间的针对特定客户端的特定桶的版本。例如,参照图8,在给定的情形下,桶190的桶A可具有与其相关的、在桶A使用的持续时期间对于桶A是唯一的版本。在一些实施方式中,特定桶的版本相对于与相同用户或不同用户相关联的其他桶,也是唯一的,然而在其他实施方式中,该特定桶的版本相对于与相同用户或不同用户相关联的其他桶也可以不是唯一的。版本生成器170可随机地、顺序地、或者以其他用于生成唯一标识符的合适方式生成版本标识符。
时间戳生成器172可操作以生成用于各个桶的时间戳。时间戳可为字符串或者其他数据序列,该字符串或者其他数据序列操作以提供时间指示。例如,时间戳生成器172可生成时间戳,该时间戳指示生成桶的时间。随后,当改变桶时,时间戳生成器172可生成指示改变桶的时间的新的时间戳。在一些实施方式中,时间戳可按时间顺序地生成,使得即使时间戳未指示绝对时间,时间戳的序列也指示一个时间戳是在另一时间戳之前还是之后生成。
协调模块174与客户端设备104的协调模块124相类似,但在该情况下其可操作以使在存储元件118处的桶的状态与在客户端设备104处的桶128D的状态协调一致。在系统100包括多个与给定用户相关联的不同客户端设备104的实施方式中,协调模块174可操作以使在存储元件118处的桶的状态与在全部客户端设备处的桶的状态协调一致。
如所述,存储元件178可包括多种信息,例如同步服务器标识符178A、设备标识符178B、设备标识符/桶图178C和设备标识符/用户账户图178D。该同步服务器标识符178A与同步服务器标识符150A相似,且设备标识符178B与设备标识符128B相似,因此省略了进一步描述。设备标识符/桶图178C为在设备标识符和桶之间的映射或关联。即,设备标识符/桶图178C将客户端设备104与在存储元件118处存储的与这些客户端设备104相关联的桶进行映射。例如,参照图8,设备标识符/桶图178C可将用于设备A的设备标识符与在桶190中的桶A、桶B、桶C、桶Z和桶S进行映射。设备标识符/用户账户图178是设备标识符与由客户端设备104的用户利用远程服务器102建立的用户账户之间的映射或关联。
一个或多个所描述的实施方式可享有一个或多个优势,考虑到通常可用于企业的虚拟计算机和数据存储元件的本质该优势更加明显,该企业可渴望以一种可靠的、经济的、且可升级的方式实施全部的或部分的远程服务器102,以服务大量的客户端设备104(例如,范围在一些场景下从上百个这样的客户端设备到在其他场景下成百上千个这样的客户端设备、以及在另外场景下数百万以上千个这样的客户端设备),而不需要与建立定制专用硬件实施相关的费用或延迟。在一个示例性场景下,远程服务器102可通过购买来自云服务提供商(例如Amazon,Inc.of Seattle,华盛顿)的计算和数据存储能力来实施,其中,各个注册服务器112可为具有一个或多个本地实例存储容量、安装的EBS(弹性块存储)容量的EC2(弹性计算云)实例,且有权使用用作数据存储元件150的至少一部分的唯一的Amazon RDS(关系数据库服务)实例;各个同步服务器114可为具有一个或多个本地实例存储容量、安装的EBS(弹性块存储)容量的EC2实例,且有权使用用作数据存储元件178的至少一部分的唯一的Amazon RDS(关系数据库服务)实例;各个日志服务器116可为有权使用用作数据存储元件186的至少一部分的Amazon S3(简单存储服务)实例的EC2实例;以及,存储元件118可为Amazon RDS(关系数据库服务)实例。一般而言,对于这种实施,用于各个注册服务器112的数据存储元件150被专门用于特定的注册服务器112且易于只被该特定的注册服务器112访问,并且用于各个同步服务器114的数据存储元件178被专门用于特定的同步服务器114且易于仅被该特定的同步服务器114访问。数据存储元件186可主要被日志服务器116访问,但也可允许访问系统100的提供正确的认证凭证的其他元件。与用于注册服务器112和同步服务器114的存储元件相反,全部的同步服务器114(如果需要,以及注册服务器112和日志服务器116)能够访问存储元件118,尽管,如本领域已知的,数据写入和检索的速度通常将不会如当各个同步服务器114正在其自身的本地数据存储元件178写入数据以及从其自身的本地数据存储元件178读取数据时的速度一样快。
尽管被描述为独立的模块,但是应意识到,关于同步服务器114所描述的多个模块和元件可被组合成一个或多个模块或者进一步被分成一个或多个模块。该多个模块可以以软件或硬件形式实现,且存储元件178可以以任何合适的方式实现,例如在一个或多个磁盘驱动器、光存储设备、固态存储设备(例如随机存取存储器(“RAM”)和/或只读存储器(“ROM”))等上的一个或多个数据库。
在此还描述了同步服务器114的元件的多个其他特征、操作和用途。另外,应意识到,同步服务器114,尽管被描述为包括多个模块和部件,其可包括用于促进在此描述的电子设备的操作的其他元件。本领域技术人员还将意识到,同步服务器114在具有比图6所示的部件更少数目或者更多数目的部件时,可同样运行良好。因此,在图6中的同步服务器114的描述应被看作在本质上是示例性的,且不看作对本教导的范围的限制。
图7为示出根据一实施方式的日志服务器116的部件的简化框图。日志服务器116包括多个不同的功能模块,包括安全模块180、认证模块182、分类器模块184和存储元件186。存储元件186可包括多种信息,例如日志信息186A。
安全模块180,与关于客户端设备104描述的安全模块120一样,可操作以提供系统100的日志服务器116和其他元件(例如客户端设备104)之间的安全通信。因此,安全模块180可包括与安全模块120的代码或者硬件功能相似的代码或者硬件功能,以与客户端设备104建立安全连接且通过与客户端设备104的安全模块120的通信而向客户端设备104认证其身份。
认证模块182也与关于客户端设备104描述的认证模块122相似,且因此可操作以与客户端设备104的认证模块122通信,进而认证客户端设备104的身份。因此,认证模块182可包括与客户端设备104的代码或者硬件功能相似的代码或者硬件功能,以通过与客户端设备104的认证模块122的通信而认证客户端设备104的身份。
分类器模块186可操作以对从客户端设备提供给日志服务器116的信息(例如,日志信息)进行分类。在对信息分类中,分类器模块186基于客户端设备104的认证水平对信息进行分类。这可考虑多种因素中的任一种或多种,例如客户端设备104是否与日志服务器116建立安全的或非安全的连接,客户端设备104是否提交分配的凭证或默认凭证,以及所提交的凭证是有效的还是无效的。
如所述,存储元件186可包括多种信息,例如日志信息186A。日志信息186A可包括客户端设备104希望发送给日志服务器116的多种信息。例如,这可包括关于设备的状态的信息、关于设备的最近操作的信息、关于设备的环境状况的信息等。在一个特定的实施方式中,这可包括客户端事件日志(关于客户端设备感测到的事物的信息)、客户端首次登陆日志(关于设备的系统方面的信息,例如设备上一次重启的时间、设备上一次建立无线连接的时间等)、以及系统日志(例如,标准Linux日志)。在一些实施方式中,日志信息186A可基于客户端设备的认证水平而被存储。即,只有客户端设备已经达到至少特定的认证水平,才可存储一些信息。
尽管被描述为独立的模块,但是应意识到,关于日志服务器116所描述的多个模块和元件可被组合成一个或多个模块或者进一步被分成一个或多个模块。该多个模块可以以软件或硬件形式实现,且存储元件186可以以任何合适的方式实现,例如在一个或多个磁盘驱动器、光存储设备、固态存储设备(例如随机存取存储器(“RAM”)和/或只读存储器(“ROM”))等上的一个或多个数据库。
在此还描述了日志服务器116的元件的多个其他特征、操作和用途。另外,应意识到,日志服务器116,尽管被描述为包括多个模块和部件,其可包括用于促进在此描述的电子设备的操作的其他元件。本领域技术人员还将意识到,日志服务器116在具有比图7所示的部件更少数目或者更多数目的部件时,可同样运行良好。因此,在图7中的日志服务器116的描述应被看作在本质上是示例性的,且不看作对本教导的范围的限制。
如所述,图8描述了根据一实施方式的存储元件118的内容。存储元件118可以以任何合适的方式实现,例如在一个或多个磁盘驱动器、光存储设备、固态存储设备(例如随机存取存储器(“RAM”)和/或只读存储器(“ROM”))等上的一个或多个数据库。在该特定的示例中,用户A与两个设备即设备A和设备B相关联。存储元件118包括与设备A相关的桶190,并且包括与设备B相关的桶192。其他用户,例如用户B和用户C,与其他的桶194和桶196相关联。如先前所述,桶190A与设备A有关,而桶190B与设备A无关。另外,在该示例中,桶S是在设备A和设备B之间共享的桶。存储元件118可包括远程服务器102已知的全部设备的默认凭证198。存储元件118还可包括用于以下这样的设备的分配的凭证199:已经通过远程服务器102生成用于该设备的分配的凭证。
尽管描述为包括用于多个设备和用户的多个桶,但是应意识到,图8中的存储元件118的描述仅仅是示例性的且用于说明的目的。实施方式不限于参照图8所示出且描述的桶的内容或布置。而是,本领域普通技术人员会意识到可用在各个实现中的无数个变型。
图9示出了根据一实施方式的包含文中所描述的同步机制的协议栈200。通常,在一些实施方式中,在传输控制协议/互联网协议(TCP/IP)模型中,文中所述的用于分布式状态的分布的订阅-通知机制(SMSDS)位于安全超文本传输协议(HTTPS)栈的上层。
具体地,协议栈200包括物理层202、数据链路层204、网络层206、传输层208和应用层210。物理层202由基本的网络硬件传输技术组成,例如RS-232、EIA-422、10BASE-T等。数据链路层204在广域网(WAN)内相邻的网络节点之间传输数据或者在同一局域网(LAN)段上的节点之间传输数据,并且使用例如以太网、Wi-Fi、令牌环等的技术。网络层206负责数据包转发且使用诸如互联网协议(IPv4/TPv6/等)的技术。传输层208提供用于应用的端对端通信服务且使用诸如TCP、用户数据报协议(UDP)、数据报拥塞控制协议(DCCP)、流控制传输协议(SCTP)等的技术。应用层210建立进程对进程通信且包括使用诸如HTTP、HTTPS、文件传送协议(FTP)等技术的第一层210A以及实现SMSDS的第二层210B。
在一个特定的实施方式中,SMSDS可使用HTTP命令,例如GET、PUT、POST等,其中,HTTP通常在TCP上层而实现。在此公开了使用这种命令的多个示例。然而,本公开的范围不受限于此,因为在其他实施方式中,SMSDS可在除TCP之外的协议(例如UDP、DCCP等)的上层实现。因此,图9的协议栈200的描述应被看作本质上是示例性的,且不限制本教导的范围。
使用基于订阅的通知以促进分布式状态的同步的过程
图10示出根据一实施方式的用于将监控设备连接至远程服务器的过程的通信序列300。为了促进理解,结合图1至图8描述过程300,然而应理解到,该过程300的实施方式不限于结合图1至图8所描述的示例性系统和设备。
通常,监控设备108将执行连接过程,在该连接过程中监控设备108为同步做准备,然后执行同步过程,在同步过程中,监控设备108维持与系统100的其他实体的稳定状态。存在监控设备108执行连接过程的两种情况:(1)初始连接(例如,当监控设备在安装后首次连接至系统100时、当监控设备在复位后首次连接至系统100时等);和(2)后续连接(例如,当监控设备在断电、通信问题等后,重新连接至系统100时)。参照图10,描述了在用于该两个情况的多个实施方式中可实现的细微差异。
在操作302中,监控设备108与注册服务器112建立安全连接。监控设备108可使用例如在监控设备108中硬编码的注册服务器位置128A来最初识别注册服务器112的位置(例如URI)。一旦识别注册服务器112的位置,监控设备108的安全模块120可通过注册服务器112的安全模块140与注册服务器112建立安全连接。该安全模块可使用多个安全通信协议(例如TSL、SSL等)中的一个或多个来执行握手、(注册服务器112的)认证、以及后续通信的加密。
一旦在监控设备108和注册服务器112之间已建立安全连接,处理可继续至操作304,在操作304中,监控设备104将注册请求传送给注册服务器112。该注册请求是除了别的之外,待被分配给同步服务器114A至114M中的一个同步服务器的请求。该注册请求可包括多种信息中的一个或多个,例如设备标识符128B、当前软件版本128C等。在如在文中所进一步描述的一个特定的实施方式中,该注册请求可包括用于帮助向注册服务器112认证监控设备108的默认凭证。例如,认证模块122可识别存储在监控设备108上的存储元件128内的默认凭证128E,且可将这些凭证传送给注册服务器112。
响应于接收该注册请求,注册服务器112执行多种操作,所述多种操作中的一些操作参照操作306至操作314进行描述和说明。在一个实施方式中,且也在此进一步描述,注册服务器112基于所接收的默认凭证生成分配的凭证(即,唯一地分配给监控设备108的凭证),且在操作306中,注册服务器112将该分配的凭证传送回至监控设备108。例如,注册服务器112可使用认证模块142以核实所接收的默认凭证的有效性、由其生成分配的凭证、以及将该分配的凭证传送至监控设备108的认证模块122,监控设备108然后可将该分配的凭证在存储元件128中存储为分配的凭证128F。
在另一实施方式中,注册服务器执行层重定向,其中,注册服务器112将监控设备108重定向至远程服务器102的另一实例(例如,通过将监控设备108重定向至注册服务器112的另一实例)。例如,注册服务器112可使用层重定向模块144以确定监控设备108是否需要被重定向,如果需要重定向,则将重定向目标位置(例如,URI)传送给监控设备108。如果监控设备108正在执行未授权的软件,则监控设备108可被重定向至远程服务器102的另一实例,和/或如果监控设备108被映射到系统100的另一实例,则监控设备108可被重定向至系统100的另一实例。为了促进这种重定向,该注册可使用例如软件版本/层图150C连同所接收的当前软件版本128C,和/或设备ID/层图150D连同所接收的设备标识符128B。
如果监控设备108要被重定向至系统100的另一实例,则在操作308中,注册服务器112将重定向目标位置传送给监控设备108。此时,监控设备108将再一次执行连接过程300,但是是在重定向的目标位置处进行连接过程。否则,连接过程300可继续。
在一些实施方式中,注册服务器112可启动软件更新过程以确保监控设备108正在执行所期望的软件版本。尽管可实现大量不同的软件更新过程,但在一个特定的实施方式中,注册服务器112识别监控设备108的所需软件版本以及监控设备108可获取更新的软件的目标位置(例如URI),并且将该信息传送给监控设备108。例如,注册服务器112可使用软件版本/更新程序图150B以识别该信息,且可随后在操作310中将该信息传送给监控设备108。
在大多数实施方式中,注册服务器112识别多个同步服务器114A至114M中的被分配给监控设备108从而代表监控设备108执行同步的一个同步服务器。因此,在操作312中,注册服务器112传送同步服务器114A至114M中的特定同步服务器(即,分配的同步服务器)的位置标识符(例如URI)。然而,在其他实施方式中,可仅仅存在一个同步服务器。在该情况下,在操作312中,注册服务器112可将该一个同步服务器的位置传送给监控设备108,或者在其他实施方式中,该同步服务器的位置可预先存储在监控设备108上。
一旦注册服务器112已经将分配的同步服务器的身份传送给监控设备108,则处理可继续至操作314,在操作314中,注册服务器112请求已分配的同步服务器114创建用于监控设备108的桶。该请求可包括用于命令同步服务器114以创建合适的桶的多个信息。例如,该请求可包括监控设备108的设备标识符128B,同步服务器114内的桶生成器168可使用该设备标识符128B以创建存储元件118内的合适的桶。应意识到,操作314不需要跟随操作312,而是可在接收或生成用于命令同步服务器114以创建合适桶的信息后的任何其它合适的时间执行,例如,在接收设备标识符128B后的任何时间执行。
一旦监控设备108获得分配的同步服务器的位置,监控设备108然后可与该分配的同步服务器建立通信。在一个实施方式中,监控设备108使用例如安全模块120,如在操作316中所示的,与同步服务器建立安全连接。该分配的同步服务器114可类似地使用安全模块160以建立安全连接,其中,所述安全连接可与参照操作302描述的安全连接类似,除了在该情况下安全连接可用于向监控设备108认证同步服务器114的身份、而不是认证注册服务器112的身份之外。在至少一个实施方式中,可使用同步服务器114的对于监控设备唯一的端口来建立安全连接。在这种情况下,同步服务器114可通过设备所连接的连接端口识别与它连接的设备的类别。在一些实施方式中,所述端口对于特定类型的监控设备可以是唯一的,或者对于在监控设备上执行的软件的特定版本可以是唯一的。在这种情况下,同步服务器114不仅可识别与其连接的设备是否是监控设备,而且可识别监控设备的类型、在该监控设备上运行的软件(例如,操作系统)的版本等。
一旦已经在监控设备108和分配的同步服务器114之间建立安全连接,则处理可继续至操作318,在操作318中,监控设备108请求与其相关的所有桶。在本文中,相关桶为要在监控设备108和系统100的其他元件(例如同步服务器114)之间同步的那些桶。
一旦同步服务器114使用例如相关桶标识符166和设备标识符/桶图178C识别与监控设备108相关的桶,如在操作320中描述,则同步服务器114可将用于各个相关桶的桶标识符传送至监控设备108。在一些实施方式中,可基于其是初始连接或后续连接,而将不同信息传送至监控设备108。如果其是监控设备108和同步服务器114之间的初始连接(同步服务器114可执行的判定),则位于存储元件118处的用于监控设备108的桶将不会被填充。即,它们将是新建的桶,从而它们的内容将实际上是空的或者无效的,在实现时间戳和/或版本标识符的实施方式中,在存储元件118处的桶的时间戳和/或版本标识符可类似是空的或者无效的。因此,对于存储元件118处的相关桶,如已经描述,同步服务器114可仅仅将用于相关桶的设备标识符传送给监控设备108。然而,如果它是后续的连接,则存储元件118处的桶可填充内容,以及在一些实施方式中,填充时间戳和/或版本标识符。因此,对于后续连接,在操作320中,同步服务器114可不仅用用于相关桶的桶标识符而且用桶内容、时间戳和/或版本标识符进行响应。
取决于监控设备108和同步服务器114之间的连接是初始连接还是后续连接,操作322也可不同地实施。如果该连接是初始连接,则在同步服务器114处的桶将实际上是空的,而在监控设备108处的桶可被填充。在监控设备108处的桶可从传感器、用户输入、默认值、或者以其他方式进行填充。在这种情况下,为了使同步服务器114处于与监控设备108相同的初始状态中,监控设备108将相关桶(即,在操作320识别的那些桶)的内容传送给同步服务器114。在使用时间戳和/或版本标识符的实施方式中,在该初始状态下,监控设备108处的桶将不会与时间戳和/或版本标识符相关联,因为在许多实施方式中,时间戳和/或版本标识符在同步服务器接收桶内容时而被同步服务器分配。因此,在初始连接期间,在操作322中,对于在监控设备108处的桶,监控设备108可仅仅将桶内容(和,例如桶标识符以促进在同步服务器114处的桶识别)传送给同步服务器。
另一方面,如果它是后续通信,则在监控设备108和同步服务器114两者处的桶应具有内容,且在一些实施方式中,还应具有时间戳和/或版本标识符(尽管它们在这种情况下可以不是相同的,例如同步服务器被更新而监控设备离线,或者在重新连接至同步服务器之前,监控设备被更新)。因此,监控设备108不需要将其全部的桶内容传送至同步服务器114(尽管在一些实施方式中它可以这样做)。相反,监控设备108可确定它是否具有比在同步服务器114处的桶更新的桶,并且,如果有,则可仅仅传送更新的桶的内容。在一些情况下,即使监控设备108具有更新的桶,它也可不将任何内容传送给同步服务器114。
如在操作324中所述,响应于接收全部内容或者仅仅更新的内容,同步服务器114可生成和传送响应。响应于接收桶内容,在一些实施方式中,同步服务器114生成用于桶的时间戳(使用例如时间戳生成器172)、和/或生成用于桶的版本标识符(使用例如版本生成器170)。同步服务器114然后可将生成的时间戳和/或版本标识符分配给桶,且(除了与时间戳和/或版本标识符相关的桶标识符外)还将各个分配的时间戳和/或版本标识符传送回至监控设备108。监控设备108然后可将所接收的时间戳和/或版本标识符分配给它自己的桶,使得在监控设备108处的桶的状态(例如,在监控设备108处的相关桶的内容、时间戳和版本标识符)与在同步服务器114处的桶的状态相同(例如,在存储元件118处的相关桶的内容、时间戳和版本标识符)。
一旦完成该初始状态同步,则监控设备108向同步服务器114订阅所有相关的桶。即,如在操作326中描述,监控设备108可将用于订阅全部相关桶的请求传送给同步服务器114。监控设备108可基于在操作320中提供给监控设备108的相关桶的身份,来识别要订阅的相关桶。通过订阅相关桶,监控设备108请求通过同步服务器114通知在同步服务器114处的相关桶的任何变化。
在一个特定的实施方式中,可使用长轮询来实现订阅请求。即,同步服务器114可保持该订阅请求(即,不对该请求响应),直到在同步服务器114处发生相关桶中的一个相关桶的变化、或者相关桶中的一个相关桶的变化被传送给同步服务器114,或者在一些实施方式中,直到到达超时时段。以这种方式,监控设备108可非常适于显著地减小其操作功率,因为它可需要与同步服务器114周期性地进行通信(例如,消耗功率的无线通信)(即,它可需要仅仅周期性地传送订阅请求)。超时时段(以及因此以下这样的时段:在该时段期间,监控设备108需要传送新的订阅请求以避免通过注册服务器112的重新连接过程)可被设定以在功率效率和通信可靠性的估算之间平衡。例如,超时时段可为15分钟、30分钟、60分钟、75分钟、90分钟、在15分钟至90分钟的范围内、小于15分钟或大于90分钟。一旦超时时段期满,在许多实施方式中,同步服务器114会将表示超时时段结束的信息传送给客户端设备104。例如,同步服务器114可发送HTTP200状态码至客户端设备104。应意识到,尽管在一些实施方式中,如果超时时段期满,则客户端设备104可随后开始重新初始化过程(例如,如参照图10所述),而在其他实施方式中,客户端设备104可首先尝试重新订阅其相关桶(例如,如在操作326中所述)以维持长轮询。
在一些实施方式中,监控设备108可希望退订接收关于其相关桶的变化的通知。为此,监控设备108仅仅需要关闭它与同步服务器114的连接。例如,在文中所述技术以HTTP/TCP实现的实施方式中,监控设备108仅仅需要关闭与同步服务器114的HTTP/TCP连接。另外,在实现HTTP/TCP协议的实施方式中,可使用合适的HTTP命令来促进订阅请求。例如,订阅请求可使用HTTP POST命令(例如“POST/订阅”)来实现。更进一步地,在一些实施方式中,可实现会话标识符,其中,会话标识符识别监控设备108和同步服务器114之间的唯一通信会话。在这类实施方式中,监控设备108可生成会话标识符(使用例如会话ID生成器模块126)且将该会话标识符与订阅请求一起传送给同步服务器114。
应理解到,在图10中示出的具体操作提供了根据一实施方式的用于将监控设备连接至远程服务器的特定过程。根据可替选的实施方式,也可执行其他序列的操作。例如,本发明的可替选的实施方式可以不同的次序执行上文所概述的操作。此外,在图10中示出的各个操作可包括多个子操作,该子操作可以适合于该各个操作的各种顺序执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。本领域普通技术人员将意识且理解到许多变型、修改和变更。
图11示出根据一实施方式的用于将接入设备连接至远程服务器的过程的通信序列400。为了促进理解,过程400结合图1至图8进行描述,然而应理解到,过程400的实施方式不限于结合图1至图8所描述的示例性系统和设备。
与作为桶内容的“所有者”的监控设备108(即,其默认地生成桶内容)相反,接入设备110通常访问且在一些实施方式中改变监控设备108的桶的内容。然而,与监控设备108一样,接入设备110也将执行连接过程(在该过程中它为同步做准备)以及之后的同步过程(在该同步过程中,它与系统100的其他实体维持稳定状态)。
启动时(例如当接入设备通电时、当打开网络浏览器时、当执行软件应用程序时等),如操作402中所述,接入设备110与注册服务器112建立安全连接。操作402与操作302类似,除了在该情况下注册服务器位置128A可不必硬编码到接入设备110内而是可作为安装在接入设备110上的软件应用程序的一部分之外。作为建立安全连接的结果,后续通信可被加密且可向接入设备110认证注册服务器112的身份。还应意识到,尽管在该实施方式中,接入设备110和参照图9所述的监控设备108,与相同的注册服务器112建立安全连接,但在其他实施方式中,可存在具有类似功能的多个注册服务器,在该情况下接入设备使用一个注册服务器而监控设备使用不同的注册服务器。
如在与操作304类似的操作404中所述,接入设备110然后可将注册请求传送给注册服务器112。然而,在该情况下,接入设备110可不具有硬编码在其内的设备标识符。而是,在一些实施方式中,用户可输入用户标识符(例如,登录名称)作为设备标识符,该设备标识符随后作为注册请求的一部分被传送。注册服务器112然后可执行多种操作,例如层重定向(与操作308类似的操作406)、软件更新(与操作310类似的操作408)、以及识别分配的同步服务器(与操作312类似的操作410)。在许多实施方式中,接入设备110可与一个或多个监控设备108相关联。例如,接入设备110和一个或多个监控设备108均可与相同的用户账户配对。用于执行配对操作的多种技术在上述的美国专利序列号13/275,311中进行了描述。在这种情况下,分配给一个或多个接入设备110的同步服务器可与分配给相关联的一个或多个监控设备的同步服务器相同。
一旦接入设备110获得分配的同步服务器的目标位置,则接入设备110可然后与该分配的同步服务器建立通信。在一个实施方式中,如在与操作316类似的操作412中所述,接入设备110与同步服务器建立安全连接。然而,在该情况下,可使用同步服务器114的对于接入设备唯一的端口建立该安全连接。在这种情况下,同步服务器114可操作以通过该连接端口识别与其连接的接入设备的类型。在一些实施方式中,该端口可对于特定类型的接入设备是唯一的,或者可对于在接入设备上执行的特定版本的软件是唯一的。在这种情况下,同步服务器114可不仅识别与其连接的设备是否是接入设备(与监控设备或者其他类型的客户端设备对比),而且还识别接入设备的类型、在该接入设备上运行的软件(例如,操作系统)的版本等。
一旦已经建立安全连接,处理可继续至操作414,在操作414中,接入设备110请求与其相关的所有桶。关于这点,相关桶为要在接入设备110和系统100的其他元件(例如一个或多种监控设备108)之间同步的那些桶。在一些实施方式中,所述相关桶可为与配对的监控设备相关的桶相同的桶。然而,在其他实施方式中,所述相关桶可为与配对的监控设备相关的桶的子集。例如,当初始化时,接入设备110例如由于带宽限制可不请求全部相关桶。因而,接入设备110可不请求具有相对大量的字段-值对的桶。在一些情况中,在初始化时未被请求的桶可随后被请求。例如,在接入设备实施标签式的图形用户界面(GUI)时,显示给用户的初始标签可反映用于在初始化时被请求的桶的数据。当用户切换至不同的标签时,接入设备然后可提交需要反映作为不同标签的一部分的所请求的数据的桶的请求。
一旦同步服务器114使用例如相关桶标识符166和设备标识符/桶图178C识别与接入设备110相关的桶,如在操作416中描述,则同步服务器114可将用于各个相关桶的桶内容(以及用于识别与这些内容相关联的桶的桶标识符)传送至接入设备110。在使用时间戳和/或版本标识符的实施方式中,时间戳和/或版本标识符也可被传送给接入设备110。在许多实施方式中,如在图11中所述,在每次初始化期间桶内容被传送,这是因为如果接入设备110关闭其与同步服务器114的连接(例如,如果接入设备110断电、网络浏览器窗口被关闭、应用程序软件进程结束等),这些内容可被擦除或者无效。然而,在其他实施方式中,桶的当前状态的指示(例如桶版本),而不是桶内容,可被传送,且接入设备110会确定在同步服务器114处存储的桶是否比在接入设备110处存储的桶更新。只有在同步服务器114处的桶的内容比在接入设备110处的桶的内容更新时,接入设备110才可随后请求和接收桶内容。
一旦完成该初始状态同步,如在操作418中所述,则接入设备110向同步服务器114订阅所有相关的桶。这与操作326类似,但是在该情况下,接入设备110可订阅所有相关的桶,或者如上所述,订阅相关桶的子集。
应理解到,在图11中所示的具体操作提供根据一实施方式的用于将接入设备连接至远程服务器的特定过程。根据可替选的实施方式也可执行其他序列的操作。例如,本发明的可替选的实施方式可以不同的次序执行上文概述的操作。此外,在图11中示出的各个操作可包括多个子操作,该子操作可以适合于各个操作的不同顺序执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。例如,接入设备可不接收来自注册服务器的如参照操作408所述的软件更新,而是可以其他方式,例如用户-引发的或者操作系统-引发的从软件储存库的下载来接收软件更新。又例如,接入设备可不参与层重定向(即,操作406)。本领域普通技术人员将意识且理解到许多变型、修改和变更。
图12示出根据一实施方式的当在系统的监控设备处发起状态变化时用于使系统的实体之间的状态同步的过程的通信序列500。在该特定的示例中,桶的状态在监控设备108处改变、与在存储元件118中的对应桶的状态同步、并且与在其他客户端设备(诸如其他监控设备和/或一个或多个接入设备)处的对应桶同步。为了便于理解,过程500结合图1至图8进行描述,然而应理解到,过程500的实施方式不限于结合图1至图8所描述的示例性系统和设备。
在操作502中,与监控设备108相关联的其它客户端设备(例如接入设备110)将订阅请求传送给同步服务器114,其中,该请求用于订阅在监控设备108处提供的桶。
在操作504中,已经接收到(通过用户、通过在监控设备108中设置的算法等)对于其先前订阅的桶的所需的更新的监控设备108,毁除(tear down)其包括其期望进行更新的桶的订阅请求。监控设备108可以以一种或多种不同方式来毁除它的订阅请求。例如,在操作326中,当监控设备108订阅与其相关的桶时,订阅请求可以凭借长轮询过程在特定的插槽上被传送。监控设备108然后可关闭该特定的接口且在另一接口上与同步服务器114执行进一步通信。又例如,监控设备108可将订阅取消请求传送给同步服务器114,该订阅取消请求请求同步服务器114停止通知监控设备108在该请求中所识别的桶(例如相关桶)的变化。
一旦订阅请求被毁除,在操作506中,监控设备108将其所期望的桶更新传送给同步服务器。该所期望的更新可包括新的桶内容以及识别与新内容相关联的桶的桶标识符。在一些情况中,监控设备108可包括其他信息(例如时间戳和/或版本标识符)以及所期望的更新。
在操作508中,当接收所期望的桶更新时,同步服务器114对所期望的桶更新与在存储元件118处存储的对应桶进行协调一致。通过使所期望的更新与在存储元件118处的对应桶协调一致,同步服务器114可接受所期望的更新或者拒绝所期望的更新。在接受所期望的更新中,同步服务器可将该更新合并到在存储元件118处的对应桶中,或者在一些情况中,可利用所期望的更新完全覆写存储元件118处的对应桶的内容。由于同步服务器114可接受或拒绝所期望的更新,故在同步服务器114处的桶的结果内容可以与监控设备108所期望的一样(如果所期望的更新被接受)或者可以与监控设备108所期望的更新不同(如果所期望的更新被拒绝)。例如,可凭借协调模块174来实施这种协调。
一旦所期望的更新与在存储元件118处存储的对应桶协调一致时,在操作510中,同步服务器将用于使监控设备桶与在存储元件118处的对应桶协调一致的信息传送给监控设备108。这可包括确认接受所期望的更新的信息或者指示拒绝所期望的更新的信息。这也可包括或者可替选地包括信息,例如新的时间戳、新的版本标识符、以及在一些实例中用于监控设备处的桶的新内容。
响应于接收这种信息,在操作512中,监控设备108使其存储的桶与在存储元件118处的对应桶协调一致。例如,如果所期望的更新被接受,则监控设备可接收新的时间戳和/或版本标识符并且将新的时间戳和/或版本标识符应用于其现有的桶。然而,如果所期望的更新被拒绝,且从同步服务器114发送新的桶内容,则监控设备108可利用从同步服务器114所接收的新的桶内容重写(或者合并到)其现有的桶内容、且应用从同步服务器114所接收的新的时间戳和/或版本标识符。例如,可凭借协调模块124来执行这种协调。由于这种协调,在监控设备108处的桶的状态应与在同步服务器114处的桶(即,在存储元件118中的对应桶)的状态相同。
在操作514中,与操作326类似,监控设备108可再次将订阅请求传送给同步服务器。然而,应意识到,订阅请求的毁除和再传送纯粹是可选的,在一些实施方式中,这种操作可被部分地或完全省略。
一旦同步服务器114已经使所期望的更新与其自身的对应桶协调一致时,同步服务器114从而可将协调信息不仅传送给监控设备而且还传送给订阅在存储元件118处的该桶的其他设备。例如,因为在该情况下,其它客户端设备具有待决的对于桶的订阅请求(由于操作502),故在操作516中,同步服务器可将用以使该其它客户端设备的桶与同步服务器114处的对应桶协调一致的信息传送给所述其它客户端设备。这种传送尤其非常适于所期望的更新被接受的情形,但是,尽管从监控设备108接收所期望的更新而在同步服务器的桶的状态仍保持不变的情况下,可省略该传送。
如果协调信息被传送给该其它客户端设备,则在操作518中,该其它客户端设备可利用该信息以使其自身的存储的桶与在同步服务器114处的对应桶相协调一致。从而,在该其它客户端设备处的桶的状态应不仅与在同步服务器114处的桶的状态相同,而且还与在监控设备108处的对应桶的状态相同。
应理解到,图12中所示的具体操作提供根据一实施方式的当在系统的监控设备处发起状态变化时用于使系统的实体之间的状态同步的的特定过程。根据可替选的实施方式也可执行其他序列的操作。例如,本发明的可替选的实施方式可以不同的次序执行上文概述的操作。在一个特定的实施方式中,操作516可紧跟在操作508后进行和/或与操作510同时进行。此外,在图12中示出的各个操作可包括多个子操作,该子操作可以以适合于各个操作的不同顺序执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。本领域普通技术人员将意识且理解到许多变型、修改和变更。
图13示出根据一实施方式的当在系统的接入设备处发起状态变化时用于使系统实体之间的状态同步的过程的通信序列600。在该特定的示例中,桶的状态在接入设备110处改变、与在存储元件118中的对应桶的状态同步、并且与在相关的监控设备108处的对应桶同步。为了便于理解,过程600结合图1至图8进行描述,然而应理解到,过程600的实施方式不限于结合图1至图8所描述的示例性系统和设备。
在操作602中,监控设备108将订阅请求传送给同步服务器114,其中,该请求用于订阅相关的接入设备110期望变化的桶。
在操作604中,已经接收到(例如通过接入设备的用户)对于在监控设备108处提供的且其先前订阅的桶的所期望的更新的接入设备110,毁除其包括其期望进行更新的订阅请求。接入设备110可以以与参照图12所述的那些方式类似的一种或多种不同方式来毁除它的订阅请求。
在操作606中,一旦订阅请求被毁除,则接入设备110将其所期望的桶更新传送给同步服务器。该所期望的更新可包括新的桶内容以及识别与新内容相关联的桶的桶标识符。在一些情况中,接入设备110可包括其他信息(例如时间戳和/或版本标识符)以及所期望的更新。
当接收到所期望的桶更新时,在操作608中,同步服务器使所期望的桶更新与在存储元件118处存储的对应桶相协调一致。与参照操作508描述类似,通过使所期望的更新与在存储元件118处的对应桶相协调一致,同步服务器114可接受所期望的更新或者拒绝所期望的更新,且可合并在存储元件118处的桶的内容或替换在存储元件118处的桶的内容。例如,可凭借协调模块174来实施这种协调。
一旦所期望的更新与在存储元件118处存储的对应桶协调一致,同步服务器将用于使接入设备的桶与在存储元件118处的对应桶协调一致的信息传送给接入设备110。这可包括确认接受所期望的更新的信息或者指示拒绝所期望的更新的信息。这也可包括或者可替选地包括信息,例如新的时间戳、新的版本标识符、以及在一些实例中用于桶的新内容。
响应于接收到这种信息,在操作612中,接入设备110使其存储的桶与在存储元件118处的对应桶协调一致。例如,如果所期望的更新被接受,则接入设备可接收新的时间戳和/或版本标识符并且将新的时间戳和/或版本标识符应用于其现有的桶。然而,如果所期望的更新被拒绝,且从同步服务器114发送新的桶内容,则接入设备110可利用从同步服务器114所接收的新的桶内容重写(或者合并到)其现有的桶内容、且应用从同步服务器114所接收的新的时间戳和/或版本标识符。例如,可凭借协调模块124来执行这种协调。由于这种协调,在接入设备110处的桶的状态应与在同步服务器114处的桶(即,在存储元件118中的对应桶)的状态相同。
在操作614中,与操418类似,接入设备110可再次将订阅请求传送给同步服务器。然而,应意识到,订阅请求的毁除和再次传送纯粹是可选的,在一些实施方式中,这种操作可被部分地或完全省略。
一旦同步服务器114已经使所期望的更新与其自身的对应桶协调一致,同步服务器114从而可将协调信息不仅传送给接入设备而且还传送给订阅该桶的其他设备(包括一个或多个监控设备)。例如,因为在该情况下监控设备108具有待决的对于桶的订阅请求(由于操作602),故在操作616中,同步服务器可将用于使监控设备108的桶与同步服务器114处的对应桶协调一致的信息传送给监控设备108。这种传送尤其非常适于所期望的更新被接受的情形,但是,在尽管从接入设备110接收所期望的更新而在同步服务器的桶的状态仍保持不变的情况下,可省略该传送。
如果协调信息被传送给监控设备108,则在操作618中,监控设备108可利用该信息以使其自身的存储的桶与在同步服务器114处的对应桶相协调一致。从而,在监控设备108处的桶的状态应不仅与在同步服务器114处的桶的状态相同,而且还与在接入设备110处的对应桶的状态相同。
应理解到,图13中所示的具体操作提供根据一实施方式的当在系统的接入设备处发起状态变化时用于使系统的实体之间的状态同步的特定过程。根据可替选的实施方式也可执行其他序列的操作。例如,本发明的可替选的实施方式可以以不同的次序执行上文概述的操作。此外,图13中示出的各个操作可包括多个子操作,该子操作可以以适合于各个操作的多个顺序执行。在一个特定的实施方式中,操作616可紧跟在操作608之后执行和/或与操作610同时执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。本领域普通技术人员将意识且理解到许多变型、修改和变更。
图14示出根据一实施方式的当在系统的同步服务器处发起状态变化时用于使系统的实体之间的状态同步的过程的通信序列700。在该特定的示例中,桶的状态在同步服务器102处改变且与在一个或多个客户端设备104处的对应桶的状态同步。为了便于理解,过程700结合图1至图8进行描述,然而应理解到,过程700的实施方式不限于结合图1至图8所描述的示例性系统和设备。
在操作702中,客户端设备(例如,一个或多个监控设备108和/或一个或多个接入设备110)将订阅请求传送给同步服务器114,其中,该请求用以订阅在同步服务器102处(例如在存储元件118内)提供的桶。
在操作704中,同步服务器102改变所订阅的桶的状态。例如,响应于在同步服务器102处执行的一个或多个算法,同步服务器102可变更在远程服务器102处的桶的内容。
一旦桶的状态在同步服务器102处变化,则同步服务器可识别订阅该桶的客户端设备。这可以例如通过协调模块174来完成。在操作706中,同步服务器706然后将用于使客户端设备的桶与在存储元件118处的对应桶协调一致的信息传送给已识别的客户端设备。这可包括诸如新的时间戳、新的版本标识符、以及在许多实例中用于桶的新内容的信息。
响应于接收这种信息,在操作708中,客户端设备104使其存储的桶与在存储元件118处的对应桶相协调一致。例如,客户端设备104可利用从同步服务器114接收的桶内容重写(或合并到)其现有的桶内容、并且应用从同步服务器114所接收的新的时间戳和/或版本标识符。例如,可通过协调模块124来执行这种协调。由于这种协调,在客户端设备104处的桶的状态应与在同步服务器114处的桶(即,在存储元件118中的对应桶)的状态相同。
应理解到,图14中所示的具体操作提供根据一实施方式的当在系统的同步服务器处发起状态变化时用于使系统的实体之间的状态同步的特定过程。根据可替选的实施方式也可执行其他序列的操作。例如,本发明的可替选的实施方式可以以不同的次序执行上文概述的操作。此外,图14中示出的各个操作可包括多个子操作,该子操作可以以适合于各个操作的多个顺序执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。本领域普通技术人员将意识且理解到许多变型、修改和变更。
图15A示出根据一实施方式的用于执行例如在操作308和/或操作406中描述的层重定向的过程的通信序列800。为了便于理解,过程800结合图1至图8进行描述,然而应理解到,过程800的实施方式不限于结合图1至图8所描述的示例性系统和设备。
如所述,基于设备标识符和软件版本中的一个或多个可执行层重定向。因此,在操作802中,客户端设备104可以向注册服务器提供设备标识符(例如设备标识符128B)和/或当前软件版本(例如当前软件版本128C)。响应于确定客户端设备104需要被重定向至系统100的另一实例,在操作804中,注册服务器112将客户端设备104重定向至第二注册服务器(即,注册服务器112的另一实例)。例如,注册服务器112可将第二注册服务器的目标位置(例如,URI)传送给客户端设备104。客户端设备104然后可利用第二注册服务器执行初始化过程(例如,如参考图10或图11所述的初始化过程)。
图15B为根据一实施方式的客户端设备用于执行层重定向的过程810的流程图。在操作812中,客户端设备104发送设备标识符和/或软件版本到注册服务器。在操作814中,客户端设备104确定它是否接收到重定向。如果没有接收到,则处理继续至操作816,在操作816处,客户端设备104继续它的初始化过程。如果接收到,则处理继续至操作818,在操作818处,客户端设备104利用第二注册服务器开始新的初始化过程。
图15C为根据一实施方式的注册服务器用于执行层重定向的过程820的流程图。在操作822中,注册服务器112从客户端设备104接收设备标识符和/或软件版本标识符。在操作824中,注册服务器确定客户端设备104的层。例如,所接收到的设备标识符可与设备标识符/层图150D比较,和/或软件版本标识符与软件版本/层图150C比较。层图可基于软件版本和/或设备标识符指示客户端设备所属的层,从而可指示客户端设备是否应被重定向至系统100的另一实例。如果确定不需要重定向,则处理继续至操作828,在操作828处,注册服务器820利用客户端设备104继续初始化过程。否则,处理继续至操作830,在操作830处,注册服务器830将客户端重定向至第二注册服务器830。在一些实施方式中,参考注册服务器112描述的一个或多个操作可通过在注册服务器112内的合适的软件或硬件模块来执行,例如层重定向模块144。
应理解到,图15A至图15C中示出的具体操作提供了根据多个实施方式的用于执行层重定向的特定过程。根据可替选的实施方式也可执行其他序列的操作。例如,本发明的可替选地实施方式可以以不同的次序执行上文概述的操作。此外,在图15A至图15C中示出的各个操作可包括多个子操作,该子操作可以以适合于各个操作的多个顺序执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。本领域普通技术人员将意识且理解到许多变型、修改和变更。
图16A示出根据一实施方式的用于执行例如在操作310和/或操作408中描述的软件更新的过程的通信序列900。为了便于理解,过程900结合图1至图8进行描述,然而应理解到,过程900的实施方式不限于结合图1至图8所描述的示例性系统和设备。
在操作902中,注册服务器112可向客户端设备104提供指示合适的软件版本的信息。指示合适的软件版本的信息可指示注册服务器期望客户端设备执行的软件版本。在操作904中,注册服务器112还可提供软件更新服务器或系统的目标位置(例如URI),在该目标位置处,客户端设备104可获取软件。随后,如果客户端设备104确定它需要软件更新,则在操作906中它传送用于请求来自注册服务器所识别的软件更新服务器的软件更新的请求。然后,在操作908中,软件更新服务器可通过提供更新的软件给客户端设备104而进行响应。
图16B为根据一实施方式的客户端设备执行软件更新的过程910的流程图。在操作912中,客户端设备104从注册服务器112处接收指示合适的软件版本的信息902和软件更新服务器的目标位置904。然后,在操作914中,客户端设备104确定其是否需要软件更新。例如,客户端设备可将其当前软件版本128C与所接收的指示合适软件版本的信息相比较,如果它们是相同的,则客户端设备可确定它不需要软件更新且处理可继续至操作916,在操作916处,继续初始化过程。否则,处理可继续至操作918,在操作918处,客户端设备向软件更新服务器请求软件更新。在操作920中,客户端设备接收更新的软件版本,以及在操作922中,客户端设备基于所更新的版本更新其当前软件。
图16C为根据一实施方式的注册服务器执行软件更新的过程930的流程图。在操作932中,注册服务器112接收用于客户端设备104的设备标识符。处理继续至操作934,在操作934处,确定客户端设备104的合适的软件版本。例如,注册服务器112可将所接收的设备标识符与设备软件版本/更新程序图150B比较,以识别用于客户端设备104的合适的软件版本。在操作936中,注册服务器112确定软件更新服务器的目标位置,该目标位置可被存储在注册服务器112处、包括在软件版本/更新程序图150B中、或者通过注册服务器112进行访问。然后在操作938中,注册服务器112可将指示合适的软件版本的信息和软件更新服务器的目标位置传送给客户端设备104。在一些实施方式中,关于注册服务器112描述的一个或多个操作可通过在注册服务器112内的合适的软件或硬件模块来执行,例如软件更新模块146。
应理解到,在图16A至图16C中示出的具体操作提供了根据多个实施方式的用于执行软件更新的特定过程。根据可替选的实施方式也可执行其他序列的操作。例如,本发明的可替选的实施方式可以以不同的次序执行上文概述的操作。此外,在图16A至图16C中示出的各个操作可包括多个子操作,该子操作可以适合于各个操作的多个顺序执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。本领域普通技术人员将意识且理解到许多变型、修改和变更。
图17A示出根据一实施方式的用于识别例如在操作312和/或操作410中描述的分配的同步服务器的过程的通信序列1000。为了便于理解,过程1000结合图1至图8进行描述,然而应理解到,过程1000的实施方式不限于结合图1至图8所描述的示例性系统和设备。
如先前结合图10和图11所述,注册服务器112可确定和传送分配的同步服务器的身份(例如,目标位置)。在这样做时,在操作1002中,注册服务器112可将用于请求所分配的同步服务器的身份的请求传送给多个同步服务器114A至114M中的一个同步服务器。在该特定的示例中,该请求被传送至同步服务器114B,同步服务器114B可被随机选择或者使用其他技术进行选择。该请求包括设备标识符。同步服务器114B然后可确定同步服务器114A至114M中的哪一个应当被分配给客户端设备。在操作1004中,同步服务器114B然后可将分配的同步服务器(其可为同步服务器114A至114M中的任一个)的身份(例如URI)传送给注册服务器112。注册服务器112然后可将分配的同步服务器的身份转发给客户端设备。
图17B为根据一实施方式的注册服务器识别分配的同步服务器的过程1010的流程图。在操作1012中,注册服务器识别同步服务器114A至114M中的要向其递交请求(用于识别分配的同步服务器的请求)的一个同步服务器。例如,注册服务器112可随机地、顺序地、借助负荷平衡器(例如,将该请求传送给具有最低负荷的同步服务器)、或者以一些其他合适的方式识别同步服务器。在该特定的示例中,注册服务器识别同步服务器114B。在操作1014中,注册服务器将用于识别分配给客户端设备的同步服务器的请求发送至已识别的同步服务器(在该示例中服务器114B)。在操作1016中,注册服务器112(例如同步服务器识别模块148)确定是否已经接收到同步服务器的标识符。如果未接收到,处理可返回至操作1014,在操作1014处,请求被重新发送。否则,处理可继续至操作1018,在操作1018中,所接收的标识符被传送给客户端设备。在一些实施方式中,关于注册服务器112描述的一个或多个操作可通过在注册服务器112内的合适的软件或硬件模块来执行,例如同步服务器识别模块148。
图17C为根据一实施方式的用于同步服务器识别分配的同步服务器的过程1020的流程图。在操作1022中,同步服务器(在该特定示例中,同步服务器114B)接收用以识别分配给由所接收的设备标识符识别的客户端设备的同步服务器的请求。在操作1024中,同步服务器114B确定分配的同步服务器的身份。例如,同步服务器114B可执行一致性散列算法以进行这种确定。为了便于识别特定的同步服务器,各个同步服务器114A至114M可了解系统100内的全部同步服务器。例如,这可通过使用同步服务器标识符178A来提供。同步服务器(例如,同步服务器114B)然后可使用一致性散列算法和同步服务器标识符推敲所接收的设备标识符。一旦分配的同步服务器的身份被确定,则在操作1026中,同步服务器114B可将该身份传送给注册服务器112。在一些实施方式中,关于同步服务器114B描述的一个或多个操作可通过在同步服务器内的合适的软件或硬件模块来执行,例如客户端分配器模块164。
应理解到,在图17A至图17C中示出的具体操作提供了根据多个实施方式的用于识别分配的同步服务器的特定过程。根据可替选的实施方式也可执行其他序列的操作。例如,本发明的可替选的实施方式可以以不同的次序执行上文概述的操作。此外,在图17A至图17C中示出的各个操作可包括多个子操作,该子操作可以以适合于各个操作的多个顺序执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。本领域普通技术人员将意识且理解到许多变型、修改和变更。
图18A示出根据一实施方式的用于创建例如在操作314中描述的桶的过程的通信序列1100。为了便于理解,过程1100结合图1至图8进行描述,然而应理解到,过程1100的实施方式不限于结合图1至图8所描述的示例性系统和设备。
如先前结合图10所述,当监控设备108初始连接至注册服务器112时,同步服务器可创建用于监控设备108的信息桶。为了促进该过程,在操作1102中,注册服务器112可将请求同步服务器114创建用于客户端设备的桶的请求传送给同步服务器114。该请求可被发送给分配的同步服务器,且可包括设备标识符。作为响应,同步服务器114可生成桶,且在操作1104中,将所述桶被创建的确认通知传送给注册服务器112。
图18B为根据一实施方式的注册服务器创建信息桶的过程1110的流程图。在操作1112中,注册服务器112生成用以创建用于客户端设备的桶的请求。该请求可包括从客户端设备接收到的设备标识符。在操作1114中,注册服务器112将该请求传送至分配的同步服务器。在操作1116中,注册服务器112确定是否接收到桶被创建的确认通知。如果没有接收到确认通知,则处理可返回至操作1114,在操作1114处,请求被重新发送。如果接收到确认通知,则处理可持续至操作1118,在操作1118处,继续初始化过程。
图18C为根据一实施方式的同步服务器创建信息桶的过程1120的流程图。在操作1122中,同步服务器114接收用以创建用于客户端设备(诸如监控设备108)的桶的请求。在操作1124中,同步服务器确定为监控设备创建哪些桶。例如,同步服务器114可将所接收的设备标识符与设备标识符/桶图178C比较以确定要针对该设备标识符创建的合适的桶。不同类型的客户端设备可具有出于它们的用途创建的不同的桶的集合。例如,恒温器可创建有温度相关的桶,然而危险检测单元(例如,烟雾检测器)可创建有烟雾相关的桶。在操作1126中,同步服务器114创建用于监控设备的桶。在操作1128中,同步服务器114将具有空值字段的那些桶存储在存储元件118中。在操作1130中,同步服务器114使所创建的桶与设备相关联,且在操作1132中,同步服务器114将成功创建桶的确认通知发送给注册服务器112。在一些实施方式中,关于同步服务器114描述的一个或多个操作可通过在同步服务器114内的合适的软件或硬件模块来执行,例如桶生成器模块168。
应理解到,在图18A至图18C中示出的具体操作提供了根据多个实施方式的用于创建桶的特定过程。根据可替选的实施方式也可执行其他序列的操作。例如,本发明的可替选的实施方式可以以不同的次序执行上文概述的操作。此外,在图18A至图18C中示出的各个操作可包括多个子操作,该子操作可以以适合于各个操作的多个顺序执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。本领域普通技术人员将意识且理解到许多变型、修改和变更。
图19A示出根据一实施方式的用于请求例如在操作318和操作414中描述的相关桶的过程的通信序列1200。为了便于理解,过程1200结合图1至图8进行描述,然而应理解到,过程1200的实施方式不限于结合图1至图8所描述的示例性系统和设备。
如先前结合图10和图11所述,客户端设备可向同步服务器请求并从同步服务器处获取关于与该设备相关的桶的信息。为了促进该过程,在操作1202中,客户端设备104可将请求关于与客户端设备104相关的所有桶的信息的请求传送给同步服务器114。该请求可包括客户端设备104的设备标识符。作为响应,在操作1204中,同步服务器114可提供关于与客户端设备相关的桶的信息。如已经描述地,响应可包括针对该相关桶的桶标识符、桶内容、时间戳和版本标识符的一些或全部。
图19B为根据一实施方式的客户端设备请求与其相关的桶的过程1210的流程图。在操作1212中,客户端设备104生成用于相关桶的请求。例如,在使用HTTP通信的实施中,该请求可以是“HTTP GET”命令的形式。在操作1214中,客户端设备104将该请求传送给分配的同步服务器114。在操作1216中,客户端设备104确定是否接收到对于该请求的响应。如果没有接收到,则处理可返回至操作1214,且客户端设备104可重新发送该请求。否则,处理可继续至操作1218,在操作1218中,客户端设备104将该响应并入到其自身的桶结构中。
用于并入该响应的技术可取决于设备的类型(例如,监控设备、接入设备等)以及设备的操作历史(例如,初始连接、后续连接等)。对于执行初始连接的监控设备,该响应可只包括桶标识符,在该情况下,监控设备108可不执行任何桶修改,而是可使用所接收的桶标识符用于确定后续将哪个桶内容传送给同步服务器。对于执行后续连接的监控设备,该响应可包括桶标识符以及时间戳和/或版本标识符。在这种情况下,桶标识符可如在前一情况下被使用,且所接收的时间戳和/或版本标识符可与监控设备108处的相关桶相关联。对于接入设备,响应可包括桶标识符、桶内容、时间戳和/或版本标识符。在该情况下,接入设备110可存储在接入设备处的已识别的相关桶的桶内容且将时间戳和/或版本标识符分配给该桶内容。
一旦接收到来自同步服务器114的响应并将该响应并入到客户端设备104的桶结构中,处理可继续至操作1220,在操作1220中,客户端设备104继续其初始化过程。
图19C为根据一实施方式的同步服务器对关于与客户端设备相关的桶的请求进行响应的过程1230的流程图。在操作1232中,同步服务器114从客户端设备104接收用于相关桶的请求。在操作1234中,同步服务器114确定设备的类型(例如,监控设备108、接入设备110等)以及设备的操作历史(例如,初始连接、重新连接等)。为了确定设备的类型,同步服务器114可参照客户端设备104连接至同步服务器114所用的连接端口、设备标识符、或者其他合适的信息。为了确定设备的操作历史,同步服务器114可例如保持与客户端设备的连接的记录。在操作1236中,基于客户端设备104的类型和/或操作历史,同步服务器确定用于客户端设备104的相关桶标识符和相关的信息(例如,桶内容、时间戳、版本标识符等)。在一个特定的实施方式中,同步服务器114可将所接收的设备标识符与设备标识符/桶图178C比较,以确定用于该客户端设备的相关桶。在操作1238中,同步服务器114将相关桶标识符以及在合适的情况下相关联的信息(例如,桶内容、时间戳、版本标识符等)传送给客户端设备104。在一些实施方式中,关于同步服务器114描述的一个或多个操作可通过在同步服务器114内的合适的软件或硬件模块执行,例如相关桶标识符模块166。
应理解到,在图19A至图19C中示出的具体操作提供了根据多个实施方式的用于请求桶的特定过程。根据可替选的实施方式也可执行其他序列的操作。例如,本发明的可替选的实施方式可以以不同的次序执行上文概述的操作。此外,在图19A至图19C中示出的各个操作可包括多个子操作,该子操作可以适合于各个操作的多个顺序执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。本领域普通技术人员将意识且理解到许多变型、修改和变更。
图20A示出根据一实施方式的用于发送例如在操作322中描述的桶内容的过程的通信序列1300。为了便于理解,过程1300结合图1至图8进行描述,然而应理解到,过程1300的实施方式不限于结合图1至图8所描述的示例性系统和设备。
如先前结合图10所述,监控设备可将相关桶的内容传送给同步服务器。为了促进该过程,在操作1302中,监控设备108可将相关桶的内容传送给同步服务器,且在操作1304中接收来自同步服务器114的响应。在初始连接期间,监控设备108可传送如结合图20B和图20C描述的全部相关桶的内容。在后续连接期间,如结合图20D和图20E所述,监控设备108可只传送比在同步服务器处的对应桶更新的相关桶的内容。
图20B为根据一实施方式的在初始连接期间监控设备将相关桶内容发送至同步服务器的过程1310的流程图。在操作1312中,监控设备108基于先前从同步服务器接收的相关桶标识符而识别它的相关桶的内容。在操作1314中,监控设备108将全部相关桶的内容(以及桶标识符)发送给同步服务器。在操作1316中,监控设备108确定是否从同步服务器114接收到响应。如果没有接收到响应,则处理可返回至操作1314,在操作1314中,监控设备108重新发送相关桶的内容。否则,处理可继续至操作1318。因为在该情况下,该响应应当包括用于全部相同桶的诸如时间戳、版本标识符等的信息,在操作1318中,监控设备108将所接收的信息与各个相同桶相关联。
图20C为根据一实施方式的同步服务器在初始连接期间响应于接收桶内容而将响应发送给监控设备的过程1320的流程图。在操作1322中,同步服务器114从监控设备108接收全部相关桶的内容。在操作1324中,同步服务器114生成用于各个相关桶的时间戳(使用例如时间戳生成器172)和/或版本标识符(使用例如版本生成器170)。在操作1326中,同步服务器114将所生成的时间戳和/或版本标识符分配至各个相关桶。在操作1328中,同步服务器114将用于各个相关桶的桶内容、时间戳和/或版本标识符存储在存储元件118处。在操作1330中,同步服务器114将用于各个相关桶的时间戳和/或版本标识符发送给监控设备108。
图20D为根据一实施方式的在后续连接期间监控设备将相关桶内容发送给同步服务器的过程1340的流程图。在操作1342中,监控设备108基于先前从同步服务器114接收的相关桶标识符而识别它的相关桶的内容。在操作1344中,监控设备108确定它的桶是否比在同步服务器114(即,在存储元件118处)处的对应桶更新。在一个特定的实施方式中,这可通过监控设备在离线时(即,未连接至远程服务器102)追踪其桶变化而完成。一旦监控设备重新连接,其将考虑在离线时变化的任何桶比在同步服务器处的对应桶‘更新’。如果确定监控设备108处的桶并没有比在同步服务器114处的那些桶更新,则处理可持续至操作1346,在操作1346中,监控设备108继续它的初始化过程。否则,处理可继续至操作1348,在操作1348中,监控设备108将更新的桶的桶内容(和桶标识符)发送给同步服务器。在操作1350中,监控设备108确定它是否从同步服务器114接收到响应。如果未接收到响应,则处理可返回至操作1348,在操作1348处,监控设备108重新发送桶内容。否则,处理可继续至操作1352。由于在该情况下,响应应该包括仅仅用于在监控设备108处的比在同步服务器114处更新的相关桶的诸如时间戳、版本标识符等的信息,故在操作1352中,监控设备108使所接收的信息与在监控设备108处的更新的相关桶相关联。
图20E为根据一实施方式的同步服务器响应于在后续连接期间接收桶内容而将响应发送给监控设备的过程1360的流程图。在操作1362中,同步服务器114接收在监控设备108处的比在同步服务器114处的桶更新的相关桶的内容。在操作1364中,同步服务器114生成用于这些相关桶中的各个相关桶的时间戳(使用例如时间戳生成器172)和/或版本标识符(使用例如版本生成器170)。在操作1366中,同步服务器114将所生成的时间戳和/或版本标识符分配给在监控设备108处的较新的这些相关桶中的各个相关桶。在操作1368中,同步服务器114将用于这些相关桶中的各个相关桶的桶内容、时间戳和/或版本标识符存储在存储元件118处。在操作1370中,同步服务器114将用于这些相关桶中的各个相关桶的时间戳和/或版本标识符发送给监控设备108。
应理解到,在图20A至图20E中示出的具体操作提供了根据多个实施方式的用于将桶内容从监控设备传送给同步服务器的特定过程。根据可替选的实施方式也可执行其他序列的操作。例如,本发明的可替选的实施方式可以以不同的次序执行上文概述的操作。此外,在图20A至图20E中示出的各个操作可包括多个子操作,该子操作可以适合于各个操作的多个顺序执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。本领域普通技术人员将意识且理解到许多变型、修改和变更。
图21A示出根据一实施方式的用于订阅例如在操作326和操作418中描述的相关桶的过程的通信序列1400。为了便于理解,过程1400结合图1至图8进行描述,然而应理解到,过程1400的实施方式不限于结合图1至图8所描述的示例性系统和设备。在操作1402中,客户端设备104传送订阅全部相关桶的请求。在操作1404中,同步服务器114提供对该订阅请求的响应。
图21B为根据一实施方式的客户端设备订阅相关桶的过程1410的流程图。在操作1412中,客户端设备104识别与其相关的桶。在操作1414中(其可并入到使用会话标识符的实施中),客户端设备104(使用例如会话ID生成器模块124)生成会话标识符。在操作1416中(其可被并入到使用例如基于TCP的通信的实施中),客户端设备104打开新的通信插槽。在操作1418中,客户端设备104将用以订阅相关桶的请求通过新的通信插槽传送给同步服务器114。所述请求可包括多个桶相关的信息,例如相关桶的桶标识符、以及在监控设备108处的相关桶的时间戳和/或版本标识符。
图21C为根据第一实施方式的同步服务器接收订阅请求的过程1420的流程图。在操作1422中,同步服务器114从客户端设备104接收用以订阅相关桶的请求。在操作1424中,同步服务器114使在存储元件118处的相关桶(例如使用在该请求中包括的桶标识符识别)与提出该请求的客户端设备(例如使用设备标识符识别)相关联。通过做出这种关联,当在存储元件118处的相关桶发生变化时,这些变化可被传达到合适的客户端设备。
在操作1426中(其可被并入到使用会话标识符的实施中),同步服务器114使所接收的会话标识符与相关桶相关联。通过做出这种关联,如果对于相关桶的任一个桶的后续变化被客户端设备请求且与该相关桶相关联的会话标识符与包括在变化请求内的会话标识符相同,则同步服务器可通过抑制它本来进行响应时会利用的信息中的一些信息而进行响应(例如,仅仅提供在存储元件118处更新的桶的新的时间戳和/或版本,而不是全部同内容)。会话标识符的使用在订阅请求未被毁除的实施方式中可以是特别有利的,这是因为会话标识符的使用可抑制来自同步服务器的不必要的响应。
应认识到,在一些实施方式中,会话标识符可用设备标识符替换。例如,在操作1426中,同步服务器114可使所接收的设备标识符(例如,在分配的凭证中接收到的)与订阅请求相关联,而不使会话标识符与订阅请求关联。类似地,这种技术允许同步服务器114后续地抑制对来自客户端设备104的改变请求的响应。尽管设备标识符的使用可在客户端设备104具有其唯一的设备标识符且理所当然地将其唯一的设备标识符发送给远程服务器102的实施方式中是特别有利的(例如监控设备108和分配的凭证),但是会话标识符的使用可在客户端设备104没有理所当然地将唯一的设备标识符发送给远程服务器102的实施方式中是特别有利的(例如,接入设备110)。
在操作1428中(在使用确认通知的实施方式中),同步服务器114将订阅请求已经被成功接收且处理的确认通知传送给客户端设备104。在操作1430中,同步服务器104等待对于任何订阅的桶的变化。
图21D为根据第二实施方式的同步服务器接收订阅请求的过程1440的流程图。操作1442至操作1446与操作1422至操作1426类似,因此省略进一步说明。然而,在操作1448中,同步服务器114确定该请求是否包括时间戳和/或版本信息。如果不包括,则处理继续至操作1450,在操作1450中,同步服务器114将桶内容、时间戳和/或版本标识符传送给客户端设备104。由于例如操作1324或者例如操作1364,时间戳和/或版本标识符可被先前生成。然后,处理可继续至操作1454,在操作1454中,同步服务器等待对于所订阅的桶中的任一个的变化。然而,如果在操作1448中,确定该请求包括时间戳和/或版本信息,则处理继续至操作1452,在操作1452中,同步服务器114确定所接收的时间戳和/或版本标识符是否与在同步服务器114处存储的用于相关桶的时间戳和/或版本标识符相匹配。如果不匹配,则处理继续至操作1450。否则,处理继续至操作1454。以这种方式,响应于接收订阅请求,同步服务器114可确保在客户端设备104处的桶的状态和在同步服务器114处的桶的状态是相同的。
应理解到,在图21A至图21D中示出的具体操作提供了根据多个实施方式的用于订阅桶的特定过程。根据可替选的实施方式也可执行其他序列的操作。例如,本发明的可替选的实施方式可以以不同的次序执行上文概述的操作。此外,在图21A至图21D中示出的各个操作可包括多个子操作,该子操作可以适合于各个操作的多个顺序执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。本领域普通技术人员将意识且理解到许多变型、修改和变更。
图22A为根据一实施方式的用于操作客户端设备以使在客户端设备处的桶的变化与在同步服务器处的对应桶同步的过程1500的流程图。在一些实施方式中,客户端设备104为监控设备108,监控设备108如结合图12所描述的传送所期望的桶更新。在其他实施方式中,客户端设备104为接入设备,接入设备如结合图13所描述的传送所期望的桶更新。为了便于理解,过程1500结合图1至图8进行描述,然而应理解到,过程1500的实施方式不限于结合图1至图8所描述的示例性系统和设备。
在操作1502中,客户端设备生成对于桶的所期望的更新。例如,用户可输入对于桶的所期望的变化(例如对于温度设定点的所期望的变化)。又例如,在客户端设备处执行的算法可请求对于桶的所期望的变化。所期望的更新通常是在客户端设备处的桶的内容的所期望的变化,因此桶的内容从一个状态(例如,桶的字段-值对中的一个值)变化到另一状态(例如,字段-值对中的另一不同的值)。
在操作1504中,客户端设备毁除其待决的订阅请求。作为其中客户端设备订阅相关的桶(例如,操作326)的初始化过程的结果,用于与客户端设备相关的桶的订阅请求将是待决的。因此,客户端设备可使用先前所讨论的技术毁除该待决的订阅请求。在其他实施方式中,客户端设备可使订阅请求待决。
在操作1506中,客户端设备发送所期望的更新给(分配的)同步服务器。该所期望的更新可包括新的桶内容和识别与所述新的内容相关联的桶的桶标识符。在一些情况中,客户端设备可包括其他信息(例如时间戳和/或版本标识符)以及所期望的更新。在HTTP实施中,所期望的更新可以为“HTTP PUT”命令的形式。
在操作1508中,客户端设备确定是否接收到对于所期望的更新的响应。如果未接收到响应,则这可表示在客户端设备和同步服务器之间的通信的暂时故障,从而处理可继续至操作1510。
在操作1510,客户端设备执行错误处理。错误处理可包括一定的次数地尝试重新发送所期望的更新。如果仍未接收到响应,则这可表示在客户端设备和同步服务器之间的通信的永久故障,在该情况下,客户端设备可尝试重新连接注册服务器以重新初始化。如果连接注册服务器的尝试也失败,则客户端设备可开始增加(线性地、以指数方式等)重新连接尝试之间的时间、仅仅当电源可用时进行重新连接尝试等。在其他实施方式中,客户端设备可尝试重新连接注册服务器,而不尝试重新发送所期望的更新。
另一方面,如果确定从同步服务器接收到响应,则处理继续至操作1512,在操作1512中,客户端设备将其存储的桶与在同步服务器处的桶协调一致。客户端设备可基于从同步服务器接收到的响应而执行这种协调,且在一些实施方式中,可使用协调模块124以执行这种操作。作为这种协调操作的结果,在客户端设备处的订阅桶的状态应与在同步服务器处的对应桶的状态相同。结合图22B描述了用于协调桶的一个具体的技术。
在订阅请求被毁除的实施方式中,处理然后可继续至操作1514,在操作1514中,客户端设备重新订阅与它相关的桶。这可例如与操作326类似地完成。在订阅请求未被毁除的实施方式中,可避免重新订阅操作。
然后,处理可继续至操作1516,在操作1516中,客户端设备等待对于相关(即,订阅的)桶的变化。这种变化可在客户端设备处或者在系统100的其他实体(例如同步服务器、其他客户端设备等)处被引发。
图22B为用于执行参照图22A所描述的操作1512的过程的流程图。即,图22B描述了用于使在客户端设备处存储的订阅的桶与在同步服务器处的对应桶相协调的特定实施方式。
在操作1512A中,客户端设备确定它是否从同步服务器接收到新的桶时间戳和/或版本。如果没有接收到,则这可表示在客户端设备和同步服务器之间的通信的暂时故障,在该情况下处理可继续至操作1512B,在操作1512B中,客户端设备执行错误处理。在操作1512B中执行错误处理与参照操作1510描述的执行错误处理类似。
另一方面,如果确定从同步服务器接收到新的桶时间戳和/或版本标识符,则处理可继续至操作1512C,在操作1512C中,客户端设备用所接收的那些时间戳和/或版本标识符重写它现有的时间戳和/或版本标识符。例如,如果客户端设备传送对于桶A的所期望的更新,作为响应,客户端可接收用于桶A的新的时间戳和/或版本标识符。客户端设备然后用接收的那些时间戳和/或版本标识符替换它现有的用于桶A的时间戳和/或版本标识符。
然后,处理继续至操作1512D,在操作1512D中,客户端设备确定它是否从同步服务器接收到新的桶内容。如果它没有接收到,则这表示所期望的更新被接受,在该情况下,客户端设备可继续重新订阅相关的桶或者等待对于该相关桶的进一步变化(例如,操作1516)。
然而,如果客户端设备确定它从同步服务器接收到新的桶内容,则这可表示更新被拒绝、在同步服务器处的包括客户端设备所不期望的值的桶接受该更新、或者该更新被接受且即使桶内容是客户端设备所期望的、但同步服务器仍将这些桶内容传送给客户端设备。在任何情况下,处理继续至操作1512E,在操作1512E中,客户端设备用从同步服务器接收的那些桶内容重写其桶的现有的内容。在一些实施方式中,代替重写它的桶的现有的内容,客户端设备可使所接收的内容与在其桶内已存储的那些内容合并。
应理解到,在图22A和图22B中示出的具体操作提供了根据一实施方式的用于操作客户端设备以使在客户端设备处的桶的变化与在同步服务器处的对应桶的变化同步的特定过程。根据可替选的实施方式也可执行其他序列的操作。例如,本发明的可替选的实施方式可以以不同的次序执行上文概述的操作。此外,在图22A和图22B中示出的各个操作可包括多个子操作,该子操作可以以适合于各个操作的多个顺序执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。本领域普通技术人员将意识且理解到许多变型、修改和变更。
图23A为根据一实施方式的用于操作同步服务器以使客户端设备所请求的桶的变化与在同步服务器处的对应桶以及与在其他客户端设备处的对应桶同步的过程1600的流程图。为了便于理解,过程1600结合图1至图8进行描述,然而应理解到,过程1600的实施方式不限于结合图1至图8所描述的示例性系统和设备。
在操作1602中,同步服务器从客户端设备接收对于桶的所期望的更新。所期望的桶更新可从监控设备108接收(如参照图12所述)、从接入设备110接收(如参照图13所述)、或者通过同步服务器生成(如参照图14所述)。
在接收所期望的更新后,处理继续至操作1604,在操作1604中,同步服务器使所期望的桶更新与在存储元件118处存储的对应桶相协调一致。通过使所期望的更新与在存储元件118处的对应桶相协调一致,同步服务器114可接受所期望的更新或拒绝所期望的更新。参照图23B描述了用于协调桶的一个具体技术。这种处理可例如通过协调模块174来执行。
一旦所期望的更新与在同步服务器处的对应桶协调一致,则处理继续至操作1606,在操作1606中,同步服务器发送用于使客户端设备与同步服务器协调一致的信息。这可包括确认接受所期望的更新的信息或者表示拒绝所期望的更新的信息。参照图23C描述了用于发送使使客户端设备与同步服务器协调一致的信息的一个具体技术。这种处理可例如通过协调模块174来执行。
在操作1608中,同步服务器确定是否有任何其他的客户端设备订阅该桶。在确定是否有任何其他的客户端设备订阅该桶中,同步服务器可确定是否存在任何待决的用于该桶的订阅请求。如果存在,则同步服务器可识别发出该待决的订阅请求的客户端设备。
如果确定没有其他设备订阅该桶,则处理可继续至操作1614,在操作1614中,同步服务器等待对于任何订阅桶的变化。这可包括在同步服务器处作出的变化、从客户端设备传送的变化请求等。
另一方面,如果确定至少一个其他客户端设备订阅该桶,则处理继续至操作1610。在操作1610中,同步服务器确定在同步服务器处的桶的结构是否由于协调操作1604而变化。通过改变桶的结构,内容、时间戳和/或版本标识符中的一个或多个可被变更。
如果确定桶的结构未变化,则这可表示同步服务器拒绝所期望的更新,从而不需要将变化传送给其他订阅的客户端设备。因此,处理可继续至操作1614。在另一方面,如果确定桶的结构确实变化,则这可表示同步服务器至少部分地接受所期望的更新。因此,在同步服务器处的桶的新的状态应被传送给其他订阅的设备,使得全部订阅的设备具有相同状态的对应桶。因而,处理可继续至操作1612,在操作1612中,同步服务器发送用于使其他设备的桶(即,在订阅的客户端设备处的对应桶)与更新的同步服务器的桶协调一致的信息。在一个特定的实施方式中,操作1612可包括多个与在图23C中所示的操作类似且结合操作1606进行讨论的子操作。
图23B为用于执行结合图23A描述的操作1604的过程的流程图。即,图23B描述了用于使从客户端设备接收的所期望的桶更新与在同步服务器处的一个或多个对应桶协调一致的特定实施方式。
在操作1604A中,同步服务器将新的时间戳和版本标识符分配给所接收的桶。这可例如通过首先使用时间戳生成器172以生成指示接收更新请求的时间的时间戳、以及使用版本生成器170以生成新的唯一的版本标识符来完成。新生成的时间戳和版本标识符可分配至所接收的桶以供后续使用。
一旦新的时间戳和版本标识符已经被分配,则处理继续至操作1604B。在操作1604B中,同步服务器确定所请求的更新是否比在同步服务器处的与所请求的更新对应的桶新。例如,同步服务器可将新分配的时间戳与在同步服务器处的对应桶的存储的时间戳相比较。如果新分配的时间戳比对应桶的存储的时间戳更新(在大多数情况下应该是),则处理继续至操作1604C。
在操作1604C中,同步服务器确定在同步服务器处的对应桶是否与客户端设备所期望的对应桶相同(即,具有相同状态)。即,因为所期望的更新是针对在客户端设备处的桶的状态的所期望的变化,因此客户端设备期望在同步服务器处的对应桶的内容与在客户端设备处的对应桶的内容相同。在一个实施方式中,为了作出这种判断,同步服务器可将从客户端设备接收的版本标识符与在同步服务器处存储的用于对应桶的版本标识符比较。如果它们是相同的,则同步服务器确定在同步服务器处的桶与客户端所期望的桶相同。在这种情况下,处理可继续至操作1604D。
在操作1604D中,同步服务器使在所期望的更新中的桶的内容与在同步服务器处的对应桶的内容合并。以这样的方式,在同步服务器处的桶的内容与在客户端设备处的对应桶的内容相同。应意识到,在一些实施方式中,同步服务器可以用在所期望的更新中的桶的内容重写在同步服务器处的对应桶的全部内容,而不进行合并。
返回操作1604C,当同步服务器确定在同步服务器处的对应桶与客户端设备所期望的桶不相同时(例如,桶的版本标识符是不同的),则同步服务器可决定是否(虽然)接受所期望的更新或者拒绝该更新。在许多实施方式中,同步服务器可被配置成默认执行其中一个,非此即彼。例如,处理可从操作1604C继续到操作1604D或操作1604F。然而,在一些实施方式中,客户端设备可指示同步服务器在这种情形下是否应接受更新。为此,客户端设备可将开放式并发标志以及更新请求传送给同步服务器。如果该开放式并发标志被置位,或者如果客户端设备指示如果在同步服务器处的对应桶与客户端设备所期望的桶不相同则它不想要更新被接受时,则处理可继续至操作1604F,在操作1604F中,同步服务器拒绝使所期望的更新与它的对应桶合并或者拒绝接受所期望的更新。相反,如果开放式并发标志未被置位,或者如果客户端设备指示即使在同步服务器处的对应桶与客户端设备所期望的桶不相同则它确实想要更新被接受时,则处理可继续至操作1604D。在该特定的示例中,同步服务器的默认操作是合并所期望的更新,即使在同步服务器处的对应桶与客户端设备所期望的桶不相同。开放式并发标志从而操作以越权于(override)该默认可操作性。
返回操作1604B,在一些情况下,同步服务器可确定所请求的更新没有比在同步服务器处的与所请求的更新对应的桶新。例如,如果在操作1604B之前且在操作1604A后,另一客户端设备请求变化且被分配时间戳(该时间戳比在操作1604A发出的时间戳新或者与在操作1604A发出的时间戳一样新),并且对于该另一客户端设备的所请求的变化被接受(使得用于该另一客户端设备的时间戳被存储在同步服务器处),则这可发生。因此,在操作1604A中发出的时间戳不比在同步服务器处存储的时间戳新,并且在该情况下处理可继续至操作1604G。
在操作1604G中,同步服务器确定所请求的更新是否比在同步服务器处的与所请求的更新对应的桶旧。再次,这可通过比较时间戳来完成。如果所请求的更新比在同步服务器处的与所请求的更新对应的桶旧,则这可表示同步服务器具有比在请求更新的客户端设备处的桶更新的桶。在该特定的实施方式中,在这种情况下,处理继续至操作1604F,在操作1604F中,所请求的更新被拒绝。
另一方面,在操作1604G中,同步服务器可确定所请求的更新不比在同步服务器处的与所请求的更新对应的桶旧。在该情况下,所请求的更新与在同步服务器处的桶具有‘相同的年龄’。例如,桶可具有相同的时间戳。在这样的情况中,处理可继续至操作1604H。
在操作1604H中,同步服务器随机地使所期望的更新与在同步服务器处的对应桶合并。这可以以多个不同的方式实现。例如,同步服务器可注意在请求更新的客户端设备处的桶的版本标识符(例如,该版本标识符可作为该更新的一部分被发送)以及在同步服务器处的对应桶的版本标识符。由于对于给定桶的版本标识符始终是唯一的,故版本号将是不同的。然后,同步服务器可通过比较版本标识符而任意地选择合并或不合并。例如,只有当客户端设备的桶的版本标识符的数值高于在同步服务器处对应桶的版本标识符的数值时,同步服务器才可选择使所请求的更新与在同步服务器处的对应桶合并。又例如,只有当客户端设备的桶的版本标识符的数值低于在同步服务器处对应桶的版本标识符的数值时,同步服务器才可选择使所请求的更新与在同步服务器处的对应桶合并。应意识到,尽管同步服务器使所期望的更新与对应桶“随机”合并,在许多实施方式中,相同的合并算法可被全部的同步服务器114A至114M使用。以这样的方式,系统100可有利地实现最终的一致性。
图23C为用于执行结合图23A所描述的操作1606的过程的流程图。即,图23C描述了用于发送信息以使客户端设备与同步服务器协调的特定实施方式。
在操作1606A中,同步服务器确定是否已经接受从客户端设备传送的所期望的桶更新。如果所期望的桶更新未被接受,例如同步服务器已经决定拒绝使所期望的更新与在同步服务器处的对应桶合并(例如在操作1604F中),则这可表示在同步服务器处的桶的状态与客户端设备所期望的桶的状态不同。因此,处理可继续至操作1606B,在操作1606B中,同步服务器将其现有的桶内容、时间戳和/或版本标识符(即,在同步服务器处的与在更新请求中的桶对应的桶的桶内容、时间戳和/或版本标识符)传送给客户端设备。否则,处理可继续至操作1606C。
在操作1606C中,同步服务器确定它的桶是否与客户端设备所期望的桶相同。为了作出这种确定,同步服务器可将在请求中包括的版本标识符与在同步服务器处的对应桶的版本标识符相比较。如果它们相同,则同步服务器可确定它的桶与客户端设备所期望的桶相同。否则,同步服务器可确定它的桶与客户端设备所期望的桶不相同。
如果同步服务器确定它的桶与客户端设备所期望的桶不相同,则处理可继续至操作1606D,在操作1606D中,同步服务器将所合并的桶内容和新的时间戳和/或版本标识符(例如,在操作1604A中生成的那些时间戳和/或版本标识符)传送给客户端设备。这可用于即使同步服务器的桶不是客户端设备所期望的桶、但所期望的更新仍被同步服务器接受的情形。在这种情况下,为了确保客户端设备的桶与同步服务器的对应桶处于相同状态,全部的桶内容可被传送给客户端设备。
另一方面,如果同步服务器确定它的桶与客户端设备所期望的桶相同,则处理可继续至操作1606E,在操作1606E中,同步服务器仅仅将新的时间戳和版本标识符(例如,在操作1604A中生成的那些时间戳和版本标识符)传送给客户端设备。在这种情况下,所合并的桶内容不需要被传送给客户端设备,因为该内容已经是相同的。当然,在一些实施方式中,同步服务器还仍可将合并的桶内容发送至客户端设备。
应理解到,在图23A至图23C中示出的具体操作提供了根据一实施方式的用于操作同步服务器以使客户端设备所请求的桶的变化与在同步服务器处的对应桶以及与在其他客户端设备处的对应桶同步的特定过程。根据可替选的实施方式也可执行其他序列的操作。例如,本发明的可替选的实施方式可以以不同的次序执行上文概述的操作。此外,在图23A至图23C中示出的各个操作可包括多个子操作,该子操作可以以适合于各个操作的多个顺序执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。本领域普通技术人员将意识且理解到许多变型、修改和变更。
图24A至图26C示出了响应于客户端设备将所期望的更新传送给远程服务器,使在客户端设备处和远程服务器处的对应桶的状态同步的多个示例。具体地,图24A和图24B描述了在客户端设备104处具有比在远程服务器102处的桶1702旧的桶1700的情形下,客户端设备104尝试改变它的桶,但是由于客户端设备104未意识到在远程服务器102处的更新的桶,故该变化被远程服务器102拒绝。具体地,如在图24A中所示,客户端设备104存储具有内容A和内容B、版本vl和时间戳tl的桶B1。客户端设备104将A改变成A'。所请求的变化1704被发送至远程服务器102且包括桶标识符B1、版本标识符vl以及所期望的变化A'。当接收时,远程服务器102生成(尽管可永远不能分配)用于B1的新的时间戳t3和版本v3。如在图24B所示,远程服务器的预先存在的桶B1具有数据A和数据B'、版本v2和时间戳t2,其中,t2比t3新。由于t2比t3新,故远程服务器102具有比客户端设备104所发送的桶新的桶B l。在该情形下,远程服务器102拒绝所提出的变化,将定义其自身桶的状态(B1、A和B'、v2、t2)的桶1706发送至客户端设备104、并且丢弃t3和v3。客户端设备104用从远程服务器102处接收的桶替换它的桶B1,使得它的B1从桶1708状态变化至桶1710。
图25A至图25D描述了客户端设备104发送比在远程服务器102处存储的桶新的桶(即,由客户端设备104接收的分配给所提出的变化的时间戳比在远程服务器102存储的对应桶的时间戳新)且在远程服务器102处存储的桶可以是客户端设备104所期望的桶或者与客户端设备104所期望的桶不同的情形。
图25A和图25B描述了远程服务器的桶是客户端设备104所期望的桶的情形。在该情形下,当客户端设备104尝试改变它的桶时,远程服务器102将该变化与它现有的桶合并并且将成功合并的确认通知给客户端设备104。具体地,如在图25A中所示,客户端设备104存储具有桶标识符B1、内容A和内容B、版本v1和时间戳t1的桶1712。客户端设备104将A改变为A'。所请求的变化在桶1714中被发送给远程服务器102且包括B1、v1和A'。当接收时,远程服务器102生成用于B1的新的时间戳t2和版本v2。如在图25B中所示,远程服务器的具有桶标识符B1的预先存在的桶1716与在客户端设备104处的桶相同。由于远程服务器的桶B1的版本v1与客户端设备的桶B1的版本v1相同,故远程服务器的桶B1是客户端设备104所期望的。并且,由于时间戳t2比t1新,故客户端设备的请求的变化比远程服务器的存储的桶新。在该情况下,远程服务器102通过将A'合并到B1中、将新的时间戳t2和版本v2分配给B1、以及存储新的桶1718而接受所提出的变化。然后,对于桶1720,远程服务器102只将标识符B1、v2和t2发送给客户端设备104。客户端设备104用A'替换A、并且用远程服务器102发送的版本/时间戳(即v2/t2)替换它的旧的版本/时间戳v1/t1,使得它的桶B1从桶1722状态变化到桶1724。
图25A和图25C描述了远程服务器的桶不同于客户端设备104所期望的桶的情形。在该情况下,当客户端设备104尝试变化其桶时,远程服务器102使该变化与它现有的桶合并,并且除了将成功合并的确认通知发送给客户端设备104外,还将所合并的桶的内容发送给客户端设备104,因为远程服务器的桶(以及可能的所得到的合并的桶)的内容不同于客户端设备104所期望的桶。具体地,如在图25A中所示,客户端设备104存储具有桶标识符B1、内容A和内容B、版本v1和时间戳t1的桶1712。客户端设备104将A改变为A'。所请求的变化被发送给远程服务器102且包括B1、v1和A'。当接收时,远程服务器102生成用于B1的新的时间戳t3和版本v3。如在图25C中所示,远程服务器的具有桶标识符B1的预先存在的桶1726与在客户端设备的桶不同,且具有内容A和内容B'、时间戳t2和版本v2。由于v2与v1不同,故远程服务器的B1不同于客户端设备的B1。此外,由于时间戳t3比t2新,故客户端设备的请求的变化比远程服务器的存储的桶新。然而,在该情形下,远程服务器102通过将A'合并到B1、将新的时间戳t3和版本v3分配给B1、以及存储新的桶1728而再次接受所提出的变化。与前一示例相反,代替只发送桶标识符、时间戳和版本,在该情况下,对于桶1730,远程服务器102还将内容A'和内容B'发送给客户端设备104。客户端设备104用从远程服务器102接收到的内容替换它的桶B1的全部内容,且也使用所接收的时间戳t3和版本v3,使得它的桶B1从桶1732状态改变到桶1734状态。
图25A和图25D描述了远程服务器的桶不同于客户端设备104所期望的桶、但是开放式并发标志(即,越权标志)被置位的情形。通过置位开放式并发标志,如果远程服务器的桶不具有与客户端设备的桶相同的版本,则远程服务器102将拒绝接受任何所请求的变化(通过合并、重写或其他)。这是因为在一些情形中,将所请求的变化与未知的数据合并可生成不期望的或者无法预料的结果。具体地,如在图25A所示,客户端设备104存储具有桶标识符B1、内容A和内容B、版本v1和时间戳t1的桶1712。客户端设备104将A改变为A'。所请求的变化被发送给远程服务器102且包括B1、v1和A'。当接收时,远程服务器102生成用于B1的新的时间戳t3和版本v3。如在图25D中所示,远程服务器的具有桶标识符B1的预先存在的桶1736与在客户端设备的桶不同,且具有内容A和内容B'、时间戳t2和版本v2。由于v2与v1不同,故远程服务器的B1不同于客户端设备的B1。此外,由于时间戳t3比t2新,故客户端设备的请求的变化比远程服务器的存储桶新。然而,与远程服务器102合并所请求的变化的前一示例相反,因为开放式并发标志被置位,故远程服务器102此处拒绝接受所提出的变化。而是,远程服务器102维持其现有的B1版本并且以桶1738的形式将B1的副本(包括标识符B1、内容A和内容B'、版本v2和时间戳t2)发送给客户端设备104。客户端设备104然后用从远程服务器102接收的桶内容替换它的桶B1的全部内容,并且还使用所接收的时间戳t2和版本v2,使得它的桶B1从桶1740状态变化到桶1742状态。
图26A至图26C描述了客户端设备104在与远程服务器102已经生成对于桶的变化或者(从另一设备)接收对于桶的变化的时间完全相同的时间时发送同一桶的情形。因此,在远程服务器102处的桶的时间戳与从客户端设备104所接收的桶的时间戳是相同的,但是由于随机生成版本故版本是不同的。桶的内容也可以是不同的。在该情况下,响应于客户端设备的用于改变桶内容的请求,远程服务器102必须确定是否拒绝该变化请求或者接受该变化请求。在实施方式中,远程服务器102实施算法,其中,规则是具有最高版本号的桶‘胜出’。由于随机生成版本号,故也随机确定是否接受内容变化。
图26A和图26B描述了远程服务器的桶的时间戳与客户端设备的请求的变化的分配的时间戳相同且远程服务器的桶版本高于客户端设备的桶版本使得远程服务器102‘胜出’的情形。在该情况下,当客户端设备104尝试改变它的桶时,远程服务器102拒绝该改变而是将它的桶发送给客户端设备104。具体地,如在图26A中所示,客户端设备104存储具有桶标识符B1、内容A和内容B、版本v1和时间戳t1的桶1744。客户端设备104将A改变为A'。所请求的变化1746被发送给远程服务器102且包括B1、v1和A'。当接收时,远程服务器102生成用于B1的新的时间戳t2和版本v3。如在图26B中所示,远程服务器的具有桶标识符B1的预先存在的桶1748具有与客户端设备的请求的变化的新分配的时间戳t2相同的时间戳t2。由于时间戳是相同的,故远程服务器102必须选择“胜利者”。在该示例中,远程服务器的桶版本v2高于客户端设备的桶版本v1,从而远程服务器102‘胜出’。因此,远程服务器102拒绝所提出的变化且发送包括桶标识符B1、内容A和内容B'、版本v2和时间戳t2的桶1750。客户端设备104然后用从远程服务器102接收的桶内容替换它的桶B1的全部内容,且还使用所接收的时间戳t2和版本v2,使得它的桶B1从桶1752状态变化到桶1754状态。
图26A和图26C描述了远程服务器的桶的时间戳与客户端设备的请求的变化的分配的时间戳相同且远程服务器的桶版本低于客户端设备的桶版本使得客户端设备104‘胜出’的情形。在该情况下,当客户端设备104尝试改变它的桶时,远程服务器102接受该变化、将该变化合并到它现有的桶中、且将将所得到的合并桶发送给客户端设备104。具体地,如在图26A中所示,客户端设备104存储具有桶标识符B1、内容A和内容B、版本v1和时间戳t1的桶1744。客户端设备104将A改变为A'。所请求的变化被发送给远程服务器102且包括B1、v1和A'。当接收时,远程服务器102生成用于B1的新的时间戳t2和版本v3。如在图26C中所示,远程服务器的具有桶标识符B1的预先存在的桶1756具有与客户端设备的请求的变化的新分配的时间戳t2相同的时间戳t2。由于时间戳是相同的,故远程服务器102必须选择“胜利者”。在该示例中,远程服务器的桶版本v2低于客户端设备的桶版本v1,从而客户端设备104‘胜出’。因此,远程服务器102接受所提出的变化,将该变化合并到B1中使得它的桶B1从桶1756状态变化到桶1758状态、且将v3分配给B1。然后,远程服务器102将合并后的桶1760(包括标识符B1、桶内容A和桶内容B'、版本v3和时间戳t2)回送给客户端设备104。客户端设备104然后用从远程服务器102接收的桶内容替换它的桶B1的全部内容,且还使用所接收的时间戳t2和版本v3,使得它的桶B1从桶1762状态变化到桶1764状态。
应意识到,参照图25D所讨论的开放式并发标志的概念也可用于参照图26A至图26C所讨论的相同时间戳的情形。即,如果开放式并发标志被置位,并非如结合图25C所讨论的当客户端设备104‘胜出’时合并所请求的变化,由于远程服务器的桶内容可与客户端设备104所期望的桶内容不同,故远程服务器102可拒绝执行该合并。在这种情形下,如参照图26B所述,远程服务器102将其现有的桶返回至客户端设备104。
另外,应理解到在图24A至图26C中示出的具体操作提供了响应于客户端设备将所期望的更新传送给远程服务器,用于使在客户端设备和远程服务器处的对应桶的状态同步的特定示例。这些示例仅仅出于说明目的。本领域普通技术人员将意识和理解到许多变型、修改和替换。
认证用于与远程服务器通信的设备的方法
综述。当与远程服务器102通信时,客户端设备104可使用身份和匹配秘密来认证自身。这一对,统称为设备凭证,形成了客户端设备和远程服务器之间的信任关系的基础。从远程服务器的角度来看,拥有有效的设备身份和秘密的任何设备均是该设备,将会被提供相同的权限。
尽管设备凭证提供一种用于使客户端设备向远程服务器认证其本身的方式,但在一些实施方式中,设备凭证可以不提供用于使远程服务器向客户端设备认证其本身的方式。因此,设备凭证可被用在可确认服务的身份的另一协议(例如,SSL)的环境下。
在任意时间点,客户端设备可拥有高达两组凭证:一组默认凭证,以及可选的,一组分配的凭证。默认凭证在制造时被提供给设备,且在设备的整个使用期内属于该设备。例如,图27A为示出将默认凭证传送给客户端设备的框图。制造商101将默认凭证发送给客户端设备104。作为响应,客户端设备104将所接收的默认凭证存储在它的存储元件128中。
分配的凭证在远程服务器/客户端设备交互的正常过程期间由远程服务器102提供给客户端设备。例如,图27B为示出分配的凭证传送给客户端设备的框图。远程服务器102将分配的凭证发送给客户端设备104。作为响应,客户端设备104将所接收的分配的凭证存储在它的存储元件128中,导致客户端设备104具有默认凭证和分配的凭证两者。
默认凭证提供了一种用于使客户端设备断定其是授权实体制造的合法设备的方式。分配的凭证提供了一种用于使客户端设备断定其已经被服务认为是可信的且应当在所有交互中被授予完全权限的方式。
一旦客户端设备104拥有一组分配的凭证,则当向远程服务器102认证时,它仅使用那些分配的凭证。只有当客户端设备104不具有分配的凭证、或者当使用它的分配的凭证的认证失败时,客户端设备104可求助于它的默认凭证。
设备凭证可被设计成与多种协议兼容。采用用户名和密码且对那些字段设定可接受的长度限制的任何协议,应允许使用设备凭证用于认证。在许多实施方式中,设备凭证用于HTTPS协议的环境中。因此,在HTTPS协议的环境中提供设备凭证的其他说明,但本领域技术人员会意识到设备凭证类似地应用于其他协议,例如FTP、SMTP、TELNET、SSH、X400、X500、CMIP等。
设备凭证的结构。设备凭证可采取具有可变长度的结构化的ASCII字符串的形式。在一些实施方式中,注意确保这些字符串相当小且它们的字符集相对于在其他协议中的内容尽可能的中性。在一些实施方式中,设备凭证的结构化的性质允许它们传送关于它们如何形成的信息以及证实它们所需要的算法。
在一些实施方式中,设备凭证由句号分开的多个成分字符串组成。各个成分字符串限于ASCII字符A-Z、a-z、0-9、破折号和下划线。因此,用于作为整体的凭证字符串的合法字符集是那些字符加句号。落在可允许字符集之外的成分值(例如二进制散列值)以URL64格式、设计用于URL中的内容的Base64的变型进行编码。URL-64的使用可是尤其有利的,这是因为其规定了语法上中性的身份字符串,从而允许设备凭证通过URL或者其他文本语境,而无需大量特殊转义。然而,应意识到,在其他实施方式中的设备凭证可呈现包括一个或多个不同字符集(例如,EBCDIC、ISO 8859、ISCII、TSCII、VISCII等)的不同的形式。
在一个实施方式中,设备凭证的第一成分被称作方案(scheme)。所述方案为短字符串,其识别凭证的类型以及形成凭证的过程。方案使得远程服务器102可以立即识别正在呈现的凭证的类型。由于新的认证机制被引入,故方案有助于区分旧形式的凭证和新形式的凭证。在其他实施方式中,例如当只有单一类型的认证机制被使用或者当其他机制被实施以将正呈现的凭证的类型通知给远程服务器102时,该方案成分可被省略。
设备凭证的其他成分的数目和含义通常从一个凭证类型到另一凭证类型变化,且在包括方案成分的实施方式中,可由该方案来确定。
默认凭证。在制造期间,客户端设备104被提供一组唯一的默认凭证。在设备与远程服务器102初始交互期间,设备的默认凭证用于认证该设备。它们也被用于这样的情况:其中,通过终端用户的直接操作或者间接地借助远程服务器102,设备被“擦除”或者被恢复至出厂默认设置。在物理设备的整个使用期期间,默认凭证属于该物理设备,且注意确保它们绝不会丢失(例如,在固件升级期间)。
从主密钥通过计算方法生成默认凭证。在制造过程期间,生产线上的配置设备从主密钥生成该凭证且将它们注入设备的永久内存中。在一些实施方式中,这可在客户端设备104被分配序列号的同时发生。在一些实施方式中,默认凭证具有下列的结构:
<默认-方案>:='d'
<默认-id>:=<默认-方案>+'.'+<序列号>+'.'+<制造-秘钥-id>
<默认-秘密>:=<默认-方案>+'.'+URL64(<默认-MAC>)
在此,<序列号>为客户端设备104的用户可见的序列号,<默认-MAC>为256位消息认证码(MAC),且<制造-秘钥-id>为识别用于生成MAC的特定主密钥的字符串。URL64()函数表示URL-64格式的字节序列的编码。
在默认秘密中使用的MAC使用下列算法基于默认身份和主制造密钥生成:
<默认-MAC>:=HMAC-SHA256(<制造-秘钥>,ASCII(<默认-id>))
在此,HMAC-SHA256()为基于散列的消息认证代码算法的SHA-256变型,且<制造-秘钥>为分配给生产该设备的生产线的随机生成的512位序列。ASCII()函数表示作为以ASCII形式的字节序列的字符串的编码,不包括终止空字符。
应意识到,实施方式不限于具有该特定结构的默认凭证。例如,该默认方案可被省略。<默认-id>不需要包括制造-秘钥-id,甚至也不包括序列号,而是可使用唯一识别客户端设备的其他字符串或数据序列。另外,<默认-秘密>不需要包括默认方案,且不需要包括URL-64编码的MAC,而是可使用形成仅仅被客户端设备104和远程服务器102得知的秘密的其他的字符串或者数据序列。
分配的凭证。除了其默认凭证外,客户端设备104可获取被称作其分配的凭证的第二组凭证。这些凭证由远程服务器102通过安全连接提供给客户端设备104。一旦客户端设备104拥有一组分配的凭证,则其优先于其默认凭证而使用分配的凭证,直到当其丢失分配的凭证(例如,在恢复到出厂状态情形下)、分配的凭证被替换时或者分配的凭证变得无效时。为了限制攻击的机会,远程服务器102在其正常操作过程期间周期性地将新的凭证分配给客户端设备。
在一些实施方式中,分配的凭证具有以下结构:
<分配-方案>:='a'
<分配-id>:=<分配-方案>+'.'+<序列号>
<分配-秘密>:=<分配-方案>+'.'+URL64(<随机-128>)。
在此,<序列号>为客户端设备104的用户可见的序列号,且<随机-128>为远程服务器已经分配给设备的随机生成的128位的序列。
然而,应意识到,实施方式不限于具有该特定结构的分配的凭证。例如,默认方案可被省略。<分配-id>不需要包括序列号,而是可使用唯一地识别客户端设备的其他字符串或者数据序列。另外,<分配-秘密>不需要包括默认方案,且不需要包括URL-64编码的随机数,而是可使用形成仅仅被客户端设备104和远程服务器102得知的秘密的其他的字符串或者数据序列。
凭证的验证。在一些实施方式中,默认凭证和分配的凭证使用共同的方法进行验证。远程服务器102保持用于各个已知设备的凭证数据库;例如,数据库可被存储在存储元件118中或者在远离存储元件118的存储元件(未示出)中。为了防止丢失,远程服务器102使用单向散列函数以散列形式存储凭证的保密部分,例如SHA-256单向散列函数。在验证时,客户端设备提供的秘密使用相同的函数被散列,且所得到的值与数据库中存储的对应值进行比较。如果两个值匹配,则所提供的凭证被认为是可信的。
秘密散列可如下生成:
<散列-秘密>:=SHA256(ASCII(<秘密>))
因为秘密的散列形式是不可逆的,故执行设备认证的前端服务器可本地高速缓存该散列的凭证以提高性能。例如,在非散列的凭证被存储在存储元件118或者远离存储元件118的存储元件(未示出)中的情况下,注册服务器112、同步服务器114和/或日志服务器116可存储散列的凭证。当这发生时,缓存的凭证可周期性地被重新认证。例如,至少每6小时、每12小时、每18小时、每24小时、每30小时、每36小时,6小时至36小时的范围内,小于6小时的时间周期、或者大于36小时的时间周期。通过重新认证缓存的凭证,执行设备认证的前端服务器证实该散列的凭证仍是准确的。另外,缓存的凭证可以以非周期性的间隔进行重新认证。例如,响应于认证失败,散列的凭证可被重新认证。
为了防止信息泄露,在一些实施方式中,当比较秘密散列时,远程服务器102可使用时间恒定的比较算法。
认证协议。客户端设备104和远程服务器102之间的认证可发生在任意数目的不同通信协议的环境下,例如FTP、SMTP、TELNET、SSH、X400、X500、CMIP等。出于说明的目的,下文说明描述了在HTTP交互的环境范围内的设备认证。
在HTTP环境下,客户端设备104使用HTTP基本访问认证协议(如例如在RFC-2617中所述)以安排与远程服务器102的认证交互。当形成HTTP授权头时,设备的身份和秘密被分别用作用户名和密码。
客户端设备104和远程服务器102实现由HTTP协议限定的标准的认证交换。具体地,在任何时间,服务器可采用要求认证的401(未授权的)响应对设备的请求作出响应。401响应可包含请求使用基本认证的WWW-认证头。当收到401响应时,客户端设备104再发出包括包含设备凭证的授权头的该请求。当接收具有授权头的请求时,远程服务器102对设备凭证进行拆包且如在凭证的认证部分所描述来认证它们。
因为客户端设备104始终拥有一组凭证(默认的或者分配的),因此在一些实施方式中,它可通过在请求中包括授权头而预料到需要认证,而无需等待远程服务器102用401响应进行响应。这可被用于避免设备和远程服务器102之间的额外的初始往返。
如果设备所提供的凭证是无效的,则远程服务器102将采用401(未授权的)响应对请求作出回应。该设备通过观察它是否在相关请求中发送授权头来区分表示认证失败的401,如果其发送了授权头,则在请求中使用的凭证是不合适的。
如果设备正使用其分配的凭证,但还是发生认证失败,则该设备将从其永久内存中删除该凭证,且使用其默认凭证重复认证。注意到,这很可能导致设备权限的丢失(参见分配的凭证的安全性暗示部分)。
如果设备正使用其默认凭证但还是发生认证失败,则该设备可等待短时间段且使用相同的凭证重试该请求。如果失败继续发生,则在一些实施方式中,设备可在两次重试之间等待逐渐变长的时间段。该时间段可达到最大时间段,例如每5分钟一次、每10分钟一次、每15分钟一次,在每5分钟一次到每15分钟一次的范围内、在小于5分钟的时间段中进行一次、或者在大于15分钟的时间段中进行一次。
在一些实施方式中,客户端设备104和远程服务器102之间的所有认证交互通过使用例如SSL的安全连接发生。在SSL连接协商期间,客户端设备104使用例如基于标准证书的SSL服务器认证来认证远程服务器102。客户端设备104绝不会将包含其凭证的授权头通过不安全连接发送、或者绝不会将包含其凭证的授权头发送给未被恰当地认证为属于特定实体的服务器。类似地,远程服务器102可采用永久故障来拒绝用以通过不安全连接来认证客户端设备104的任何企图。
凭证分配协议。当远程服务器102将新的凭证分配给客户端设备104时,该凭证可作为正常HTTP交互的一部分被传送给设备。具体地,新凭证可在X-nl-设置-客户端-凭证报头中被传送,该X-nl-设置-客户端-凭证报头包括在来自远程服务器102的HTTP响应中。用于这种报头的语法为:
‘X-nl-设置–客户端-凭证’‘:’1*SP<设备-id>1*SP<设备-秘密>
在此,<设备-id>和<设备-秘密>为代表设备的新身份和秘密的字符串,其中,“1*SP”代表一个或多个ASCII间隔字符。在一些实施方式中,身份和秘密的字符串的内容限于ASCII字符A-Z、a-z、0-9、冒号、破折号、下划线和句号。在其他实施方式中,身份和/或秘密的字符串可采用包括一个或多个不同字符集的不同形式,例如EBCDIC、ISO8859、ISCII、TSCII、VISCII等。
X-nl-设置-客户端-凭证报头可被包括在远程服务器102生成的任何响应中。一旦被客户端设备104接收,客户端设备104丢弃它拥有的任何现有分配的凭证且将新的凭证存储在它的永久内存中。从那时起,该设备在任何后续的与远程服务器102的认证交互中使用该新的凭证。
如所述,在一些实施方式中,客户端设备104仅通过安全连接(例如,SSL)接受新的分配的凭证,在安全连接中,在连接的另一端的一方被远程服务器102得知(如通过例如SSL服务器认证所建立)。类似地,远程服务器102可只通过安全连接将包含新的凭证的X-nl-设置-客户端-凭证报头发送给设备。另外地,响应于已经利用一组有效的设备凭证进行认证(使用在认证协议中描述的机制)的请求,远程服务器102将只发送新的凭证。
分配的凭证的管理。当客户端设备104首次连接远程服务器102时,它使用它的默认凭证以认证自身。在该初始交互期间,该设备被给予一组新的分配的凭证,在与远程服务器102进一步通信中它必须使用该组新的分配的凭证。此后,在一些实施方式中,在后续交互期间,远程服务器102将新的凭证分配给设备。分配的凭证的轮换可周期性地发生,例如每周、每月、每年、在从一周到一年的范围内的时间段后、在小于一周的时间段、或者在大于一年的时间段。分配的凭证的轮换也可或者可替选地非周期性地发生。例如,在客户端设备104连接至远程服务器102一定次数后。
分配的凭证维持有效,直到它们被远程服务器102替换。因为凭证的轮换通常发生在客户端设备104和远程服务器102正在交互时,故长时间段不能够与远程服务器102通信的设备并未失去其认证的能力。
在一些实施方式中,远程服务器102可力图根据其自身的日程安排来分配新的凭证。尤其,外部实体不能够引起远程服务器102生成新的分配的凭证,除了通过利用一组有效的默认凭证进行认证外。为了限制反复的尝试以使用一组偷窃的默认凭证来生成新的分配的凭证,远程服务器102可将客户端设备104使用一组特定的默认凭证认证的速度限制为每小时较少次数(例如,5次、10次、15次、在从5次到15次的范围内,小于5次、或者大于15次)。
由于通信故障,分配给客户端设备104的凭证可能与在远程服务器102存储的凭证不同步。具体地,如果传送一组新的凭证给客户端设备104的消息丢失,则远程服务器102将拥有新的凭证,而客户端设备104将仍采用旧的凭证进行操作。为了使客户端设备104从该状态中恢复,远程服务器102执行宽限期,在该宽限期内,远程服务器102允许客户端设备104使用新凭证或者旧凭证进行认证。宽限期通常在客户端设备104使用旧凭证认证且远程服务器102确定是时候分配新组的时刻开始,但在其他实施方式,可选择不同起始点。一旦宽限期开始,任何对旧凭证的使用将引发远程服务器102重新发送新的凭证给客户端设备104。一旦宽限期结束,远程服务器102丢弃旧的凭证,且使用旧的凭证进行认证的任何进一步尝试将被拒绝。宽限期的持续时间可为,例如12小时、24小时、36小时、在12小时至36小时的范围内、小于12小时、或者大于36小时。在一些实施方式中,即使宽限期结束,客户端设备104仍可以使用默认凭证认证自身。
默认秘密散列的生成。在远程服务器102内,通过包含用于每个已知客户端设备104的秘密散列的凭证数据库(例如,在注册服务器112、同步服务器114、日志服务器116等处提供)来支持设备认证。在新的设备连接远程服务器102之前,用于新设备的默认秘密散列可被生成且加载到凭证数据库中。秘密散列生成过程将设备标识符的列表(例如设备序列号)看做是输入。秘密散列生成过程采用与制造商使用的加密算法相同的加密算法,制造商使用该加密算法以将默认凭证提供给客户端设备104。例如,远程服务器102可使用制造密钥(例如被客户端设备104提供的默认凭证所识别的密钥)以及与该制造密钥相关联的该客户端设备的序列号来应用HMA-SHA256算法。
分配的凭证的安全性暗示。应意识到,拥有一组有效的分配的凭证并不一定暗示客户端设备104在任何情况下是可信的,或者客户端设备104应被授权访问任何特许的信息或服务。更确切地说,客户端设备104的可信度可通过设备认证机制的方式来建立,--例如,通过促使所有者输入密码以使客户端设备104与它们的账户相关联(例如,配对)。一旦已经建立信任,则设备的分配的凭证用于向远程服务器102证明正在讨论的客户端设备104确实是与其存在信任关系的设备。
从这可以看出,在用户账户和设备凭证之间的关系可为信任关系。在建立信任后,总而言之,具有该受信任的设备凭证的任何设备为客户端设备104,不论他们是否实际上物理上占有该客户端设备104。相反地,如果客户端设备104丢失其凭证,它可通过与其首次受信任时所使用的方式相同(或者更强的)的方式被强制重新建立信任关系(即,客户端设备104可需要与用户账户重新配对)。
默认凭证的安全暗示。客户端设备104的呈现一组有效的默认凭证的能力向远程服务器102提供以下这样的信任:客户端设备104确实是特定实体制造的可信的一件硬件。然而,该信任不是绝对的。一个能够合法访问客户端设备104的怀有恶意的人—即,参与制造过程的人、或者第三方设备安装商/经销商的雇员,可能提取设备的默认凭证且在后来使用它们以假冒该设备。另外,用于创建默认凭证的主密钥可易受到直接的工程攻击或者社会工程攻击。
出于这些原因,在一些实施方式中,凭借其默认凭证已经被认证的客户端设备104,并不被远程服务器102授予重要的权限。远程服务器102授权给这种客户端设备104的主要权限是获取新的分配的凭证的能力,这是朝向建立信任的第一步。
默认凭证的相对力度也允许远程服务器102信任它从客户端设备104接收的某些类型的信息。例如,远程服务器102能够记录和监控来自利用默认凭证认证的客户端设备104的日志数据,从而允许客户支持人员诊断阻止客户端设备104变得充分受信任的连接或认证问题。尽管如此,远程服务器102仍必须采取合理的预防措施防止该权限的滥用,这是因为怀有恶意的人可能从客户端设备104提取一组默认凭证,且使用它们以使系统充满虚假的日志信息。
当向远程服务器认证时的设备行为
初始联系和正常操作。当新的客户端设备104启动时,在许多实施方式中,它的第一请求针对注册服务器112。该交互使用设备的默认凭证进行认证,在一些实施方式中,设备的默认凭证在HTTP授权头中呈现给远程服务器102。
当注册服务器112对该请求作出响应时,它在例如X-nl-设置-客户端-凭证响应报头中返回用于客户端设备104的初始的一组分配的凭证。当接收该报头时,客户端设备104提取新的凭证且将它们存储在永久存储器中,例如存储元件128。
随后,客户端设备104将其在每次请求时的分配的凭证呈现给远程服务器102。分配的凭证保持有效,直到1)它们被远程服务器轮换出去;2)客户端设备被重设为出厂默认设置;或者3)强制客户端设备重设其凭证的错误发生。
凭证轮换。基于周期性的(或非周期性的)的基础,远程服务器102将一组新的分配的凭证传送给客户端设备104,以替换其现有的凭证。在初始联系情况下,新的凭证可凭借X-nl-设置-客户端-凭证响应报头而被返回。当与远程服务器102的端点(例如,注册服务器112、同步服务器114或日志服务器116)中的一个进行任何交互时,凭证轮换可发生。
当客户端设备104接收新的分配的凭证时,其更新其已经在其永久存储器中存储的分配的凭证的副本。在许多实施方式中,当它一从远程服务器102接收X-nl-设置-客户端-凭证报头时,这就发生。在至少一个实施方式中,客户端设备104可使用长轮询,其中,它传送用以订阅全部相关桶的请求(参见,例如结合图10描述的步骤326)。在这种情况下,一旦接收到长轮询响应的报头,而不是在响应的主体(如果有的话)出现时,客户端设备104可更新其凭证。
处理认证失败。在一些少见的情形下,客户端设备104可以以远程服务器102认为是无效的一组分配的凭证而结束。当这发生时,远程服务器102将利用例如HTTP 401未授权的响应拒绝使用这些凭证的请求。每当客户端设备104从远程服务器102接收该错误时,它立即丢弃其分配的凭证的本地副本且使用其默认凭证返回至注册服务器112。对于从客户端设备104到任一远程服务器102的端点进行的任何请求,该行为可发生。
在一些实施方式中,在认证失败和客户端设备104成功地从注册服务器112接收新的分配的凭证的时刻之间的时间期间,除了与注册服务器112的通信以及在一些情况下与日志服务器116的通信外,客户端设备104禁止与远程服务器102的所有通信。在其他实施方式中,客户端设备104可在丢弃其凭证且返回至注册服务器112之前,尝试一次或多次重试。
由于全部客户端设备应当制造有有效的默认凭证,故远程服务器102应当从未将HTTP 401未授权响应返回给使用默认凭证的客户端设备104。然而,在一些情形下(例如,偷窃的设备、偷窃的默认凭证等),这可发生。如果远程服务器102拒绝客户端设备104的默认凭证,则客户端设备104可实施回退算法,在回退算法中,它等待两次重试之间的逐渐增长的时间段,直到它成功。
如果用户引发该设备重设为出厂默认特征,则客户端设备104清除其分配的凭证且恢复到上述所述的初始联系行为。
当认证客户端设备时的远程服务器的行为
注册服务器认证行为。客户端设备被允许使用默认凭证或者分配的凭证向注册服务器112认证。当客户端设备104使用默认凭证认证时,远程服务器102的行为取决于客户端设备104是否先前已经联系过远程服务器102。
初始联系。当注册服务器112接收来自客户端设备104的请求时,如果在例如存储元件118的分配的凭证198中,不存在用于客户端设备104的分配的凭证,则远程服务器102考虑该请求为客户端设备104和远程服务器102之间的首次联系。在该情形下,远程服务器102立即生成一组新的分配的凭证且将它们返回至客户端设备104。客户端设备104然后被预期使用这些凭证用于与远程服务器102的进一步交互。
设备返回。在正常情形下,当客户端设备104返回到注册服务器112时,它使用其分配的凭证进行认证。在该交互期间,设备的分配的凭证可如先前所述以及在下文中进一步描述的进行周期性轮换。
丢失的凭证。在一些情形下,先前已经被给予分配凭证的客户端设备104可使用其默认凭证返回至注册服务器112。该情形可在至少两种情况下出现:(1)客户端设备104第一次联系注册服务器112且出示其默认凭证。注册服务器112用一组新的分配凭证进行响应,然而,例如由于连接问题,该响应丢失。随后,客户端设备104再次使用其默认凭证向注册服务器112重试该请求。这是‘初始联系’场景。(2)客户端设备104使用过期的分配凭证联系远程服务器102。远程服务器102检测到该过期的凭证且分配一组新的凭证,然而该响应丢失。随后,客户端设备104离线比分配凭证的宽限期更长的时间段。当恢复连接时,客户端设备104尝试使用远程服务器102采用例如HTTP 401未授权响应来拒绝的旧凭证来进行连接。当接收到该旧凭证时,客户端设备104丢弃其分配凭证且使用其默认凭证返回至注册服务器112。这是‘丢失的凭证’场景。
远程服务器102可通过检测在例如存储元件118中的分配凭证的存在而区分丢失的凭证场景和初始联系场景。当远程服务器102检测到客户端设备104已经丢失其凭证时,它重设在例如存储元件118中的设备的认证状态,丢弃在该过程中的任何旧凭证信息,且生成一组新的用于客户端设备104的分配凭证。同时,远程服务器102取消客户端设备104与其结构的配对(即,取消客户端设备104与先前已配对的用户账户的配对),通过配对过程强制客户端设备104证实其授权以访问用户数据。
坏凭证。客户端设备104使用无效的凭证(默认凭证或分配凭证)向注册服务器112认证的任何尝试可被记入日志(例如,通过日志服务器116)且立即以例如HTTP 401未授权响应来拒绝。
同步服务器认证行为。在许多实施方式中,在客户端设备104和其分配的同步服务器114之间的全部交互使用分配凭证。客户端设备104使用默认凭证向同步服务器114认证的任何尝试可被立即记入日志(例如,使用日志服务器116)且以例如HTTP 401未授权响应来拒绝。类似地,客户端设备104使用无效凭证(默认凭证或分配凭证)向同步服务器114认证的任何尝试可被记入日志且立即以例如HTTP 401未授权响应来拒绝。
在其与同步服务器114交互期间,设备的分配凭证可如先前所述地以及在下文中进一步描述的进行轮换。
日志服务器认证行为。客户端设备104可使用分配凭证或默认凭证向日志服务器116认证。在这两种情况下,日志服务器116将接受和存储从客户端设备104上传的日志文件。在一些实施方式中,为了确保客户端设备能够始终上传日志,日志服务器116也接受来自利用无效凭证(分配凭证或默认凭证)认证的客户端设备104的日志文件。
然而,日志服务器116可基于所示出的认证凭证的类型和/或该认证凭证的有效性来表征任何上传的日志文件。例如,日志服务器116可表征全部上传的日志文件为未经认证的,除非客户端设备104采用有效的分配凭证认证。又例如,日志服务器116可表征上传的日志文件为未经认证的,除非客户端设备104用有效的分配凭证或者有效的默认凭证认证。另外,在一些实施方式中,可存在除了“未经认证的”和“认证的”之外的另外描述表征。例如,可存在三层表征,其中,有效的分配凭证与最高级别的认证相关联,有效的默认凭证与中等级别的认证相关联,以及任何无效的凭证与最低级别的认证相关联。
在一些实施方式中,无论客户端设备104何时将有效的分配凭证出示给日志服务器116,凭证可如先前描述以及在下文中进一步描述的进行正常轮换。
另外,在一些实施方式中,与注册服务器112不同,当客户端设备104使用默认凭证向日志服务器116认证时,远程服务器102并不生成用于客户端设备104的新的分配凭证。这可避免在丢失的凭证场景中的竞争条件,其中,客户端设备104回到注册服务器112以获取新的凭证,同时将日志上传到日志服务器116。
凭证轮换。一旦存在用于客户端设备104的分配凭证,则它们可在每次与远程服务器102联系时进行周期性轮换。当客户端设备104向远程服务器102端点认证且远程服务器102确定目前的设备凭证已经超出它们的配置的使用期,则发生轮换。分配凭证的轮换可周期性地发生,例如,每周、每月、每年、在从一周到一年范围内的时间段后、在小于一周的时间段中、或者在大于一年的时间段中。分配凭证的轮换也可或替选地非周期性地发生。例如,在客户端设备104连接远程服务器102一定次数后。凭证轮换可发生于远程服务器102的任何一个或多个端点。
旧的分配凭证的使用。一旦凭证轮换发生,客户端设备104可以使用旧的凭证向远程服务器102进行请求—具体地,使用在紧接在最近的轮换之前生效的凭证。这可发生在至少两种情形下:(1)如果远程服务器102生成包含新的凭证的响应,但是该响应在其到达客户端设备104之前丢失(例如,由于通信错误)。在该情况下,客户端设备104仍具有旧的凭证,而远程服务器102期望新的凭证。(2)如果客户端设备104向远程服务器102同时进行多个请求(例如,向同步服务器114进行请求以及向日志服务器116进行请求),网络或者服务器处理延迟可导致在来自相同客户端设备104的另一请求已经引起凭证轮换后,包含旧的凭证的请求被远程服务器102处理。
为了处理这些情形,无论远程服务器102何时轮换设备的分配凭证,远程服务器102可保持对于认证设备的旧的凭证所必需的信息。此后,对于可配置的时间段(即,可为例如12小时、24小时、36小时、在12小时到36小时的范围内、小于12小时、或者大于36小时的宽限期),远程服务器102将允许客户端设备104使用其目前的凭证或者旧的凭证进行认证。在该宽限期期间,每次当客户端设备104使用其旧的凭证认证时,远程服务器102可(再次)命令客户端设备104将其凭证更新到目前的凭证。在许多实施方式中,一旦宽限期期满,使用旧的凭证以认证的另外尝试被远程服务器102以HTTP 401未授权的响应立即拒绝。
现在转向图28A至图32C,其图形化地描述多个上述提到的认证过程中的一些过程。具体地,图28A示出根据一实施方式的用于认证客户端设备以与其分配的同步服务器通信的过程的通信序列1800。过程1800可在多种情形下执行。例如,可对客户端设备104初始连接至远程服务器102、在客户端设备104已丢失其分配凭证后的后续连接等执行过程1800。在操作1802中,客户端设备104将其默认凭证传送给注册服务器112。作为响应,注册服务器112生成分配凭证且将其发送给客户端设备104。客户端设备于是可使用这些分配凭证以与远程服务器102的其他元件(例如它的分配的同步服务器114A)建立通信。
图28B为根据一实施方式的客户端设备与其分配的同步服务器进行通信的过程1810的流程图。在操作1812中,客户端设备104与注册服务器112建立连接。客户端设备104可使用例如设置在存储元件128中的注册服务器位置128A来建立其连接。一旦连接且在发送它的默认凭证之前,在操作1814中,客户端设备104可确定它与注册服务器112已建立的连接是否是安全的(例如SSL、TSL等)连接。如果该连接是不安全的,则处理可继续至操作1816,在操作1816中,客户端设备104执行回退算法。在执行回退算法中,客户端设备104在尝试与注册服务器112建立安全连接之前可等待逐渐增长的时间段。然而,在一些实施方式中,客户端设备104可不执行回退算法,而是可持续尝试与注册服务器112例如以周期性的间隔重新建立安全连接。
然而,如果该连接被确定是安全的,则处理可继续至操作1818。在操作1818中,客户端设备104将其默认凭证(例如默认凭证128E)传送给注册服务器112。该默认凭证通常包括设备标识符和设备秘密。
一旦默认凭证被发送,则客户端设备104期望注册服务器112将分配凭证提供给客户端设备104。因此,在操作1820中,客户端设备104确定它是否已经从注册服务器112接收到分配的凭证。如果客户端设备104未接收到分配凭证(例如,在一定时间段后),这可表示通信故障或者其他类型的故障。因此,处理可继续至操作1816。
否则,处理继续至操作1822,在操作1822中,客户端设备104存储所接收到的分配的凭证。例如,客户端设备104可将所接收的凭证作为分配的凭证128F存储在存储元件128中。
一旦客户端设备104已经获取分配的凭证,则它可成功地与远程服务器102中的一个或多个元件通信。在该特定的实施方式中,在操作1824中,客户端设备104使用分配的凭证128F与其分配的同步服务器114建立连接。然而,应意识到,客户端设备104也可以或者可替选地使用其分配凭证与远程服务器102的其他元件建立连接,例如注册服务器112、日志服务器116等。
图28C为根据一实施方式的注册服务器生成用于客户端设备的分配凭证的过程1830的流程图。在操作1832中,注册服务器112监控来自一个或多个客户端设备的通信。当接收到来自客户端设备104的通信时,处理继续至操作1834,在操作1834中,注册服务器112确定它是否接收到来自客户端设备104的默认凭证。如果没有接收到,则注册服务器112可继续监控来自客户端设备104的通信,可选地在一定时间段后与客户端设备断开连接。否则,处理可继续至操作1836。
在操作1836中,在将任何分配凭证发送给客户端设备之前,注册服务器112确定它与客户端设备104的连接是否是安全的。如果不安全,则处理可继续至操作1838,在操作1838中,注册服务器112拒绝客户端设备104访问注册服务器112所提供的一个或多个资源(例如,分配凭证)。在拒绝访问资源中,注册服务器112可选地可以例如在一定时间段后与客户端设备断开连接。如果注册服务器112确定它与客户端设备104的连接是安全的,则处理可继续至操作1840。
在操作1840中,注册服务器112确定默认凭证从特定的客户端设备已传送给注册服务器112的速率是否超过预设的速率。例如,注册服务器112可确定特定的客户端设备104是否以每小时5次、每小时10次、每小时15次、在每小时5次至每小时15次的范围内的速率、每小时小于5次的速率、或者每小时大于15次的速率呈现默认凭证。如果客户端设备104以这样的速率呈现它的默认凭证,这可表示安全漏洞,例如使用一组偷窃的默认凭证反复尝试生成新的分配凭证。因此,如果超出预设速率,则处理可继续至操作1838。否则,处理可继续至操作1842。
在操作1842中,注册服务器112确定默认凭证是否有效。例如,注册服务器112可将所接收的默认凭证与注册服务器112所存储的与连接的客户端设备104相关联的默认凭证(例如被注册服务器112存储到存储元件118中的默认凭证198中的一个)相比较。在一个特定的实施方式中,所接收的默认凭证可包括默认标识符和默认秘密,其中默认标识符唯一识别该客户端设备以及默认秘密是与客户端设备相关联的仅仅被客户端设备和注册服务器得知的唯一字符串或数据序列。当接收到默认凭证时,注册服务器112使用默认标识符以识别对应于客户端设备的默认秘密(例如存储在存储元件118处)。注册服务器112然后将所接收的默认秘密与其所存储的默认秘密相比较。如果它们匹配,则该默认凭证被认为是有效的。否则,它们被认为是无效的。
在一些实施方式中,默认标识符可包括制造密钥标识符,制造密钥标识符识别用于加密默认秘密的制造密钥。默认秘密可例如为使用制造密钥标识符所识别的制造密钥加密的默认标识符。因此,注册服务器可首先识别所接收的制造密钥标识符所识别的制造密钥,使用该密钥加密(例如,使用诸如HMAC-SHA256的算法执行单向散列)默认标识符,以及将该结果与所接收的默认秘密比较以确定默认凭证是否有效。在这种情形下,尽管对应于各个设备104的默认秘密可预先存储在注册服务器112中,但在一些实施方式中,它们可不预先存储,而是由所接收的默认标识符和存储的制造密钥生成。
在一些实施方式中,默认凭证还可包括识别正从客户端设备传送的凭证的类型的方案标识符。在该特定的实施方式中,该方案表示凭证是默认凭证。这样的方案可被注册服务器112(以及远程服务器102的其他元件)使用以允许注册服务器112快速地且有效地确定是默认凭证、分配凭证还是另一类型的设备凭证正从客户端设备传送。
如果注册服务器112确定所接收的默认凭证是有效的,则处理继续至操作1844,在操作1844中,注册服务器112确定来自客户端设备104的联系是初始联系(例如,客户端设备第一次请求分配凭证)还是后续的联系(例如,客户端设备第二次、第三次或者后续次数请求分配凭证)。
注册服务器112可使用多种不同的技术中的一种或多种技术进行这种确定。在一个实施方式中,注册服务器112可看一看它是否已经有针对连接的客户端设备104而存储的任何分配凭证(例如,分配凭证150G中的一个)。在另一实施方式中,注册服务器112可查看用于连接的客户端设备104的初始联系标志是否已经被置位,其中,客户端设备104第一次向注册服务器112呈现默认凭证时,初始联系标志可被置位。
如果注册服务器112确定来自客户端设备104的联系是初始联系,则处理可继续至操作1846。在操作1846中,注册服务器112生成用于连接的客户端设备104的分配凭证,且将该分配凭证存储在可被远程服务器102的多个元件访问的存储元件中。例如,注册服务器112可将分配凭证作为分配凭证199存储在存储元件118中。分配凭证可包括例如唯一识别客户端设备104的分配的标识符。在一个实施方式中,分配的标识符包括从所接收的默认凭证提取的设备序列号。分配凭证也可包括分配的秘密,其中,该分配的秘密为与客户端设备相关联的仅仅被客户端设备和注册服务器所得知且由远程服务器102提供的唯一的字符串或数据序列。在一个实施方式中,该分配的秘密是随机数,例如随机生成的128-位序列。一旦生成分配凭证,在操作1848中,则分配凭证被传送给客户端设备104。
另一方面,在操作1844中,如果注册服务器112确定来自客户端设备104的联系不是初始联系(即,它是后续联系),则处理可继续至操作1850。在注册服务器112确定来自客户端设备104的联系不是初始联系的情况下,这可表示客户端设备104不知何故丢失其分配凭证。这可表示安全漏洞,因此必要时,注册服务器112可强制客户端设备104与用户账户重新配对。因此,在操作1850中,注册服务器112确定客户端设备是否与用户账户配对。如果配对,则处理可继续至操作1852,在操作1852中,注册服务器112取消该设备与账户的配对,有效地强制客户端设备104的用户使该设备与账户重新配对,在此后,处理继续操作1846。否则,处理可继续操作1846,而无需使该设备取消配对。
图28D为根据一实施方式的同步服务器与分配的客户端设备通信的过程1860的流程图。应意识到,尽管在与同步服务器114通信的环境下描述了过程1860,但是类似的过程可被用于促进与使用分配凭证的远程服务器102的其他元件(例如,注册服务器112、日志服务器116等)通信。
在操作1862中,同步服务器监控来自一个或多个客户端设备的通信。当接收到来自客户端设备104的通信时,处理继续至操作1864,在操作1864中,同步服务器114确定它是否接收到来自客户端设备104的分配凭证。如果没有接收到,则同步服务器114可继续监控来自客户端设备104的通信,可选地在一定时间段后,断开与客户端设备的连接。否则,处理可继续至操作1866。
在操作1866中,在授权访问一个或多个安全资源之前,同步服务器114确定它与客户端设备104的连接是否安全。如果不安全,则处理可继续至操作1868,在操作1868中,同步服务器114拒绝客户端设备104访问由同步服务器114提供的一个或多个资源(例如,数据桶)。在拒绝访问资源中,同步服务器114可选地可以在例如一定时间段后断开与客户端设备的连接。如果同步服务器114确定它与客户端设备104的连接是安全的,则处理可继续至操作1870。
在操作1870中,同步服务器114确定客户端设备所呈现的分配凭证是否有效的。如果它们是有效的,则处理可继续至操作1872,在操作1872中,同步服务器114授权客户端设备访问安全资源(例如与设备相关联的数据桶)。否则,处理可继续至操作1868,在操作1868中,拒绝访问。
简略地转向图28E,图28E为根据第一实施方式的用于确定分配凭证是否有效的过程1870的流程图。在操作1870A中,同步服务器114将所接收的分配凭证与先前存储的分配凭证相比较,其中,例如在操作1846中所述,先前所存储的分配凭证由注册服务器112生成且存储。如果所接收的分配凭证和与连接的客户端设备104相关联的先前所存储的分配凭证相同,则处理继续至操作1870B,在操作1870B中,所接收的凭证被确定为是有效的。否则,处理继续至操作1870C,在操作1870C中,所接收的凭证被确定为是无效的。
在一个特定的实施方式中,所接收的分配凭证可包括分配的标识符和分配的秘密且由远程服务器分配,其中,所分配的标识符唯一识别客户端设备且该分配的秘密为与客户端设备相关联的仅仅被客户端设备和远程服务器所得知的唯一的字符串或数据序列。当接收到分配凭证时,同步服务器114使用分配的标识符以识别对应于客户端设备的分配的秘密(例如,存储在存储元件118处)。同步服务器114然后将所接收的分配秘密与它存储的分配秘密比较。如果它们匹配,则分配凭证被认为是有效的。否则,它们被认为是无效的。
在一些实施方式中,分配凭证可包括识别正从客户端设备传送的凭证的类型的方案标识符。在该特定的实施方式中,该方案表示凭证是分配凭证。这样的方案可被同步服务器114(以及远程服务器102的其他元件)使用以允许同步服务器114快速地且有效地确定是默认凭证、分配凭证还是另一类型的设备凭证正从客户端设备传送。
现转向图28F,图28F为根据第二实施方式的用于确定分配凭证是否有效的过程1870的流程图。的确,结合图28E描述的实施方式可适用于不使用凭证轮换的情况,且可适用于使用凭证轮换但是同步服务器114确定最近未生成新的分配凭证的情况。即,操作1870在例如在标题为“分配凭证的管理”部分描述的宽限期之外。相反,在图28F中描述以及结合图28F中描述的实施方式可适用于使用凭证轮换且一组新的分配凭证最近(例如,在上24小时内)被生成且传送给客户端设备的情况。因此,远程服务器102可至少暂时地具有两组分配凭证,客户端设备104可使用该两组分配凭证以能够访问远程服务器102的实体。这些包括‘先前分配的凭证’以及‘最近分配的凭证’,其中,在生成最近分配的凭证之前,该先前分配的凭证被生成且用于认证客户端设备,先前分配的凭证以及最近分配的凭证两者可用于在宽限期期间认证客户端设备,且只有最近分配的凭证可用于在宽限期期满后认证客户端设备。
在操作1870G中,当接收到来自客户端设备104的分配凭证时,同步服务器114将所接收的分配凭证与存储在例如存储元件118中的最近分配的凭证比较。如果所接收的凭证与最近分配的凭证相同,则客户端设备在宽限期期间使用正确的凭证,从而处理可继续至操作1870K,在操作1870K中,同步服务器114确定所接收的凭证是有效的。
相反,如果所接收的凭证与最近分配的凭证不同,则处理可继续至操作1870H,在操作1870H中,所接收的凭证与存储在例如存储元件118中的先前分配的凭证比较。如果所接收的凭证此时与先前分配的凭证不同,则所接收的凭证既与最近分配的凭证不同、也与先前分配的凭证不同,从而处理继续至操作1870I,在操作1870I中,同步服务器114确定所接收的凭证是无效的。
如果同步服务器114确定所接收的凭证与先前分配的凭证相同,则这可表示尽管生成用于客户端设备的新的分配凭证,但客户端设备仍未接收它们或仍未开始使用它们(例如,由于通信故障)。处理可从而继续至操作1870J,在操作1870J中,同步服务器114(再次)将最近分配的凭证发送给客户端设备104,然后继续至操作1870K,在操作1870K中,同步服务器114确定所接收的凭证是有效的。
现转向图28G,图28G为根据第三实施方式的用于确定分配凭证是否有效的过程1870的流程图。与参照图28F所述的实施方式一样,该实施方式可适用于使用凭证轮换且一组新的分配凭证最近被生成且被传送给客户端设备的情况。另外,该实施方式可适用于凭证的秘密部分以散列的形式存储在前端服务器(例如,在注册服务器112、同步服务器114和/或日志服务器116)处以及(在一些情况下)非散列的形式存储在远程存储器(例如存储元件118)中的情形下。在这种情况下,因为只存储分配的秘密的散列版本的同步服务器114,当客户端设备需要分配凭证时,通常不能够重新生成分配凭证以回送给客户端设备,故引起的新的挑战。为了重新生成分配凭证,如果非散列的凭证存在或者在一些实施方式中执行如文中所述的另外的处理,则同步服务器114可访问远程存储的非散列的凭证(潜在地增加安全风险)。
在操作1870O中,同步服务器114从接收的分配凭证中提取分配的秘密。在操作1870P中,同步服务器114使所提取的分配的秘密散列。同步服务器114可采用任何合适的散列函数,例如SHA-256单向散列函数,只要该散列函数与当生成用于客户端设备的分配凭证时先前所使用的散列函数相同。
然后,处理继续至操作1870Q,在操作1870Q中,同步服务器114将所提取的分配的秘密的散列与用于先前分配的凭证的分配的秘密的散列(如所述,其可被缓存在前端服务器中)比较。如果它们相同,则客户端设备在宽限期期间正使用正确的凭证,从而处理可继续至操作1870R,在操作1870R中,同步服务器114确定所接收的凭证是有效的。
相反,如果它们不同,则处理可继续至操作1870N,在操作1870N中,所提取的分配的秘密的散列与用于最近分配的凭证的分配的秘密的散列(如所述,其也可被缓存在前端服务器中)比较。此时,如果它们不同,则所接收的凭证既与最近分配的凭证不同、也与先前分配的凭证不同,从而处理继续至操作1870T,在操作1870T中,同步服务器114确定所接收的凭证是无效的。
如果同步服务器114确定它们相同,则这可表示尽管生成用于客户端设备的新的分配凭证,但是客户端设备仍未接收它们或仍未开始使用它们(例如,由于通信故障)。处理可从而继续至操作1870U,在操作1870U中,同步服务器114解密最近分配的凭证的加密版本。如后来参照图29C所讨论的,当分配凭证新生成时(在轮换期间),分配凭证的加密版本以及散列版本可暂时地(例如,在宽限期期间)存储在前端服务器中。尽管可能无法从散列版本中确定分配凭证(由于,例如单向散列函数),可从加密版本中确定分配凭证。以这样的方式,前端服务器能够重新生成分配凭证,而无需存储(相对不安全)分配凭证的未加密版本且无需依赖该未加密版本的远程存储的副本(例如,在存储元件118处)。
如结合图29C还论述的,在前端服务器处存储的最近分配的凭证可使用被远程服务器102和客户端设备104两者得知的任何合适的密钥进行加密。这可是对称密钥、非对称密钥、或者任何其他的合适的密钥。在一个特定的实施方式中,最近分配的凭证使用先前分配的凭证进行加密。以这种方式,理所当然地在认证设备中,前端服务器不需要永久性地存储该密钥,而是非常方便地从客户端设备接收密钥(即在操作1870O中)。
一旦所加密的最近分配的凭证被解密,则处理继续至操作1870V,在操作1870V中,同步服务器114将(现加密的)最近分配的凭证传送给客户端设备104。然后,处理可继续至操作1870W,在操作1870W中,同步服务器114(或者存储加密凭证的前端服务器)删除最近分配的凭证(即,解密的凭证)。通过从前端服务器删除该最近分配的凭证,这可有利地减小最近分配的凭证被盗用的风险。然后,处理继续至操作1870R,在操作1870R中,同步服务器114确定所接收的凭证是有效的。
应理解到,在图28A至图28G中示出的具体操作提供了根据多个实施方式的用于认证客户端设备以与其分配的同步服务器通信的特定过程。根据可替选的实施方式,也可执行其他序列的操作。例如,本发明的可替选的实施方式可以以不同的次序执行上文所概述的操作。此外,在图28A至图28G中示出的各个操作可包括多个子操作,该子操作可以以适合于各个操作的不同顺序执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。本领域普通技术人员将意识且理解到许多变型、修改和变更。
图29A示出根据一实施方式的用于轮换分配凭证的过程的通信序列1900。在操作1902中,客户端设备104与远程服务器102建立通信。该通信可与远程服务器102的任何实体进行,例如注册服务器112、分配的同步服务器114、日志服务器116等。在操作1904中,远程服务器102将新分配的凭证传送给客户端设备104。作为响应,在操作1906中,客户端设备104在与远程服务器102的后续通信中开始使用新分配的凭证。
图29B为根据一实施方式的客户端设备轮换其分配凭证的过程1910的流程图。在操作1912中,客户端设备104使用其分配凭证与远程服务器102通信。例如,分配凭证可作为初始化过程的一部分(例如参照操作306所描述的初始化过程)已经从注册服务器112发送给客户端设备104。
在它与远程服务器102通信期间,处理继续至操作1914,在操作1914中,客户端设备104确定它是否已经接收到新的分配凭证。如果没有接收到,则处理返回至操作1912,在操作1912中,客户端设备104继续使用其分配凭证与远程服务器102通信。否则,处理继续至操作1916。
在操作1916中,客户端设备104确定它是否通过安全连接来与远程服务器102通信。在一些实施方式中,客户端设备仅仅通过安全连接来接受新的分配凭证。然而,在其他实施方式中,客户端设备可通过非安全连接来接受新的分配凭证。该特定实施方式描述了前者,其中,如果客户端设备104确定它在通过非安全连接与远程服务器102通信,则它拒绝分配凭证。在该特定的情况下,处理返回至操作1912,在操作1912中,客户端设备104继续使用其先前分配的凭证与远程服务器102通信,但是在其他情况下,客户端设备104可不同地响应,例如通过尝试建立安全连接、关闭其当前连接、建立与注册服务器112的连接等。
另一方面,如果客户端设备104确定它在通过安全连接来与远程服务器102通信,则处理继续至操作1918,在操作1918中,客户端设备104丢弃其先前分配的凭证,且继续至操作1920,在操作1920中,客户端设备104然后使用从远程服务器102接收的新分配的凭证继续其与远程服务器102的通信。
图29C为根据一实施方式的远程服务器轮换用于客户端设备的分配凭证的过程1930的流程图。在操作1932中,远程服务器102从客户端设备104接收分配凭证,且使用该分配凭证以认证客户端设备104。在操作1934中,远程服务器102确定客户端设备目前使用的分配凭证是否期满。在一些实施方式中,分配凭证周期性地期满,例如,每周、每月、每年、在一周到一年范围内的时间段后、在小于一周的时间段内、或者在大于一年的时间段内。在其他实施方式中,分配凭证非周期性地期满,例如在客户端设备104连接至远程服务器102一定次数之后。
如果远程服务器102确定分配凭证还没有期满,则处理将返回至操作1932,在操作1932中,远程服务器102将继续使用其当前分配凭证接收且认证来自客户端设备104的通信。否则,处理可继续至操作1936。
在操作1936中,远程服务器102确定它是否通过安全连接来与客户端设备104进行通信。在一些实施方式中,远程服务器仅仅通过安全连接来生成新的分配凭证和发送新的分配凭证。然而,在其他实施方式中,远程服务器可通过非安全连接来生成新的分配凭证且发送新的分配凭证。该特定的实施方式描述了前者,在此处如果远程服务器102确定它通过非安全连接来与客户端设备104进行通信,则其拒绝生成且发送新的分配凭证。在该特定的情况下,处理返回操作1932,在操作1932,远程服务器102继续使用其先前的分配凭证与客户端设备104进行通信,但在其他情况下,远程服务器102可不同地响应,例如通过尝试建立安全连接、关闭其当前连接、使客户端设备与注册服务器112建立连接等。
另一方面,如果远程服务器102确定它在通过安全连接来与客户端设备104进行通信,则处理继续操作1938,在操作1938,远程服务器102生成用于连接的客户端设备104的新的分配凭证。如所述,分配凭证可包括分配的标识符和分配的秘密。例如,分配的标识符可包括客户端设备的序列号。在一个特定的实施方式中,序列号可从呈现给远程服务器102的分配凭证中提取。另外,分配的秘密可包括随机数,例如随机数可由远程服务器102生成。然后,在操作1940中,远程服务器102可将新的分配凭证发送至客户端设备,且在一些情况下,将新的分配凭证存储在远程服务器102处。
在特定的实施方式中,可采取措施以减少新分配的凭证被盗用的风险。例如,新分配的凭证可被存储在远程存储器(例如,存储元件118)中,然而新分配的凭证的加密且散列的版本可被存储在前端服务器(例如,分配的同步服务器114)处。
因此,在操作1942中,远程服务器102可使新分配的凭证散列。尤其,远程服务器102可使用先前讨论的散列算法中的任一算法使包括在凭证中的分配的秘密散列。在操作1944中,远程服务器102将新分配的凭证的散列存储在前端服务器中,例如同步服务器114的存储元件178中。以这种方式,该散列可被快速访问且与所接收的凭证的散列相比较,如结合图28F讨论的。
在操作1946中,远程服务器102加密新分配的凭证。如也结合图28F所述,新分配的凭证可使用任何合适的加密算法进行加密,在该加密算法中,密钥通常被远程服务器102和客户端设备104得知。在操作1948中,新分配凭证的加密版本也被存储在前端服务器处,在一些实施方式中,与分配凭证的散列一起被存储在前端服务器处。然而,加密版本可被暂时存储,其中它们仅仅被存储宽限期的时间段。以这种方式,在客户端设备104可使用先前生成的凭证或新生成的凭证进行认证的宽限期期间,远程服务器102可使用新的分配凭证的加密版本以生成新的分配凭证。如果在宽限期期间客户端设备104使用其先前分配的凭证进行认证其本身,则该新分配的凭证(未加密的)然后可发送给客户端设备104。
一旦加密的新分配的凭证被存储,则在操作1950中,远程服务器102可删除该新分配的凭证。在一些实施方式中,尽管远程服务器从其前端服务器删除该新分配的凭证,但它可将(出于备份目的)新分配的凭证的副本(未加密的,非散列的)保持在远程存储器中。
应理解到,在图29A至图29C中示出的具体操作提供了根据多个实施方式的用于轮换分配的凭证的特定过程。根据可替选的实施方式,也可执行其他序列的操作。例如,本发明的可替选的实施方式可以以不同的次序执行上文所概述的操作。此外,在图29A至图29C中示出的各个操作可包括多个子操作,该子操作可以以适合于各个操作的不同顺序执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。本领域普通技术人员将意识且理解到许多变型、修改和变更。
图30A示出根据一实施方式的用于处理拒绝的分配的凭证的过程的通信序列2000。在操作2002中,客户端设备104通过将其分配的凭证发送给同步服务器114而试图与同步服务器114(或者远程服务器102的其他实体)建立通信。在操作2004中,这些分配凭证被拒绝,且因此同步服务器114将分配的凭证的拒绝传送给客户端设备104。响应于接收到该拒绝,客户端设备104返回到注册服务器试图重新获取分配的凭证,且通过在操作2006中将其默认凭证传送给注册服务器112而实现这一点。
图30B为根据一实施方式的客户端设备处理拒绝的分配的凭证的过程2010的流程图。在操作2012,客户端设备104与同步服务器114(或者远程服务器102的其他实体)建立连接。客户端设备104可使用例如在如在操作312中接收的同步服务器标识符而建立它的连接。一旦连接且在发送其分配的凭证之前,在操作214中,客户端设备104可确定它与同步服务器114已经建立的连接是否是安全的(例如,SSL、TSL等)连接。如果该连接是不安全的,则处理可继续至操作2016,在操作2016中,客户端设备104执行回退算法。在执行回退算法中,在试图与同步服务器114建立安全的连接之前,客户端设备104可等待逐渐地增长的时间段。然而,在一些实施方式中,客户端设备104可不执行回退算法,而是可连续地试图例如以周期性的间隔与同步服务器114重新建立安全连接。
然而,如果该连接被确定是安全的,则处理可继续只操作2018。在操作2018中,客户端设备104将其分配的凭证(例如,分配的凭证128F)传送给同步服务器114。分配的凭证通常包括设备标识符和设备秘密。
然后,处理可继续至操作2020,在操作2020中,客户端设备确定它传送给同步服务器114的分配的凭证是否被同步服务器114成功地接受(即,确定是有效的)。例如,如果客户端设备接收到来自同步服务器114的拒绝,则它可确定该凭证未被接受。否则,它可确定凭证被接受。
如果分配的凭证被接受,则处理可继续至操作2022,在操作2022中,客户端设备使用其分配的凭证与同步服务器进行通信。否则,处理可继续至操作2024,在操作2024中,客户端设备104丢弃其分配的凭证。在该情况下,客户端设备104预计其分配凭证是无效的以及它需要获取新的分配的凭证。因此,客户端设备断开与同步服务器114的连接,且在操作2026中,从注册服务器处获取新的分配的凭证。为了获取新的分配的凭证,客户端设备可进行处理,例如结合图28B描述的处理。
应意识到,在一些实施方式中,在丢弃其分配的凭证以及获取新的凭证之前,客户端设备104可试图通过同步服务器使用其分配的凭证超过一次。另外,对于该特定的实施方式,由于注册服务器和同步服务器的处理分别与在图28C和图28D中描述的处理类似,故该处理不再进行描述。
应理解到,在图30A至图30B中示出的具体操作提供了根据多个实施方式的用于处理拒绝的分配的凭证的特定过程。根据可替选的实施方式,也可执行其他序列的操作。例如,本发明的可替选的实施方式可以以不同的次序执行上文所概述的操作。此外,在图30A至图30B中示出的各个操作可包括多个子操作,该子操作可以以适合于各个操作的不同顺序执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。本领域普通技术人员将意识且理解到许多变型、修改和变更。
图31A示出根据一实施方式的用于将信息传送至日志服务器的过程的通信序列2100。在操作2102中,客户端设备102通过发送默认凭证或分配的凭证而与日志服务器116建立通信,其中,这些凭证可是有效的或无效的。在提供这些凭证之后,在操作2104中,客户端设备104将日志信息传送给日志服务器116。作为响应,在操作2106中,日志服务器116发送日志信息已经被接受的确认通知。
图31B为根据一实施方式的客户端设备将日志信息传送给日志服务器的过程2110的流程图。在操作2112中,客户端设备104与日志服务器116建立连接。在建立连接中,客户端设备可建立安全的连接(例如,SSL、TSL或其他安全的连接)或者不安全的连接。
一旦客户端设备104已经连接至日志服务器116(或者,在一些情况下,客户端设备104已经连接至日志服务器116之前),客户端设备104确定它是否具有分配的凭证(例如,分配的凭证128F)。如果它不具有分配的凭证,则处理可继续至操作2116,在操作2116中,客户端设备104将其默认凭证(例如,默认凭证128E)传送给日志服务器116。如果它具有分配的凭证,则处理可继续至操作2118,在操作2118中,客户端设备104将其分配的凭证(例如,分配的凭证128F)传送给日志服务器116。在任何一种情况下,处理接着继续至操作2120,在操作2120中,客户端设备将其日志信息发送给日志服务器116,且在一些情况下,处理接着继续至操作2122,在操作2122中,客户端设备接收日志信息被成功地传送的确认通知。
应意识到,尽管结合图31A和图31B描述的实施方式在客户端设备将日志信息传送给日志服务器的环境下,当客户端设备将任何信息传送给远程服务器102的任何实体时,可执行类似的操作。例如,当客户端设备104期望将信息桶发送给其分配的同步服务器114时,客户端设备104可首先试图发送分配的凭证,以及如果它没有分配的凭证,则发送默认凭证。
转向图31C,图31C为根据一实施方式的日志服务器用以接收和分类从客户端设备传送的信息的过程2130的流程图。在该实施方式中,日志服务器基于客户端设备的认证级别来分类信息。在操作2132中,日志服务器116与客户端设备104建立连接。在一些实施方式中,该连接是安全的,然而在其他实施方式中,该连接可以是不安全的。
在操作2134中,日志服务器116从客户端设备104接收设备凭证。设备凭证可是默认凭证、分配凭证、或者一些其他类型的凭证。在操作2136中,日志服务器从客户端设备104接收日志信息。
一旦日志服务器116已经接收设备凭证和日志信息,则在操作2138中,日志服务器116确定所接收的设备凭证是否是分配的凭证。如果它们不是分配的凭证,则处理继续至操作2140,在操作2140中,日志服务器将所接收的日志信息分类为来自“未认证过的”设备。否则,处理继续至操作2142,在操作2142中,日志服务器116确定从客户端设备104接收的分配的凭证是否是有效的。用于进行这种确定的多种技术已经在文中进行描述,且任何这种技术可在此应用。如果日志服务器116确定分配的凭证不是有效的,则处理继续至操作2140,在操作2140中,它将所接收的日志信息分类为来自“未认证过的”设备。否则,处理继续至操作2144,在操作2144中,它将所接收的日志信息分为来自“认证过的”设备。
应意识到,在一些实施方式中,可存在除了未认证过的”和“认证过的”之外的其他类型的表征。例如,可存在三层表征,其中,有效的分配的凭证与最高级别的认证相关联,有效的默认凭证与中等级别的认证相关联,且任何无效的凭证与最低级别的认证相关联。又例如,日志信息可(附加地或可替选地)基于日志信息是通过安全连接还是非安全连接被传送而表征,其中,安全连接比非安全连接表示更高级别的认证。
应理解到,在图31A至图31C中示出的具体操作提供了根据多个实施方式的用于传送和分类日志信息的特定过程。根据可替选的实施方式,也可执行其他序列的操作。例如,本发明的可替选的实施方式可以以不同的次序执行上文所概述的操作。此外,在图31A至图31C中示出的各个操作可包括多个子操作,该子操作可以以适合于各个操作的不同顺序执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。本领域普通技术人员将意识且理解到许多变型、修改和变更。
图32A示出根据一实施方式的客户端设备访问不同类型的信息的过程的通信序列2200。当客户端设备已经与特定的用户账户配对时,客户端设备可获得对与该账户相关联的信息的访问。否则,客户端设备可被拒绝访问这种信息。在操作2202中,客户端设备104使用其分配的凭证与同步服务器114建立通信。作为响应且在操作2204中,同步服务器114向客户端设备104提供对与该客户端设备104配对的用户账户或者任意账户的访问。
图32B为根据一实施方式的客户端设备访问不同类型的信息的过程2210的流程图。在操作2212中,客户端设备104将其分配的凭证发送给同步服务器。在操作2214中,客户端设备104确定它是否已经获得权利访问与客户端设备104相关联的用户账户。如果没有,则在操作2216中,客户端设备104可访问任意账户。在一些实施方式中,替代访问任意账户,客户端设备104可被限制于它可传送和/或从同步服务器114接收的信息的类型。如果在操作2214中,客户端设备104确定它已经获得权利访问用户账户,则处理继续至操作2218,在操作中2218,客户端设备获得权利访问用户账户。
图32C为根据一实施方式的同步服务器用以提供客户端设备访问不同类型的信息的方法2220的流程图。在操作2222中,同步服务器114从客户端设备104接收有效的分配的凭证。在一些实施方式中,该有效的分配的凭证必需通过安全连接接收。在操作2224中,同步服务器114确定客户端设备是否与用户账户配对。例如,同步服务器114可将所接收的设备标识符(例如,在分配的凭证包括的设备标识符)与设备标识符/用户账户图178D比较,以确定用户账户是否与该设备标识符相关联。如果没有关联,则处理可继续至操作2226,在操作2226中,同步服务器114提供客户端设备对任意账户的访问,在大多数实施方式中,该任意账户不包括任何敏感信息。相反,如果存在与设备标识符相关联的用户账户,则在操作2228中,同步服务器114提供客户端设备104对该用户账户的访问。
应理解到,在图32A至图32C中示出的具体操作提供了客户端设备用以访问不同类型的信息的特定方法。根据可替选的实施方式,也可执行其他序列的操作。例如,本发明的可替选的实施方式可以不同的次序执行上文所概述的操作。此外,在图32A至图32C中示出的单独操作可包括多个子操作,该子操作可以适合于单个操作的不同顺序执行。另外,根据特定的应用,可增加额外的操作或者可去除现有的操作。本领域普通技术人员将意识且理解到许多变型、修改和变更。
示例性的设备、服务器和系统
图33示出了根据示例性的实施方式的监控设备108的部件。应意识到,结合图33描述的部件对于结合图4的客户端设备104描述的那些部件可以是额外的或者可替选的。在该特定的示例中,监控设备108是智能的、多传感的、网络连接的设备。监控设备108可包括一个或多个传感器2302、用户-接口部件2304、电源(例如包括电源连接2306和/或电池2308)、通信部件2310、模块化单元(例如,包括插接站2312和可更换模块2314)和智能化部件2316。特定的传感器2302、用户-接口部件2304、电源配置、通信部件2310、模块化单元和/或智能化部件2316在整个设备108上可以是相同的或类似的或者可根据设备类型或模式而改变。
作为举例且不是限制,在设备108中的一个或多个传感器2302可能够例如检测加速度、温度、湿度、水、供电、相近性、外部运动、设备运动、声音信号、超声信号、光信号、火、烟雾、一氧化碳、全球-定位-卫星(GPS)信号、射频(RF)信号或其他电磁信号或场。因此,例如,传感器2302可包括温度传感器、湿度传感器、危险相关的传感器或者其他的环境传感器、加速计、麦克风、光学传感器,包括照相机(例如,电荷耦合设备或摄像机)、有源或无源辐射传感器、GPS接收器或者射频识别检测器。尽管图33示出具有单个传感器的实施方式,许多实施方式将包括多个传感器。在一些例子中,设备108包括一个或多个主传感器以及一个或多个辅传感器。该主传感器可感测对于设备的核心操作处于中心的数据(例如,感测恒温器中的温度或感测烟雾检测器中的烟雾)。该辅传感器可感测其他类型的数据(例如,运动、光或声音),该其他类型的数据可用于能量-效率目的或者智能-操作目的。在一些例子中,一般用户可甚至意识不到辅传感器的存在。
在设备108中的一个或多个用户-接口部件2304可被配置成通过可视显示器(例如,薄膜晶体管显示器或有机发光二极管显示器)和/或扬声器将信息呈现给用户。用户-接口部件2304还可包括用以从用户接收信息的一个或多个用户-输入部件,例如触摸屏、按键、滚动部件(例如,可移动的或虚拟的环部件)、麦克风或摄相机(例如,以检测手势)。在一个实施方式中,用户-输入部件2304包括点击和旋转孔环部件,其中,用户能够通过旋转该孔环(例如,以调节设定)和/或通过向内点击该孔环(例如,以选择所调节的设定或者以选择选项)而与该部件交互。在另一实施方式中,用户-输入部件2304包括照相机,使得手势能够被检测(例如,以指示设备的电源或者警报状态将被改变)。
在设备108中的电源部件可包括电源连接2306和/或局部电池2308。例如,电源连接2306能使设备108连接至电源,例如线电压源。在一些例子中,对于AC电源的连接2306可被用于反复地对(例如,可再充电的)局部电池2308充电,使得在AC电源断开或者其他的缺电场景的情况下,需要的话,电池2308可后来被用于提供过量的DC电源。
在设备108中的通信部件2310可包括能够使设备108与中央服务器或者远程设备(例如文中所描述的另一设备或者便携式用户设备)通信的部件。作为非限定示例,通信部件2310可允许设备108借助例如Wi-Fi、ZigBee、3G/4G无线、CAT6有线以太网、家庭插电联盟(HomePlug)或其他电力线通信方法、电话、或者光纤进行通信。通信部件2310可包括无线卡、以太网插头或者其他收发器连接。
设备108中的模块化单元可包括静态的物理连接和可更换模块2314。因此,模块化单元可提供更新可更换模块2314的能力,而无需完全重新安装设备108(例如,以保持接线)。该静态的物理连接可包括插接站2312(其也可被称为接口盒),插接站2312可附接于建筑结构。例如,插接站2312可借助螺钉被安装在墙壁上或者通过粘结剂被粘结到天花板上。在一些例子中,插接站2312可延伸穿过建筑结构的一部分。例如,插接站2312可借助穿过墙壁的石膏夹心纸板而形成的孔而连接至在墙壁后面的接线(例如,连接至120V线路电压电线)。插接站2312可包括电路,例如电源连接电路2306和/或AC到DC供电电路且可防止用户暴露在高电压线下。在一些例子中,插接站2312专用于一种类型或一种模式的设备,使得例如与烟雾检测器设备相比,恒温器设备包括不同的插接站。在一些例子中,插接站2312可在多个类型和/或模式的设备108中共享。
模块化单元的可更换模块2314可包括该设备中的传感器2302、处理器、用户-接口部件2304、电池2308、通信部件2310、智能部件2316等等中的一些或全部。可更换模块2314可被配置成附接至(例如,插入至或连接至)插接站2312。在一些例子中,一组可更换模块2314被生成,性能、硬件和/或软件在可更换模块2314之间变化。因此,用户可容易地更新或替换他们的可更换模2314,而不必替换全部设备部件或者完全重新安装设备108。例如,用户可以开始于廉价的设备,廉价的设备包括具有受限的智能和软件能力的第一可更换模块。然后,用户可容易地更新该设备以包括更有能力的可更换模块。又例如,如果用户具有位于他们的地下室的模型#1设备、位于他们的客厅的模型#2设备、以及更新它们的客厅设备以包括模型#3可更换模块,则用户可将模型#2可更换模块移动到地下室中以连接至现有的插接站。该模型#2可更换模块然后可例如开始初始化过程以识别其新的位置(例如,通过借助用户接口从用户处请求信息)。
设备的智能部件2316可支持各种不同设备功能中的一种或多种。智能部件2316通常包括配置且程序控制以执行和/或导致被执行文中所描述的一个或多个有利的功能的一个或多个处理器。智能部件2316可以以执行存储在本地存储器(例如,闪存、硬盘驱动器、随机存取存储器)中的计算机代码的通用处理器、专用处理器或专用集成电路、它们的组合的形式来执行,和/或使用其他类型的硬件/固件/软件处理平台来执行。智能部件2316可进一步被实施为被中央服务器或者基于云的系统远程控制或执行的算法的本地版本或对应部分,例如凭借运行使用异步Java脚本和XML(AJAX)或者类似的协议来执行从云服务器提供的指令的Java虚拟机(JVM)。例如,智能部件2316可为被配置成检测位置(例如,房屋或房间)何时被占用(包括检测它是否被特定的人员占据或者被特定数目的人占用(例如相对于一个或多个阈值))的智能部件2316。这种检测可例如通过分析麦克风信号、检测用户运动(例如在设备的前方)、检测门或车库门的打开和关闭、检测无线信号、检测所接收的信号的IP地址、或者检测在时间窗内一个或多个设备的操作而发生。智能部件2316可包括图像识别技术以识别特定的占据者或物体。
在一些例子中,智能部件2316可被配置成预测可期望的设置和/或实现这些设置。例如,基于存在检测,智能部件2316可调节设备设置以例如当无人在家时或无人在特定的房间中时节省电源,或者符合用户偏好(例如,一般的在家偏好或用户专用偏好)。又例如,基于特定人员、动物或物体(例如,儿童、宠物或丢失的物体)的检测,智能部件2316可启动人员、动物或物体在哪的音频指示或视觉指示,或者如果未识别的人员在某些情形下(例如在晚上或者当灯关闭时)被检测到,可启动警报或安全特征。又例如,智能部件2316可在用户设置中检测小时倾向、周倾向或者甚至季节性倾向且相应地调整设置。例如,智能部件2316可检测到特定的设备在每个工作日上午6:30开启,或者设备设置在过去的三个小时内逐渐地从高设置被调节为低设置。智能部件2316于是可预测到设备将在每个工作日上午6:30开启,或者设置应在更长的时间段内继续逐渐地降低其设置。
在一些例子中,设备可彼此交互,使得第一设备检测到的事件影响第二设备的动作。例如,第一设备能够检测到用户已经进入车库(例如,通过检测车库中的运动、检测车库中的灯的变化、或者检测车库门的开放)。第一设备可以将该信息传送给第二设备,使得第二设备能够例如调节房间温度设置、灯设置、音乐设置和/或安全警报设置。又例如,第一设备可检测用户接近前门(例如,通过检测运动或者突然的灯图案的变化)。第一设备可例如使普通的音频信号或视觉信号得以呈现(例如,门铃的发声)或者使位置特异性的音频信号或视觉信号得以呈现(例如,播报在用户所占用的房间内的拜访者的存在)。
在某些实施方式中,监控设备108是智能的、多传感的、网络连接的设备,其包括结合图33所描述的部件(和/或结合图4所描述的部件)。然而,本领域技术人员应理解到,比在图33中所示的部件具有更少或更多数目的部件的这种设备也同样能够良好操作。因此,在图33中的设备108的描述应当被作本质上是说明性的,且不限制本教导的范围。
图34示出了智能家庭环境2400的示例,在该智能家庭环境2400中,文中所进一步描述的设备、方法、系统、服务和/或计算机程序产品中的一个或多个能够是可应用的。所描述的智能家庭环境包括结构2401,结构2401可包括例如住宅、办公建筑、车库、或可移动房屋。应理解到,这些设备也可集成到不包括完整结构2401的智能家庭环境中,例如公寓、大厦或办公空间。另外,智能家庭环境能够控制和/或联接到在实际结构2401外的设备。事实上,智能家庭环境中的一些设备根本不需要物理地在结构2401内,例如,控制泳池加热器或灌溉系统的设备可定位在结构2401之外。
所描述的结构2401包括借助墙壁2403而至少部分地彼此隔开的多个房间2402。墙壁2403可包括内墙壁或外墙壁。每个房间还可包括地板2404和天花板2405。设备可安装在墙壁2403、地板或天花板上,或者与墙壁2403、地板或天花板集成,和/或由墙壁2403、地板或天花板支撑。
在图34中描述的智能家庭包括多个客户端设备,客户端设备包括能够彼此和/或与远程服务器系统无缝集成以提供各种有用的智能家庭目标中的任一种的智能的、多传感的、网络连接的设备。在该智能家庭环境中和/或在图34中所示的一个、多个、或每一个设备能够包括如结合图33所述的一个或多个传感器、用户接口、电源、通信部件、模块化单元和智能部件。另外,在图34中所示的一个、多个、或每一个设备能够使用文中所公开的任一技术彼此同步和/或与远程服务器同步,且可操作以使用文中所公开的任一技术向远程服务器认证其身份。
智能的、多传感的、网络连接的恒温器2406能够检测环境气候特征(例如,温度和/或湿度)且控制加热、通风和空气调节(HVAC)系统2407。一个或多个智能的、网络连接的、多传感的危险检测单元2408能够检测家具环境中的危险物质和/或危险条件的存在(例如,烟雾、火、或一氧化碳)。一个或多个智能的、多传感的、网络连接的入口通道接口设备2409,其可被称作“智能门铃”,可检测人达到位置或者从位置离开,控制可听见的功能、凭借音频设备或视觉设备通告人到达或离开,或者控制安全系统上的设置(例如,以启动安全系统或使安全系统不活动)。
多个智能的、多传感的、网络连接的墙壁灯开关2410中的每一个能够检测环境光照条件、检测房间占用状态、和控制一个或多个灯的功率状态和/或昏暗状态。在一些例子中,灯开关2410可另外或可替选地控制风扇的功率状态或速度,例如吊扇。多个智能的、多传感的、网络连接的墙壁插头接口2411中的每一个可检测房间或围式空间的占用以及控制到一个或多个墙壁插头的电源供应(例如,使得如果没有人在家,则电源不被供给到插头)。该智能家庭还可包括多个智能的、多传感的、网络连接的家电2412,例如冰箱、电炉和/或烤箱、电视、洗衣机、烘干机、灯(在结构2401内和/或在结构2401外)、立体音箱系统、对讲机系统、车库门开启器、落地扇、吊扇、全屋风扇、壁式空调、泳池加热器2414、灌溉系统2416、安全系统等。
一个或多个接入设备可操作以通过LAN、WAN、或者其他无线或有线的通信网络而与客户端设备进行通信。例如,接入设备2420可与智能家庭环境2400内的一个或多个客户端设备进行通信,而接入设备2422可通过因特网2400与智能家庭环境内的一个或多个客户端设备进行通信。所有的客户端设备和接入设备也可与远程服务器2424进行通信,如文中所述,远程服务器2424可促进在所有的设备之间状态的同步和/或设备的认证。尽管图34的描述能够识别特定的传感器和与特定设备相关联的功能,应理解到多种传感器和功能(例如在整个说明书中描述的那些传感器和功能)中的任一种可被集成到设备中。
除了包含处理能力和传感能力外,在智能家庭环境2400内的设备中的每一个,如所述的,能够与智能家庭环境2400内的任何其他设备进行数据通信和信息共享,以及与智能家庭环境2400外的设备(例如接入设备2422和/或远程服务器2424)进行数据通信和信息共享。设备可凭借各种定制或标准的无线协议(Wi-Fi、ZigBee、6LoWPAN等)中的任一种和/或各种定制或标准的有线协议(CAT6以太网、HomePlug等)中的任一种而发送和接收通信。墙壁插头接口2411可用作无线的或有线的中继器,和/或可作为在(i)插入到AC插座且使用Homeplug或其他电源线协议而通信的设备和(ii)未插入到AC插座的设备之间的桥梁起作用。
例如,第一设备能够借助无线路由器2434与第二设备通信。设备还可经由到网络(例如,因特网2436)的连接而与远程设备通信。通过该因特网2436,该设备能够与中央(即远程的)服务器或云计算系统2424通信。远程服务器或云计算系统2424可与和该设备相关的制造商、支持实体或者与服务提供商相关。在一个实施方式中,用户可能够使用设备本身来联系顾客支持,而不需要使用其他通信设备,例如电话或因特网连接的计算机。另外,软件更新可自动地从远程服务器或云计算系统2424发送给设备(例如,当可得到时、当购买时、或以常规间隔)。
设备的网络连接可进一步允许用户与该设备进行交互,即使用户不接近该设备。例如,用户可使用计算机(例如,台式电脑、手提电脑或平板电脑)或其他便携式电子设备(例如智能手机)(例如接入设备2422)与设备(例如,恒温器2406)进行通信。网页或应用程序可被配置成接收来自用户的通信且基于该通信控制该设备和/或将关于设备操作的信息呈现给用户。例如,用户可观看设备的当前设定点温度且使用计算机来调节它。用户可在该远程通信期间在结构内或者在结构外。
智能家庭环境2400还可包括各种非通信的遗留家电2430,例如旧的传统洗衣机/烘干机、冰箱等,非通信的遗留家电能凭借墙装插头接口2411而受控制(尽管被粗糙地(开/关)控制)。智能家庭还可包括各种部分通信的遗留家电2432,例如IR-控制的壁式空调或者其他IR-控制的设备,部分通信的遗留家电2432可通过危险检测单元2408或者灯开关2410提供的IR信号被控制。
在某些实施方式中,智能家庭2400为包括许多客户端设备和接入设备的环境,所有的客户端设备和接入设备可操作以彼此通信且通过远程服务器进行同步。然而,本领域技术人员应理解到,与图34中所示的部件相比,具有更少或更多数目的部件的这种环境也同样能够良好操作。因此,在图34中的智能家庭环境2400的描述应本质上看作是说明性的,且不限于本教导的范围。
图35示出根据一实施方式的专用计算机系统2500。各种实体,例如文中描述的远程服务器102、监控设备108和/或接入设备110可被实施作为这种计算机系统。上述方法可通过计算机程序产品来实施,该计算机程序产品指导计算机系统以执行上述的方法和部件的动作。各个这样的计算机程序产品可包括在计算机可读介质上体现的指令(代码)集,该计算机可读介质指导计算机系统的处理器以执行对应的动作。所述指令可被配置成按顺序运行,或者并行运行(例如,在不同的处理线程下),或者其组合。
专用计算机系统2500包括计算机2502、与计算机2502连接的监控器2504、与计算机2502连接的一个或多个附加的用户输出设备2504(可选的)、与计算机2502连接的一个或多个用户输入设备2506(例如,键盘、鼠标、跟踪球、触摸屏)、与计算机2502连接的可选通信接口2508、存储在计算机2502中的有形的计算机可读存储器中的计算机程序产品2510。计算机程序产品2510指导系统2500以执行上述方法。计算机2502可包括一个或多个处理器2512,处理器2512凭借总线子系统2514与许多外围设备进行通信。这些外围设备可包括一个或多个用户输出设备2504、一个或多个用户输入设备2506、通信接口2508、和存储子系统,例如随机存取存储器(RAM)2514和非易失性存储驱动器2516(例如磁盘驱动器、光驱、固态驱动器),它们具有有形的计算机可读存储器的形式。
计算机程序产品2510可被存储在非易失性存储驱动器2516或者计算机2502可访问的另一计算机可读介质中且加载到存储器2514中。各个处理器2512可包括微处理器,例如来自或者Advanced Micro Devices,的微处理器等。为了支持计算机程序产品2510,计算机2502运行操作系统,该操作系统处理产品2510与上文提到的部件的通信、以及在上文提到的支持计算机程序产品2510的部件之间的通信。示例性的操作系统包括来自微软企业的等、来自Sun Microsystems的LINUX、UNIX等。
用户输入设备2506包括将信息输入到计算机系统2502的所有可能的类型的设备和机构。这些用户输入设备可包括键盘、小型键盘、鼠标、扫描仪、数字绘图板、合并到显示器中的触摸屏、音频输入设备(例如声音识别系统)、麦克风和其他类型的输入设备。在多个实施方式中,用户输入设备2506通常体现为计算机鼠标、跟踪球、跟踪板、操作杆、无线遥控、绘画平板、声音命令系统。用户输入设备2506通常允许用户通过诸如点击按键等的命令来选择呈现在监控器2504上的物体、图标、文本等。用户输出设备2504包括从计算机2502输出信息的全部可能的类型的设备和机构。这些用户输出设备可包括显示器(例如,监控器2504)、打印机、非可视显示器(例如,音频输出设备)等。
通信接口2508向其他通信网络2518和设备提供接口,且可用作从其他系统、WAN和/或因特网接收数据和将数据传送至其他系统、WAN和/或因特网的接口。通信接口2508的实施方式通常包括以太网卡、调制解调器(电话、卫星、电缆、ISDN)、(异步)数字用户线路(DSL)单元、Fire接口、接口、无线网络适配器等。例如,通信接口2508可与计算机网络连接、与Fire总线等连接。在其他的实施方式中,通信接口2508可物理地集成在计算机2502的主板上,和/或可以为计算机程序等。
RAM 2514和非易失性存储驱动器2516为有形的计算机可读介质的示例,有形的计算机可读介质被配置成存储诸如本发明的计算程序产品实施方式的数据,包括可执行的计算机代码、人可读的代码等。其他类型的有形的计算机可读介质包括软盘、可移除的硬盘、诸如CD-ROM的光存储介质、DVD、条形码、诸如闪存、只读存储器(ROM)的半导体存储器、电池支持的易失性存储器、网络存储设备等。RAM2514和非易失性存储驱动器2516可被配置成存储基础的程序设计和数据构造,基础的程序设计和数据构造提供如上所述的本发明的多个实施方式的功能性。
提供本发明的功能性的软件指令集可被存储在RAM 2514和非易失性存储驱动器2516中。这些指令集或代码可由一个或多个处理器2512执行。RAM 2514和非易失性存储驱动器2516也可提供储存库以存储根据本发明使用的数据和数据结构。RAM 2514和非易失性存储驱动器2516可包括许多存储器,包括用以在程序执行期间存储指令和数据的主随机存取存储器(RAM)和存储固定指令的只读存储器(ROM)。RAM 2514和非易失性存储驱动器2516可包括文件存储子系统,文件存储子系统提供程序和/或数据文件的持久性(非易失性的)存储。RAM2514和非易失性存储驱动器2516还可包括可移除的存储系统,例如可移除的闪存。
总线子系统2514提供允许计算机2502的多个部件和子系统如预期地彼此进行通信的机构。尽管总线子系统2514示意性地显示为单个总线,但总线子系统的可替选的实施方式可利用计算机2502内的多个总线或通信路径。
对于固件和/或软件实现,可利用执行文中所述的功能的模块(例如,程序、函数等)来执行方法。有形地体现指令的任何机器可读介质可用于执行文中所述的方法。例如,软件代码可被存储在存储器中。存储器可实施在处理器内或处理器外。如文中使用的术语“存储器”指任何类型的长期的、短期的、易失性的、非易失性的、或其他的存储介质,且不限于任何特定类型的存储器或者特定数目的存储器、或者特定类型的存储存储器的介质。
此外,如文中所公开的术语“存储介质”可代表一个或多个用于存储数据的存储器,包括只读存储器(ROM)、随机存取存储器(RAM)、磁性RAM、磁芯存储器、磁盘存储介质、光存储介质、闪存设备和/或用于存储信息的其他机器可读介质。术语“机器可读介质”包括但不限于便携式或固定的存储设备、光存储设备、无线信道和/或多种其他的能够存储、包含或携带指令和/或数据的存储介质。
图36示出了可扩展设备和服务平台的网络级的视图,图33的智能家庭可与该平台集成。结合图34的结构2401所讨论的各个智能的、网络连接的设备可与一个或多个远程服务器或云计算系统2424进行通信。通过直接建立到因特网2436的连接(例如,使用到无线运营商的3G/4G连接性)、或者通过集线器网络(其可为从简单无线路由器例如直到和包括智能的、专用的整个家庭控制节点的方案)建立到因特网2436的连接、或者通过其任意组合,能够实现通信。
远程服务器或云计算系统2424可以从智能家庭设备采集操作数据2602。例如,该设备可按照惯例传送操作数据或者可在特定的情形下传送操作数据(例如,当请求顾客支持时)。远程服务器或云计算系统2424可进一步提供一种或多种服务2604。服务2604可包括,例如软件更新、顾客支持、传感器数据采集/记录、远程访问、远程控制或分布控制、或者使用建议(例如,基于采集的操作数据2602以改善性能、减小利用成本等)。与服务2604相关联的数据可被存储在远程服务器或者云计算系统2424处,且远程服务器或者云计算系统2424可在合适的时间检索和传送该数据(例如,以规律的间隔、当接收来自用户的请求时等)。
如图36中所示,所描述的可扩展设备和服务平台的一个显著性特征是处理引擎2606,处理引擎2606可集中在单个数据处理服务器2607(其可包括在远程服务器2424中或与远程服务器2424分开)或者在数个不同的计算实体当中分布,而没有限制。处理引擎2606可包括配置成接收来自一组设备的数据(例如,通过因特网或集线器网络)、索引数据、分析数据和/或基于分析或者分析的一部分生成统计的引擎。所分析的数据可被存储为导出数据2608。分析或统计的结果可此后被回传送给提供用于导出该结果的ops数据的设备、传送给其他设备、传送给为设备的用户提供网页的服务器、或者传送给其他非设备的实体。例如,使用统计、相对于其他设备使用的使用统计、使用方式和/或汇总传感器读数的统计可被传送。结果或统计可借助因特网2436而提供。以这样的方式,处理引擎2606可被配置且程序控制以从从智能家庭处获得的可操作数据中得到各种有用的信息。单个服务器可包括一个或多个引擎。
导出的数据在出于各种有用目的的各种不同的粒度上可以是非常有益的,从基于每家、每一地区或每一区域的设备的显式程序控制(例如,针对电子器件的需求-响应程序)到可以以每家为基础协助的推断抽象的生成(例如,可以进行这样的推断,家庭拥有者已经离开去度假,因此安全检测仪器可以带有加强的灵敏度),到可以用于政府或慈善目的的统计和相关联的推断抽象的生成。例如,处理引擎2606可生成关于众多设备之间的设备使用的统计,且将该统计发送给设备用户、服务提供商或其他实体(例如,其已经请求统计或者可能对于该统计提供货币补偿)。作为特殊的说明,统计可被传送给慈善机构2622、政府实体2624(例如,食品和药物管理局或环境保护署)、学术机构2626(例如大学研究者)、企业2628(例如,向有关的设备提供设备保修或服务)、或者公用事业公司2630。这些实体可使用所述数据以形成程序以减小能量使用、以预先服务故障设备、以为高服务需求做准备、以追踪过去的服务业绩等、或以执行各种现在已知或者此后发展的有益的功能或任务。
图37示出了图36的可扩展的设备和服务平台的抽象功能视图,特别参考了处理引擎2606以及智能家庭的设备。尽管位于智能家庭环境中的设备将具有变化无穷的不同单个功能和限制,但是它们可以都被视为共享共同特征,因为它们中的每一个为数据消费者2702(data consumer,DC)、数据源2704(data source,DS)、服务消费者2706(servicesconsumer,SC)以及服务源(services source,SS)2708。有利地,除了提供设备实现其本地和即时目标所需的基本的控制信息以外,可扩展的设备和服务平台也可以配置成控制流出这些设备的大量数据。除了改善或优化设备本身相对于其即时功能的实际操作外,可扩展的设备和服务平台可以指向以多种自动的、可扩展的、灵活的、和/或可伸缩的方式来“再利用”该数据以实现多种有用的目标。可以基于例如利用类型、设备效率、和/或用户输入(例如,请求特定功能)来预先限定或适应性地识别这些目标。
例如,图37将处理引擎2606示出为包括多个范例2710。处理引擎2606可以包括管理服务范例2710a,管理服务范例2710a监控和管理主设备功能或辅设备功能。设备功能可以包括给定用户输入时确保设备的适当操作、估计(例如,以及响应于)侵入者在住所内或正在尝试进入到住所内、检测联接至该设备的仪器的故障(例如,灯泡被烧毁)、执行或在其它方面响应能量需求响应事件、或警告用户当前的或预测到的未来事件或特征。处理引擎2606可以还包括广告/通信范例2710b,广告/通信范例2710b基于设备使用来估计用户感兴趣的特征(例如,人口统计学信息)、需求和/或产品。然后可以将服务、推广、产品或更新供应或自动地提供给用户。处理引擎2606可以还包括社交范例2710c,社交范例2710c利用来自社交网络的信息、向社交网络提供信息(例如,基于设备使用)、和/或处理与社交网络平台的用户和/或设备交互相关的数据。例如,如被汇报给社交网络上的他们可信赖的联络人的用户状态可以被更新,以基于光线检测、安全系统不活跃或设备使用检测器来指示出他们何时在家。如另一示例,用户能够与其它用户分享设备使用统计。处理引擎2606可以包括挑战/规则/遵守/奖励范例2710d,挑战/规则/遵守/奖励范例2710d告知用户挑战、规则、遵守规章和/或奖励,和/或利用操作数据来确定是否面临挑战、是否符合规则或规章和/或是否已经挣到奖励。挑战、规则或规章可以涉及对于节能、安全居住(例如,减少暴露于毒素或致癌物质)、节约钱和/或延长设备寿命、改善健康等的努力。
处理引擎可以集成或在其它方面利用来自外部源的外部信息2716来改进一个或多个处理范例的功能。外部信息2716可以用于解释从设备接收到的操作数据,以确定该设备附近的环境的特征(例如,包围该设备的结构的外部),以确定用户可用的服务或产品,以识别社交网络或社交网络信息,以确定该设备附近等的实体(例如,公众服务实体,例如紧急情况响应团体、警察局或医院)的接触信息,以识别统计或环境条件、与家庭或邻里相关的趋势或其它信息等。
从普通到深远,所描述的可扩展的设备和服务平台(并且适合在其范围内)可以带来特别的范围和各种益处。因此,在一个“普通的”示例中,智能家庭的各个卧室可设置有烟雾/火/CO警报器,烟雾/火/CO警报器包括占用传感器,其中,该占用传感器也能够推断(例如,凭借运动检测、面部识别、可听见的声音模式等)占用者是睡着了还是醒着。如果感测到严重的火灾,则远程安全/监控设备或消防部门被告知在每一卧室中有多少居住者,以及那些居住者是否仍处于睡眠中(或不动的)或他们是否适当地疏散出卧室。当然,尽管这是所描述的设备和服务平台所提供的非常有利的能力,但是可以有基本上更“深远的”示例,这些示例可以真实地示出可以被利用的更高“智商”的潜力。通过或许更“深远的”示例,在邻里儿童发展和教育的社交范例的背景下,用于火灾安全的卧室占有数据中的同样数据也可以被处理引擎2606“更改用途”。因此,例如,在“普通的”示例中所讨论的同样卧室占用和运动数据可以被收集和可以用于处理(适当地隐匿),其中在特别的邮政编码中的学校儿童的睡眠类型可以被识别和跟踪。学校儿童的睡眠类型的局部变化可以被识别并例如关联到地方学校中的不同营养计划。
在本专利说明书中描述的同步/认证技术已经被发现当结合本发明说明书中描述的许多智能家庭设备应用时是尤其令人满意的,因为在理论上可实现的与实际上以有成本效益的且消费者有效的方式实施每日家居自动化和控制之间存在有利的平衡。因此,在设备同步方面,尽管所描述的方法可能在“竞争条件”结果中有争议地导致某种程度的延时或某种程度的瑕疵(例如,如果两部智能手机试图在同一时间控制同一恒温器),但是所描述的方法能较好地处理且从各种不利的事件中恢复原状,例如家庭网络问题、Wi-Fi中断、以及需要一些设备(例如能量缓冲的偷电型恒温器)更多时间保持在“睡眠”模式。此外,所述方法可有利地在适度花费的通常可用的数据服务平台实施。同样,在设备认证方面,尽管所描述的方法可能有争议地引起一些理论漏洞,其可能导致一些未授权的第三方智能设备享用远程服务所服务的权益(但是,重要地,不能访问服务的合法消费者的敏感消费者数据),但是所描述的方法能够较好地促进对于新的设备实际的现实世界的连接以及促进断开设备的重新连接,而用户的大量的手动过程(例如,进入MAC地址、进行电话呼叫以重置密码等)。
在上述描述中给出了具体的细节以彻底地理解实施方式。然而,理解到,实施方式可在没有这些具体的细节的情况下被实施。例如,为了不使不必要的细节而模糊实施方式,可以框图示出电路。在其他例子中,为了避免使实施方式模糊,众所周知的电路、方法、算法、结构和技术可在没有不必要的细节的情况下被示出。
上文描述的技术、块、步骤和设备的实施可以各种方式来进行。例如,这些技术、块、步骤和设备可以以硬件、软件或其组合实施。对于硬件实施,处理单元可在一个或多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑设备(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器、设计成执行上文描述的功能的其他电子单元、和/或它们的组合中实施。
此外,注意到,实施方式可被描述为过程,其被描绘为流程图、作业图、数据作业图、结构图、或者框图。尽管流程图可将操作描述为顺序的过程,但是许多操作可并行地或者同时地执行。另外,操作的次序可重新布置。当其操作完成时,过程被终止,但可能会有未包括在图中的额外的步骤。过程可对应于方法、函数、程序、子程式、子程序等。当过程对应于函数时,过程的终止对应于该函数返回至调用函数或者主函数。
此外,实施方式可通过硬件、软件、脚本语言、固件、中间件、微代码、硬件描述语言和/或其组合来实施。当以软件、固件、中间件、脚本语言和/或微代码实施时,用以执行必要任务的程序代码或代码段可被存储在诸如存储介质的机器可读介质中。代码段或者机器可执行的指令可代表程序、函数、子程序、程序、程式、子程式、模块、软件包、脚本、类、或者指令的任意组合、数据结构、和/或程序语句。代码段可通过传送和/或接收信息、数据、变元、参数和/或存储器内容而联接另一代码段或硬件电路。信息、变元、参数、数据等可借助任何合适的方式(包括存储器共享、消息传送、令牌传送、网络传输等)被传送、发送、或传输。
尽管本发明的原理结合具体的设备和方法在上文已经进行描述,但是很明显地理解到,该描述仅仅作为示例且不作为对本教导的范围的限制。
Claims (20)
1.一种使数据在第一客户端设备、第二客户端设备和远程服务器之间同步的方法,所述方法包括:
在所述远程服务器处从所述第一客户端设备接收所述第一客户端设备的设备类型;
在接收到所述设备类型之后,针对所述第一客户端设备在所述远程服务器处分配第一多个信息桶,其中:
所述第一多个信息桶的配置基于所述设备类型来确定;以及
所述第一多个信息桶与在所述第一客户端设备上存储的已经存在的第二多个信息桶相对应;
从所述第一客户端设备接收用于填充所述第一多个信息桶的内容;
在接收到所述设备类型之后在所述远程服务器处从所述第二客户端设备接收识别针对所述第一客户端设备提供并且存储在所述远程服务器上的所述第一多个信息桶中的至少第一信息桶的订阅请求,所述第一信息桶与在所述第二客户端设备处存储的第二信息桶相对应;
在所述远程服务器处接收对在所述远程服务器处存储的所述第一多个信息桶中的所述第一信息桶的变化;
由所述远程服务器确定在所述远程服务器处存储的所述第一信息桶和在所述第二客户端设备处存储的所述第二信息桶之间存在差异;以及
响应于在所述远程服务器处存储的所述第一信息桶和在所述第二客户端设备处存储的所述第二信息桶之间的差异的确定,向所述第二客户端设备发送所述差异的通知。
2.根据权利要求1所述的方法,进一步包括:
在所述远程服务器处,接收对在所述远程服务器处存储的所述第一多个信息桶中的所述第一信息桶的第二变化;
由所述远程服务器确定在所述远程服务器处存储的所述第一信息桶和在所述第二客户端设备处存储的所述第二信息桶之间不存在第二差异;以及
当确定了在所述远程服务器处存储的所述第一信息桶和在所述第二客户端设备处存储的所述第二信息桶之间不存在第二差异时,防止响应从所述远程服务器被传送到所述第二客户端设备,直到已经满足条件为止。
3.根据权利要求2所述的方法,其中,确定已经满足所述条件包括:
确定在所述远程服务器处存储的所述第一信息桶和在所述第二客户端设备处存储的所述第二信息桶之间存在差异;
确定自从接收到所述订阅请求已经经过了预定时间量;以及
确定所述订阅请求不包括所述第一信息桶的时间戳和版本中的至少一个。
4.根据权利要求3所述的方法,进一步包括当确定了自从接收到所述订阅请求已经经过了预定时间量时断开所述远程服务器和所述第二客户端设备之间的连接。
5.根据权利要求3所述的方法,进一步包括当确定了所述订阅请求不包括由所述订阅请求识别的所述第一信息桶的时间戳或者版本中的至少一个时向所述第二客户端设备传送在所述远程服务器上存储的所述第一信息桶中包括的字段-值对的值。
6.根据权利要求1所述的方法,进一步包括:
由所述远程服务器确定任何其它客户端设备是否具有针对在所述远程服务器上存储的所述第一信息桶的待决的订阅请求;以及
如果确定了存在具有针对在所述远程服务器上存储的所述第一信息桶的待决的订阅请求的至少一个其它客户端设备,则向所述至少一个其它客户端设备通知所述差异。
7.根据权利要求1所述的方法,其中,所述差异包括在所述远程服务器处存储的所述第一信息桶的时间戳和版本。
8.根据权利要求7所述的方法,其中,所述差异包括在所述远程服务器处存储的所述第一信息桶的字段-值对的值。
9.根据权利要求1所述的方法,进一步包括:
接收对所述第一信息桶的所期望的更新;以及
使所期望的更新与在所述远程服务器上存储的所述第一信息桶协调一致。
10.根据权利要求9所述的方法,其中,使所期望的更新与在所述远程服务器上存储的所述第一信息桶协调一致包括将所期望的更新与在所述远程服务器上存储的所述第一信息桶合并或者拒绝将所期望的更新与在所述远程服务器上存储的所述第一信息桶合并。
11.一种计算机系统,包括:
存储元件;以及
联接到所述存储元件且包括一个或多个处理器和一个或多个存储器设备的远程服务器,所述一个或多个存储器设备包括指令,所述指令在被所述一个或多个处理器执行时使得所述一个或多个处理器执行操作,所述操作包括:
从第一客户端设备接收所述第一客户端设备的设备类型;
在接收到所述设备类型之后,针对所述第一客户端设备在所述远程服务器处分配第一多个信息桶,其中:
所述第一多个信息桶的配置基于所述设备类型来确定;以及
所述第一多个信息桶与在所述第一客户端设备上存储的已经存在的第二多个信息桶相对应;
从所述第一客户端设备接收用于填充所述第一多个信息桶的内容;
在接收到所述设备类型之后在所述远程服务器处从第二客户端设备接收识别针对所述第一客户端设备提供并且存储在所述远程服务器上的所述第一多个信息桶中的至少第一信息桶的订阅请求,所述第一信息桶与在所述第二客户端设备处存储的第二信息桶相对应;
接收对所述第一多个信息桶中的所述第一信息桶的变化;
确定在所述存储元件处存储的所述第一信息桶和在所述第二客户端设备处存储的所述第二信息桶之间存在差异;以及
响应于在所述存储元件处存储的所述第一信息桶和在所述第二客户端设备处存储的所述第二信息桶之间的差异的确定,向所述第二客户端设备发送所述差异的通知。
12.根据权利要求11所述的计算机系统,其中,所述一个或多个存储器设备包括进一步指令,所述进一步指令在被所述一个或多个处理器执行时使得所述一个或多个处理器执行附加操作,所述附加操作包括:
接收对在所述远程服务器处存储的所述第一多个信息桶中的所述第一信息桶的第二变化;
确定在所述远程服务器处存储的所述第一信息桶和在所述第二客户端设备处存储的所述第二信息桶之间不存在第二差异;以及
当确定了在所述存储元件处存储的所述第一信息桶和在所述第二客户端设备处存储的所述第二信息桶之间不存在第二差异时,防止响应被传送到所述第二客户端设备,直到已经满足条件为止。
13.根据权利要求11所述的计算机系统,其中,所述一个或多个存储器设备包括进一步指令,所述进一步指令在被所述一个或多个处理器执行时使得所述一个或多个处理器执行附加操作,所述附加操作包括:
确定任何其它客户端设备是否具有针对在所述存储元件上存储的所述第一信息桶的待决的订阅请求;以及
如果确定了存在具有针对在所述存储元件上存储的所述第一信息桶的待决的订阅请求的至少一个其它客户端设备,则向所述至少一个其它客户端设备通知所述差异。
14.根据权利要求11所述的计算机系统,其中,所述差异包括在所述存储元件处存储的所述第一信息桶的时间戳和版本。
15.根据权利要求11所述的计算机系统,其中,所述一个或多个存储器设备包括进一步指令,所述进一步指令在被所述一个或多个处理器执行时使得所述一个或多个处理器执行附加操作,所述附加操作包括:
接收对所述第一信息桶的所期望的更新;以及
使所期望的更新与在所述存储元件上存储的所述第一信息桶协调一致。
16.一种具有其上存储的指令的非暂时性计算机可读存储介质,所述指令在被一个或多个计算机处理器执行时使得所述一个或多个计算机处理器执行操作,所述操作包括:
从第一客户端设备接收所述第一客户端设备的设备类型;
在接收到所述设备类型之后,针对所述第一客户端设备在远程服务器处分配第一多个信息桶,其中:
所述第一多个信息桶的配置基于所述设备类型来确定;以及
所述第一多个信息桶与在所述第一客户端设备上存储的已经存在的第二多个信息桶相对应;
从所述第一客户端设备接收用于填充所述第一多个信息桶的内容;
在接收到所述设备类型之后在所述远程服务器处从所述第二客户端设备接收识别针对所述第一客户端设备提供并且存储在所述远程服务器上的所述第一多个信息桶中的至少第一信息桶的订阅请求,所述第一信息桶与在所述第二客户端设备处存储的第二信息桶相对应;
接收对所述第一多个信息桶中的所述第一信息桶的变化;
确定所述第一信息桶和在所述第二客户端设备处存储的所述第二信息桶之间存在差异;以及
响应于所述第一信息桶和在所述第二客户端设备处存储的所述第二信息桶之间的差异的确定,向所述第二客户端设备发送所述差异的通知。
17.根据权利要求16所述的存储介质,其中,具有其上存储的附加指令,所述附加指令在被所述一个或多个计算机处理器执行时使得所述一个或多个计算机处理器执行附加操作,所述附加操作包括:
接收对在远程服务器处存储的所述第一多个信息桶中的所述第一信息桶的第二变化;
确定在所述远程服务器处存储的所述第一信息桶和在所述第二客户端设备处存储的所述第二信息桶之间不存在第二差异;以及
当确定了所述第一信息桶和在所述第二客户端设备处存储的所述第二信息桶之间不存在第二差异时,防止响应被传送到所述第二客户端设备,直到已经满足条件为止。
18.根据权利要求16所述的存储介质,其中,具有其上存储的附加指令,所述附加指令在被所述一个或多个计算机处理器执行时使得所述一个或多个计算机处理器执行附加操作,所述附加操作包括:
确定任何其它客户端设备是否具有针对所述第一信息桶的待决的订阅请求;以及
如果确定了存在具有针对所述第一信息桶的待决的订阅请求的至少一个其它客户端设备,则向所述至少一个其它客户端设备通知所述差异。
19.根据权利要求16所述的存储介质,其中,所述差异包括所述第一信息桶的时间戳和版本。
20.根据权利要求16所述的存储介质,其中,具有其上存储的附加指令,所述附加指令在被所述一个或多个计算机处理器执行时使得所述一个或多个计算机处理器执行附加操作,所述附加操作包括:
接收对所述第一信息桶的所期望的更新;以及
使所期望的更新与所述第一信息桶协调一致。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/624,892 US8635373B1 (en) | 2012-09-22 | 2012-09-22 | Subscription-Notification mechanisms for synchronization of distributed states |
US13/624,892 | 2012-09-22 | ||
CN201380061082.4A CN104813685B (zh) | 2012-09-22 | 2013-09-20 | 用于分布式状态的同步的订阅通知机制 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380061082.4A Division CN104813685B (zh) | 2012-09-22 | 2013-09-20 | 用于分布式状态的同步的订阅通知机制 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109905476A true CN109905476A (zh) | 2019-06-18 |
CN109905476B CN109905476B (zh) | 2020-10-23 |
Family
ID=49919341
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910151587.9A Active CN109905476B (zh) | 2012-09-22 | 2013-09-20 | 用于使数据同步的方法、计算机系统和介质 |
CN201380061082.4A Active CN104813685B (zh) | 2012-09-22 | 2013-09-20 | 用于分布式状态的同步的订阅通知机制 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380061082.4A Active CN104813685B (zh) | 2012-09-22 | 2013-09-20 | 用于分布式状态的同步的订阅通知机制 |
Country Status (7)
Country | Link |
---|---|
US (5) | US8635373B1 (zh) |
EP (3) | EP2898709B1 (zh) |
JP (2) | JP6510977B2 (zh) |
CN (2) | CN109905476B (zh) |
AU (4) | AU2013317936B2 (zh) |
CA (1) | CA2885426A1 (zh) |
WO (1) | WO2014047385A2 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111309747A (zh) * | 2020-02-18 | 2020-06-19 | 京东数字科技控股有限公司 | 数据同步方法、系统和装置 |
CN112217775A (zh) * | 2019-07-12 | 2021-01-12 | 华为技术有限公司 | 一种远程证明方法及装置 |
CN113452793A (zh) * | 2021-06-30 | 2021-09-28 | 东软睿驰汽车技术(沈阳)有限公司 | 一种诊断服务处理方法、装置、车载终端及介质 |
CN113923004A (zh) * | 2021-09-30 | 2022-01-11 | 山东云缦智能科技有限公司 | 服务端统一管理第三方Token、客户端分布式共享第三方Token的方法 |
CN116094825A (zh) * | 2023-02-01 | 2023-05-09 | 成都赛力斯科技有限公司 | 通信安全保护方法、系统、电子设备及存储介质 |
Families Citing this family (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2599257A1 (en) * | 2010-07-30 | 2013-06-05 | Hewlett-Packard Development Company, L.P. | Systems and methods for credentialing |
US8589996B2 (en) * | 2011-03-16 | 2013-11-19 | Azuki Systems, Inc. | Method and system for federated over-the-top content delivery |
CN103368755A (zh) * | 2012-03-30 | 2013-10-23 | 富泰华工业(深圳)有限公司 | 远端服务器运行管理系统和管理方法 |
US8635373B1 (en) | 2012-09-22 | 2014-01-21 | Nest Labs, Inc. | Subscription-Notification mechanisms for synchronization of distributed states |
US8594850B1 (en) | 2012-09-30 | 2013-11-26 | Nest Labs, Inc. | Updating control software on a network-connected HVAC controller |
US9787568B2 (en) * | 2012-11-05 | 2017-10-10 | Cercacor Laboratories, Inc. | Physiological test credit method |
US9424303B2 (en) * | 2013-02-15 | 2016-08-23 | Intuitive Surgical Operations, Inc. | Systems and methods for synchronizing nodes of a robotic system |
US8875247B2 (en) * | 2013-03-14 | 2014-10-28 | Facebook, Inc. | Instant personalization security |
US9810442B2 (en) | 2013-03-15 | 2017-11-07 | Google Inc. | Controlling an HVAC system in association with a demand-response event with an intelligent network-connected thermostat |
US9595070B2 (en) | 2013-03-15 | 2017-03-14 | Google Inc. | Systems, apparatus and methods for managing demand-response programs and events |
US9807099B2 (en) | 2013-03-15 | 2017-10-31 | Google Inc. | Utility portals for managing demand-response events |
US9910449B2 (en) | 2013-04-19 | 2018-03-06 | Google Llc | Generating and implementing thermodynamic models of a structure |
US9298197B2 (en) | 2013-04-19 | 2016-03-29 | Google Inc. | Automated adjustment of an HVAC schedule for resource conservation |
US10044799B2 (en) | 2013-05-28 | 2018-08-07 | International Business Machines Corporation | Implementing synchronization of state information betweeen instances of an application as well as between different applications in an efficient, scalable manner |
US9854035B2 (en) | 2013-05-28 | 2017-12-26 | International Business Machines Corporation | Maintaining state synchronization of an application between computing devices as well as maintaining state synchronization of common information between different applications without requiring periodic synchronization |
US9191209B2 (en) * | 2013-06-25 | 2015-11-17 | Google Inc. | Efficient communication for devices of a home network |
US9531704B2 (en) | 2013-06-25 | 2016-12-27 | Google Inc. | Efficient network layer for IPv6 protocol |
EP3050040A2 (en) * | 2013-09-24 | 2016-08-03 | Fibar Group S.A. | Intelligent smoke sensor |
US9690838B2 (en) * | 2013-10-31 | 2017-06-27 | Microsoft Technology Licensing, Llc | Master data management |
EP3117587B1 (en) * | 2014-03-11 | 2020-11-11 | Convida Wireless, LLC | Enhanced distributed resource directory |
US9912690B2 (en) * | 2014-04-08 | 2018-03-06 | Capital One Financial Corporation | System and method for malware detection using hashing techniques |
US9641416B2 (en) * | 2014-04-18 | 2017-05-02 | Cisco Technology, Inc. | Operations analysis of packet groups identified based on timestamps |
US10521417B2 (en) * | 2014-06-24 | 2019-12-31 | Google Llc | Processing mutations for a remote database |
US9961059B2 (en) * | 2014-07-10 | 2018-05-01 | Red Hat Israel, Ltd. | Authenticator plugin interface |
US10277616B2 (en) | 2014-09-25 | 2019-04-30 | Vigilant Ip Holdings Llc | Secure digital traffic analysis |
US9311811B1 (en) | 2014-10-08 | 2016-04-12 | Google Inc. | Alarm profile for a fabric network |
CN105093944A (zh) * | 2014-10-26 | 2015-11-25 | 深圳市艾瑟网络技术有限公司 | 智能家居系统及基于该系统的云数据处理方法 |
US10242082B2 (en) * | 2014-12-12 | 2019-03-26 | Microsoft Technology Licensing, Llc | Context-driven multi-user communication |
US10079874B2 (en) * | 2015-03-17 | 2018-09-18 | Pulzze Systems, Inc. | System, non-transitory computer readable medium storing a computer readable program for executing a method for an interaction logic through the system, and IoT interaction system |
US10756963B2 (en) * | 2015-03-17 | 2020-08-25 | Pulzze Systems, Inc. | System and method for developing run time self-modifying interaction solution through configuration |
CN106154983A (zh) * | 2015-03-23 | 2016-11-23 | 昆达电脑科技(昆山)有限公司 | 交互检测方法、交互检测装置与电力管理系统 |
US9755922B2 (en) * | 2015-03-26 | 2017-09-05 | Ca, Inc. | Minimized installation of point of presence software agents by use of pre-installed browser |
RU2017133251A (ru) * | 2015-03-26 | 2019-04-26 | Филипс Лайтинг Холдинг Б.В. | Отображение устройств в их представления в модели |
WO2016160626A1 (en) | 2015-03-27 | 2016-10-06 | Globallogic, Inc. | Determining actions based on imputing meaning to sensed information in a distributed computing environment |
CN104780211B (zh) * | 2015-04-13 | 2016-09-07 | 努比亚技术有限公司 | 数据同步方法和装置 |
US10728700B2 (en) * | 2015-04-15 | 2020-07-28 | Sugarcrm Inc. | Privacy assurance in location based services |
US10812464B2 (en) * | 2015-06-15 | 2020-10-20 | Airwatch Llc | Single sign-on for managed mobile devices |
US11057364B2 (en) * | 2015-06-15 | 2021-07-06 | Airwatch Llc | Single sign-on for managed mobile devices |
US10944738B2 (en) * | 2015-06-15 | 2021-03-09 | Airwatch, Llc. | Single sign-on for managed mobile devices using kerberos |
US10171447B2 (en) | 2015-06-15 | 2019-01-01 | Airwatch Llc | Single sign-on for unmanaged mobile devices |
JP6008412B1 (ja) * | 2015-07-07 | 2016-10-19 | Necプラットフォームズ株式会社 | 通信制御装置、通話制御方法及び通話制御プログラム |
US9614861B2 (en) * | 2015-08-26 | 2017-04-04 | Microsoft Technology Licensing, Llc | Monitoring the life cycle of a computer network connection |
KR101698274B1 (ko) * | 2015-09-03 | 2017-02-01 | 엘에스산전 주식회사 | 에너지 관리 시스템 및 그의 데이터 동기화 방법 |
US10015248B1 (en) * | 2015-09-28 | 2018-07-03 | Amazon Technologies, Inc. | Syncronizing changes to stored data among multiple client devices |
CN106888238B (zh) * | 2015-12-15 | 2020-05-05 | 阿里巴巴集团控股有限公司 | 一种数据同步方法及装置 |
US20170195275A1 (en) * | 2015-12-30 | 2017-07-06 | Dell Products L.P. | Delivery of email to a mobile device |
US10230522B1 (en) * | 2016-03-24 | 2019-03-12 | Amazon Technologies, Inc. | Network access control |
CN107465644B (zh) * | 2016-06-03 | 2021-02-23 | 中兴通讯股份有限公司 | 数据传输方法、数据传送客户端及数据传送执行器 |
CN106156291A (zh) * | 2016-06-29 | 2016-11-23 | 深圳市彬讯科技有限公司 | 基于Localstroage的静态资源的缓存方法及其系统 |
US10360021B2 (en) * | 2016-08-19 | 2019-07-23 | Veniam, Inc. | Systems and methods for reliable software update in a network of moving things including, for example, autonomous vehicles |
US10657146B2 (en) | 2016-09-26 | 2020-05-19 | Splunk Inc. | Techniques for generating structured metrics from ingested events |
US10992550B2 (en) * | 2016-09-28 | 2021-04-27 | Intel Corporation | Techniques to control quality of service for end-to-end paths in a compute environment |
CN106949603A (zh) * | 2017-04-05 | 2017-07-14 | 新联合众(北京)科技有限公司 | 智能空气净化器的o2o实现方法 |
CN108696550B (zh) * | 2017-04-05 | 2021-04-06 | 中国科学院上海高等研究院 | 快速构建和复制云的系统和方法 |
CN106933180A (zh) * | 2017-04-07 | 2017-07-07 | 西南云海大数据产业投资有限公司 | 智能洗车红外触发感应系统 |
FR3067893A1 (fr) | 2017-06-14 | 2018-12-21 | Overkiz | Procede de configuration d’un dispositif domotique appartenant a une installation domotique |
FR3067895A1 (fr) * | 2017-06-14 | 2018-12-21 | Overkiz | Procede de configuration d’une unite centrale de commande appartenant a une installation domotique |
CN109241066B (zh) * | 2017-07-04 | 2022-09-27 | 北京国双科技有限公司 | 请求处理方法及装置 |
FR3074324B1 (fr) * | 2017-11-28 | 2020-01-17 | Schneider Electric Industries Sas | Procede d'inscription securisee d'un appareil electrique amovible lors de son installation au sein d'un systeme electrique |
CN109962936B (zh) * | 2017-12-14 | 2022-03-29 | 网宿科技股份有限公司 | 异构数据同步方法及系统 |
CN108224683B (zh) * | 2017-12-28 | 2021-02-23 | 深圳Tcl新技术有限公司 | 数据同步方法、用户设备及计算机可读存储介质 |
US10866963B2 (en) | 2017-12-28 | 2020-12-15 | Dropbox, Inc. | File system authentication |
US10572495B2 (en) * | 2018-02-06 | 2020-02-25 | Cisco Technology Inc. | Network assurance database version compatibility |
CN108376154B (zh) * | 2018-02-07 | 2020-11-24 | 平安普惠企业管理有限公司 | 系统基表同步方法、装置、计算机设备和存储介质 |
CN110324375B (zh) * | 2018-03-29 | 2020-12-04 | 华为技术有限公司 | 一种信息备份方法及相关设备 |
US10484770B1 (en) | 2018-06-26 | 2019-11-19 | Amazon Technologies, Inc. | Display device with transverse planar microphone arrays |
US20220286446A1 (en) * | 2018-08-16 | 2022-09-08 | Cyberark Software Ltd. | Authentication credential with embedded authentication information |
US11310217B2 (en) * | 2018-09-07 | 2022-04-19 | Paypal, Inc. | Using ephemeral URL passwords to deter high-volume attacks |
US10552125B1 (en) * | 2018-09-18 | 2020-02-04 | Inductive Automation, LLC | Messaging between components in graphical user interfaces for industrial control systems |
US10900687B2 (en) | 2018-10-31 | 2021-01-26 | Trane International Inc. | Flexible scheduling HVAC graphical user interface and methods of use thereof |
CN110084539B (zh) * | 2018-11-30 | 2021-10-22 | 武汉大学 | 灌溉决策学习方法、装置、服务器和存储介质 |
US11316144B1 (en) | 2018-12-13 | 2022-04-26 | Amazon Technologies, Inc. | Lithium-ion batteries with solid electrolyte membranes |
CN110113407B (zh) * | 2019-04-30 | 2021-08-17 | 上海连尚网络科技有限公司 | 小程序状态同步方法、设备和计算机存储介质 |
CN110413935B (zh) * | 2019-08-06 | 2022-03-11 | 中国工商银行股份有限公司 | 一种数据信息处理方法、装置及系统 |
US20210042398A1 (en) * | 2019-08-08 | 2021-02-11 | Pulsepoint, Inc. | Validation of Properties of a User Device in a Network |
US10812600B1 (en) * | 2019-11-28 | 2020-10-20 | International Business Machines Corporation | Enforcing session properties compliance for gateway connected publish-subscribe clients |
US20210195713A1 (en) * | 2019-12-18 | 2021-06-24 | L'oreal | Location based lighting experience |
CN113079029B (zh) * | 2020-01-03 | 2024-01-05 | 华为技术有限公司 | 配置信息订阅方法及装置 |
EP4109841A4 (en) * | 2020-03-10 | 2023-03-22 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | METHOD AND APPARATUS FOR COMMUNICATING THE INTERNET OF THINGS |
WO2021055016A1 (en) * | 2020-04-13 | 2021-03-25 | Futurewei Technologies, Inc. | Detection and resolution of data synchronization conflicts |
WO2021232197A1 (zh) * | 2020-05-18 | 2021-11-25 | Oppo广东移动通信有限公司 | 设备状态监控方法、装置、设备及存储介质 |
US11805112B2 (en) * | 2021-02-08 | 2023-10-31 | Cisco Technology, Inc. | Enhanced multi-factor authentication based on physical and logical proximity to trusted devices and users |
EP4080848B1 (en) * | 2021-04-22 | 2024-01-17 | ABB Schweiz AG | Method and system for synchronizing configuration data in a plant |
US20220360444A1 (en) * | 2021-05-10 | 2022-11-10 | Michael James Reiman | Device and location authentication for secure patient monitoring |
US20230397269A1 (en) * | 2022-06-05 | 2023-12-07 | Apple Inc. | Prioritized resident electronic device in home |
US11843619B1 (en) * | 2022-10-07 | 2023-12-12 | Uab 360 It | Stateless system to enable data breach notification |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101316256A (zh) * | 2007-05-28 | 2008-12-03 | 微码(北京)移动技术有限公司 | 一种数据更新的方法 |
US20090265734A1 (en) * | 2008-01-10 | 2009-10-22 | Touchtunes Music Corporation | System and/or methods for distributing advertisements from a central advertisement network to a peripheral device via a local advertisement server |
US20090264734A1 (en) * | 2006-09-06 | 2009-10-22 | Hadassa Degani | Apparatus for monitoring a system pressure in space with time and method for assessing drug delivery and resistance to therapy and product |
CN101617509A (zh) * | 2007-03-29 | 2009-12-30 | 宝马股份公司 | 用于把数据传送给多个控制装置的方法 |
CN101681320A (zh) * | 2007-06-05 | 2010-03-24 | 三星电子株式会社 | 内容目录服务和控制点之间的内容同步 |
CN101742475A (zh) * | 2008-11-12 | 2010-06-16 | 华为技术有限公司 | 订阅和通知的方法、装置和系统 |
CN101789963A (zh) * | 2010-01-05 | 2010-07-28 | 深圳中兴网信科技有限公司 | 数据同步系统 |
US20100332682A1 (en) * | 2009-06-30 | 2010-12-30 | Christopher Sharp | Updating multiple computing devices |
US20110151837A1 (en) * | 2009-12-23 | 2011-06-23 | Winbush Iii Amos | Mobile communication device user content synchronization with central web-based records and information sharing system |
Family Cites Families (98)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5224648A (en) | 1992-03-27 | 1993-07-06 | American Standard Inc. | Two-way wireless HVAC system and thermostat |
US5742806A (en) * | 1994-01-31 | 1998-04-21 | Sun Microsystems, Inc. | Apparatus and method for decomposing database queries for database management system including multiprocessor digital data processing system |
US5774717A (en) * | 1995-12-15 | 1998-06-30 | International Business Machines Corporation | Method and article of manufacture for resynchronizing client/server file systems and resolving file system conflicts |
JPH09298780A (ja) | 1996-05-07 | 1997-11-18 | Yamatake Honeywell Co Ltd | ワイヤレス受信装置 |
US6072784A (en) | 1997-07-25 | 2000-06-06 | At&T Corp. | CDMA mobile station wireless transmission power management with adaptive scheduling priorities based on battery power level |
US6891838B1 (en) | 1998-06-22 | 2005-05-10 | Statsignal Ipc, Llc | System and method for monitoring and controlling residential devices |
US6363422B1 (en) | 1998-06-24 | 2002-03-26 | Robert R. Hunter | Multi-capability facilities monitoring and control intranet for facilities management system |
US6317754B1 (en) * | 1998-07-03 | 2001-11-13 | Mitsubishi Electric Research Laboratories, Inc | System for user control of version /Synchronization in mobile computing |
US6098893A (en) | 1998-10-22 | 2000-08-08 | Honeywell Inc. | Comfort control system incorporating weather forecast data and a method for operating such a system |
US20040095237A1 (en) | 1999-01-09 | 2004-05-20 | Chen Kimball C. | Electronic message delivery system utilizable in the monitoring and control of remote equipment and method of same |
US6725281B1 (en) * | 1999-06-11 | 2004-04-20 | Microsoft Corporation | Synchronization of controlled device state using state table and eventing in data-driven remote device control model |
US6453687B2 (en) | 2000-01-07 | 2002-09-24 | Robertshaw Controls Company | Refrigeration monitor unit |
US6513723B1 (en) | 2000-09-28 | 2003-02-04 | Emerson Electric Co. | Method and apparatus for automatically transmitting temperature information to a thermostat |
US7185078B2 (en) * | 2001-06-28 | 2007-02-27 | Microsoft Corporation | Event manager for a control management system |
US6619055B1 (en) | 2002-03-20 | 2003-09-16 | Honeywell International Inc. | Security system with wireless thermostat and method of operation thereof |
US20050090915A1 (en) * | 2002-10-22 | 2005-04-28 | Smart Systems Technologies, Inc. | Programmable and expandable building automation and control system |
HK1052830A2 (en) | 2003-02-26 | 2003-09-05 | Intexact Technologies Ltd | An integrated programmable system for controlling the operation of electrical and/or electronic appliances of a premises |
US7506337B2 (en) * | 2003-04-11 | 2009-03-17 | Microsoft Corporation | System and method for providing service of automated creation of computer software production images |
US7209929B2 (en) * | 2003-04-17 | 2007-04-24 | Salesforce.Com, Inc. | Java object cache server for databases |
JP2004318619A (ja) | 2003-04-17 | 2004-11-11 | Freedom Bird:Kk | ネットワークを利用した店舗業務用データベースシステム |
US20070043478A1 (en) | 2003-07-28 | 2007-02-22 | Ehlers Gregory A | System and method of controlling an HVAC system |
US7756825B2 (en) * | 2003-07-31 | 2010-07-13 | Microsoft Corporation | Synchronization peer participant model |
US7702424B2 (en) | 2003-08-20 | 2010-04-20 | Cannon Technologies, Inc. | Utility load control management communications protocol |
US20050270151A1 (en) | 2003-08-22 | 2005-12-08 | Honeywell International, Inc. | RF interconnected HVAC system and security system |
US7289887B2 (en) | 2003-09-08 | 2007-10-30 | Smartsynch, Inc. | Systems and methods for remote power management using IEEE 802 based wireless communication links |
US20050055432A1 (en) | 2003-09-08 | 2005-03-10 | Smart Synch, Inc. | Systems and methods for remote power management using 802.11 wireless protocols |
US20050125083A1 (en) | 2003-11-10 | 2005-06-09 | Kiko Frederick J. | Automation apparatus and methods |
US7735120B2 (en) * | 2003-12-24 | 2010-06-08 | Apple Inc. | Server computer issued credential authentication |
US7135965B2 (en) | 2004-01-08 | 2006-11-14 | Maple Chase Company | Hazardous condition detection system and method and thermostat for use therewith |
US7469550B2 (en) | 2004-01-08 | 2008-12-30 | Robertshaw Controls Company | System and method for controlling appliances and thermostat for use therewith |
US7567967B2 (en) * | 2004-01-16 | 2009-07-28 | Microsoft Corporation | Business application entity subscriptions synch operation management |
JP4497983B2 (ja) | 2004-03-31 | 2010-07-07 | 株式会社日本総合研究所 | ファイル共有制御システム、共有制御サーバおよび共有制御プログラム |
EP1754170A1 (en) | 2004-05-26 | 2007-02-21 | Nokia Corporation | Method, system, computer programs and devices for management of media items |
US8316438B1 (en) * | 2004-08-10 | 2012-11-20 | Pure Networks Llc | Network management providing network health information and lockdown security |
US7546335B2 (en) * | 2004-09-02 | 2009-06-09 | Broadway Technology, Llc | System and method for a data protocol layer and the transfer of data objects using the data protocol layer |
US7537171B2 (en) | 2004-11-17 | 2009-05-26 | Emerson Electric Co. | Thermostat control system providing power saving transmissions |
CA2588870A1 (en) | 2004-11-23 | 2006-06-01 | S. C. Johnson & Son, Inc. | Device and methods of providing air purification in combination with cleaning of surfaces |
US7480654B2 (en) * | 2004-12-20 | 2009-01-20 | International Business Machines Corporation | Achieving cache consistency while allowing concurrent changes to metadata |
US20060147003A1 (en) | 2004-12-30 | 2006-07-06 | Carrier Corporation | Remote telephone access control of multiple home comfort systems |
EP1932264B1 (en) * | 2005-02-23 | 2017-08-09 | Unium Inc. | Secure, distributed hierarchical convergence network |
US20070038787A1 (en) | 2005-03-30 | 2007-02-15 | Logitech Europe S.A. | Interface device and method for networking legacy consumer electronics devices |
US20070023507A1 (en) * | 2005-07-26 | 2007-02-01 | Microsoft Corporation | Contact data structure and management |
KR100736090B1 (ko) * | 2005-09-28 | 2007-07-06 | 삼성전자주식회사 | 홈 네트워크에서 제 3의 장치의 이벤트를 처리하는 방법 및장치 |
JP2009512096A (ja) * | 2005-10-18 | 2009-03-19 | インタートラスト テクノロジーズ コーポレイション | デジタル著作権管理エンジンのシステムおよび方法 |
US9626667B2 (en) * | 2005-10-18 | 2017-04-18 | Intertrust Technologies Corporation | Digital rights management engine systems and methods |
US20070204078A1 (en) * | 2006-02-09 | 2007-08-30 | Intertrust Technologies Corporation | Digital rights management engine systems and methods |
US7529780B1 (en) * | 2005-12-30 | 2009-05-05 | Google Inc. | Conflict management during data object synchronization between client and server |
JP2007188394A (ja) * | 2006-01-16 | 2007-07-26 | Matsushita Electric Ind Co Ltd | 機器制御通信システム、機器制御通信方法、制御装置及び機器制御通信プログラム |
US20070174429A1 (en) * | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
CN100469016C (zh) * | 2006-04-04 | 2009-03-11 | 腾讯科技(深圳)有限公司 | 一种实现网络通讯录数据同步的方法 |
US20070255763A1 (en) * | 2006-04-27 | 2007-11-01 | International Business Machines Corporation | Database replication method and system |
US8549295B2 (en) * | 2006-05-31 | 2013-10-01 | Microsoft Corporation | Establishing secure, mutually authenticated communication credentials |
US7647324B2 (en) * | 2006-08-01 | 2010-01-12 | Sentillion, Inc. | Methods and apparatus for managing user access to a computing environment |
KR100840609B1 (ko) * | 2006-10-17 | 2008-06-23 | 삼성전자주식회사 | 컨텐츠 서비스 제공 방법 및 장치 |
US9124650B2 (en) * | 2006-12-13 | 2015-09-01 | Quickplay Media Inc. | Digital rights management in a mobile environment |
US7680876B1 (en) * | 2006-12-14 | 2010-03-16 | Cisco Technology, Inc. | Highly available domain name system |
KR100856871B1 (ko) | 2006-12-27 | 2008-09-04 | 주식회사 맥스포 | 유비쿼터스 홈 네트워크 시스템 |
US8131670B2 (en) * | 2007-02-22 | 2012-03-06 | Microsoft Corporation | Techniques to cross-synchronize data |
WO2008121824A1 (en) * | 2007-03-29 | 2008-10-09 | Initiate Systems, Inc. | Method and system for data exchange among data sources |
CN101765831B (zh) * | 2007-06-06 | 2012-10-17 | 雅典娜电信实验有限公司 | 数据库不一致的处理方法 |
WO2008157735A2 (en) * | 2007-06-19 | 2008-12-24 | Qualcomm Incorporated | Methods and apparatus for dataset synchronization in a wireless environment |
US7774102B2 (en) | 2007-06-22 | 2010-08-10 | Emerson Electric Co. | System including interactive controllers for controlling operation of climate control system |
KR100871983B1 (ko) * | 2007-07-24 | 2008-12-03 | 주식회사 동부하이텍 | 반도체 메모리 소자 및 그 제조 방법 |
US8196185B2 (en) | 2007-08-27 | 2012-06-05 | Honeywell International Inc. | Remote HVAC control with a customizable overview display |
US8087593B2 (en) | 2007-11-30 | 2012-01-03 | Honeywell International Inc. | HVAC controller with quick select feature |
US20090327354A1 (en) * | 2008-06-26 | 2009-12-31 | Microsoft Corporation | Notification and synchronization of updated data |
US8090681B2 (en) * | 2008-06-26 | 2012-01-03 | Microsoft Corporation | Resolving conflicts in content management systems |
US20090327292A1 (en) * | 2008-06-27 | 2009-12-31 | Motorola, Inc. | Ensuring consistency among shared copies of a data element |
US8458128B2 (en) * | 2008-08-26 | 2013-06-04 | Microsoft Corporation | Minimal extensions required for multi-master offline and collaboration for devices and web services |
US20100058450A1 (en) | 2008-08-28 | 2010-03-04 | Gene Fein | Pass code provision |
US8543244B2 (en) | 2008-12-19 | 2013-09-24 | Oliver Joe Keeling | Heating and cooling control methods and systems |
KR20100072847A (ko) | 2008-12-22 | 2010-07-01 | 한국전자통신연구원 | 차량 입출고를 기반으로 한 디지털 가전기기 제어 장치 및 방법 |
US8321389B2 (en) * | 2009-01-08 | 2012-11-27 | International Business Machines Corporation | Method, apparatus and computer program product for maintaining file system client directory caches with parallel directory writes |
US8498753B2 (en) | 2009-05-08 | 2013-07-30 | Ecofactor, Inc. | System, method and apparatus for just-in-time conditioning using a thermostat |
US9003387B2 (en) | 2009-09-25 | 2015-04-07 | Fisher-Rosemount Systems, Inc. | Automated deployment of computer-specific software updates |
US20110197032A1 (en) * | 2010-02-08 | 2011-08-11 | Microsoft Corporation | Cache coordination between data sources and data recipients |
US8315977B2 (en) * | 2010-02-22 | 2012-11-20 | Netflix, Inc. | Data synchronization between a data center environment and a cloud computing environment |
CN102714406B (zh) * | 2010-03-12 | 2017-04-19 | 株式会社东芝 | 控制系统、变量器、保护控制装置以及比特流存储部 |
US9098279B2 (en) | 2010-09-14 | 2015-08-04 | Google Inc. | Methods and systems for data interchange between a network-connected thermostat and cloud-based management server |
US8843239B2 (en) | 2010-11-19 | 2014-09-23 | Nest Labs, Inc. | Methods, systems, and related architectures for managing network connected thermostats |
US9046898B2 (en) | 2011-02-24 | 2015-06-02 | Google Inc. | Power-preserving communications architecture with long-polling persistent cloud channel for wireless network-connected thermostat |
US10102242B2 (en) * | 2010-12-21 | 2018-10-16 | Sybase, Inc. | Bulk initial download of mobile databases |
ES2689112T3 (es) * | 2011-03-15 | 2018-11-08 | Amadeus S.A.S. | Método y sistema para mecanismo de sincronización en sistema de reservas de múltiples servidores |
US20120265996A1 (en) * | 2011-04-15 | 2012-10-18 | Madis Kaal | Permitting Access To A Network |
US20120266217A1 (en) * | 2011-04-15 | 2012-10-18 | Skype Limited | Permitting Access To A Network |
US9031905B2 (en) * | 2011-07-20 | 2015-05-12 | International Business Machines Corporation | Data synchronization |
US9449016B2 (en) * | 2011-09-09 | 2016-09-20 | Microsoft Technology Licensing, Llc | Data synchronization policies |
US8799994B2 (en) | 2011-10-11 | 2014-08-05 | Citrix Systems, Inc. | Policy-based application management |
JP2014534405A (ja) | 2011-10-21 | 2014-12-18 | ネスト・ラブズ・インコーポレイテッド | ユーザフレンドリーな、ネットワーク接続された学習サーモスタットならびに関連するシステムおよび方法 |
US8990307B2 (en) * | 2011-11-16 | 2015-03-24 | Box, Inc. | Resource effective incremental updating of a remote client with events which occurred via a cloud-enabled platform |
US9110892B2 (en) * | 2012-03-13 | 2015-08-18 | Microsoft Technology Licensing, Llc | Synchronizing local and remote data |
US8635373B1 (en) | 2012-09-22 | 2014-01-21 | Nest Labs, Inc. | Subscription-Notification mechanisms for synchronization of distributed states |
US8539567B1 (en) * | 2012-09-22 | 2013-09-17 | Nest Labs, Inc. | Multi-tiered authentication methods for facilitating communications amongst smart home devices and cloud-based servers |
US20140321302A1 (en) | 2013-04-26 | 2014-10-30 | Htc Corporation | Mobile device and method for data synchronization |
US9923927B1 (en) * | 2015-09-29 | 2018-03-20 | Amazon Technologies, Inc. | Methods and systems for enabling access control based on credential properties |
US10007779B1 (en) * | 2015-09-29 | 2018-06-26 | Amazon Technologies, Inc. | Methods and systems for gradual expiration of credentials |
JP6674099B2 (ja) * | 2016-06-10 | 2020-04-01 | 富士通株式会社 | 情報管理プログラム、情報管理方法、及び情報管理装置 |
US10462152B2 (en) * | 2016-11-15 | 2019-10-29 | Microsoft Technology Licensing, Llc | Systems and methods for managing credentials used to authenticate access in data processing systems |
-
2012
- 2012-09-22 US US13/624,892 patent/US8635373B1/en active Active
-
2013
- 2013-09-20 EP EP13838995.2A patent/EP2898709B1/en active Active
- 2013-09-20 JP JP2015533203A patent/JP6510977B2/ja active Active
- 2013-09-20 AU AU2013317936A patent/AU2013317936B2/en active Active
- 2013-09-20 CN CN201910151587.9A patent/CN109905476B/zh active Active
- 2013-09-20 EP EP21164002.4A patent/EP3860094B1/en active Active
- 2013-09-20 CN CN201380061082.4A patent/CN104813685B/zh active Active
- 2013-09-20 WO PCT/US2013/060819 patent/WO2014047385A2/en active Application Filing
- 2013-09-20 EP EP19151706.9A patent/EP3496372B1/en active Active
- 2013-09-20 CA CA2885426A patent/CA2885426A1/en active Pending
-
2014
- 2014-01-08 US US14/150,675 patent/US10356218B2/en active Active
-
2017
- 2017-12-13 AU AU2017276261A patent/AU2017276261B2/en active Active
-
2019
- 2019-04-05 JP JP2019072680A patent/JP6826149B2/ja active Active
- 2019-07-03 AU AU2019204772A patent/AU2019204772B2/en active Active
- 2019-07-12 US US16/510,415 patent/US11102334B2/en active Active
-
2021
- 2021-08-24 US US17/410,569 patent/US11516275B2/en active Active
- 2021-10-05 AU AU2021245117A patent/AU2021245117B2/en active Active
-
2022
- 2022-11-28 US US18/070,133 patent/US12095839B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090264734A1 (en) * | 2006-09-06 | 2009-10-22 | Hadassa Degani | Apparatus for monitoring a system pressure in space with time and method for assessing drug delivery and resistance to therapy and product |
CN101617509A (zh) * | 2007-03-29 | 2009-12-30 | 宝马股份公司 | 用于把数据传送给多个控制装置的方法 |
CN101316256A (zh) * | 2007-05-28 | 2008-12-03 | 微码(北京)移动技术有限公司 | 一种数据更新的方法 |
CN101681320A (zh) * | 2007-06-05 | 2010-03-24 | 三星电子株式会社 | 内容目录服务和控制点之间的内容同步 |
US20090265734A1 (en) * | 2008-01-10 | 2009-10-22 | Touchtunes Music Corporation | System and/or methods for distributing advertisements from a central advertisement network to a peripheral device via a local advertisement server |
CN101742475A (zh) * | 2008-11-12 | 2010-06-16 | 华为技术有限公司 | 订阅和通知的方法、装置和系统 |
US20100332682A1 (en) * | 2009-06-30 | 2010-12-30 | Christopher Sharp | Updating multiple computing devices |
US20110151837A1 (en) * | 2009-12-23 | 2011-06-23 | Winbush Iii Amos | Mobile communication device user content synchronization with central web-based records and information sharing system |
CN101789963A (zh) * | 2010-01-05 | 2010-07-28 | 深圳中兴网信科技有限公司 | 数据同步系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112217775A (zh) * | 2019-07-12 | 2021-01-12 | 华为技术有限公司 | 一种远程证明方法及装置 |
CN112217775B (zh) * | 2019-07-12 | 2022-04-05 | 华为技术有限公司 | 一种远程证明方法及装置 |
CN111309747A (zh) * | 2020-02-18 | 2020-06-19 | 京东数字科技控股有限公司 | 数据同步方法、系统和装置 |
CN113452793A (zh) * | 2021-06-30 | 2021-09-28 | 东软睿驰汽车技术(沈阳)有限公司 | 一种诊断服务处理方法、装置、车载终端及介质 |
CN113452793B (zh) * | 2021-06-30 | 2024-05-14 | 东软睿驰汽车技术(沈阳)有限公司 | 一种诊断服务处理方法、装置、车载终端及介质 |
CN113923004A (zh) * | 2021-09-30 | 2022-01-11 | 山东云缦智能科技有限公司 | 服务端统一管理第三方Token、客户端分布式共享第三方Token的方法 |
CN116094825A (zh) * | 2023-02-01 | 2023-05-09 | 成都赛力斯科技有限公司 | 通信安全保护方法、系统、电子设备及存储介质 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104813685B (zh) | 用于分布式状态的同步的订阅通知机制 | |
CN105009131B (zh) | 促进智能家庭设备与基于云的服务器间通信的多层认证方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |