买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】用于创建时间准确的事件流的系统和方法_艾一克斯集团有限公司_201780053512.6 

申请/专利权人:艾一克斯集团有限公司

申请日:2017-08-29

公开(公告)日:2024-04-02

公开(公告)号:CN109716317B

主分类号:G06F15/173

分类号:G06F15/173;G06F15/16;H04L67/12;H04L9/32;H04L9/40;H04L67/568;H04L67/131

优先权:["20160902 US 62/382,911"]

专利状态码:有效-授权

法律状态:2024.04.02#授权;2019.09.13#实质审查的生效;2019.05.03#公开

摘要:本发明的实施方式可以提供改进的分布式计算系统。分布式计算系统中的实体可以分为四类:写入器、读取器、网关和应用。终端用户可以通过网关经由应用与系统进行交互。写入器和读取器的角色可以被分离以分配计算负担。写入器可以针对事件流生成消息。该消息可以包括用于一致的全局排序的时间戳。读取器可以基于时间戳对来自各种写入器的消息进行排列以生成全局时间一致的事件流。

主权项:1.一种分布式计算系统,包括:多个写入器,每个写入器生成消息并且将时间戳附加至所述消息;以及多个读取器,其与所述多个写入器分离,至少一个读取器订阅所述多个写入器中的至少两个写入器,并且所述至少一个读取器接收来自其所订阅的至少两个写入器的消息并且通过基于附加至所述消息的时间戳按时间顺序对来自所述至少两个写入器的消息进行排列来生成事件流。

全文数据:用于创建时间准确的事件流的系统和方法相关引用本申请要求于2016年9月2日提交的题为“SystemandMethodforCreatingTime-AccurateEventStreams”的美国临时申请第62382,911号的优先权,该美国临时申请的内容通过引用并入本文。技术领域本发明的实施方式总体上涉及用于使用分布式计算机网络来创建时间精确的事件流的系统和方法。背景技术如今,大多数复杂的计算都是以集中的方式进行。例如,针对给定应用的来自不同位置的用户与中央处理器交互,并且中央处理器处理与应用相关的所有处理功能。一个示例是游戏环境,在该游戏环境中来自世界各地的多个用户登录到中央服务器并且一起玩交互式游戏。每个用户将其指令发送至中央服务器,并且中央服务器将基于用户指令的顺序执行指令。在游戏中玩家们使用武器相互瞄准,玩家A在玩家B之前按下了射击按钮,因此玩家A活着而玩家B死亡。然而,集中式计算有其局限性。例如,吞吐量受到单个处理器的使用的限制。集中式系统的吞吐量永远不会超过单个中央处理器的吞吐量。分布式计算提供了集中计算的替选方案。在分布式计算中,可以同时使用多个节点而不是单个节点来处理应用。然而,分布式计算存在例如双重花费的缺点。由于多个节点可以处理不同的指令,因此节点必须同意事件的顺序。例如,考虑卖家在线发布产品报价。在中国的买家A发送对该报价的接受,并且该接受由位于中国的节点1处理。大约在同一时间,在美国的另一买家B也发送对该报价的接受,并且该接受由位于美国的节点2处理。节点1和节点2可能不同意是买方A还是买方B首先接受了报价。在分布式计算环境中对事件进行排序的传统解决方案已经不足。例如,共识算法例如Paxos和Raft涉及参与者之间的大量协调以确保事件顺序的一致性。这导致了低的吞吐量。另一传统解决方案例如比特币算法,其依赖于工作证明proof-of-work而不是显式协调来实现对事件顺序的一致。然而,这种比特币算法导致长延迟以及低吞吐量。因此,发明人意识到本领域需要具有接近实时的一致的全局排序事件的分布式计算机网络,其实现高吞吐量和低延时。附图说明为了便于更全面地理解本发明,现在参照附图,在附图中相同的元素用相同的附图标记表示。这些附图不应被解释为限制本发明,而是仅仅是示例性的。图1A是示出根据本发明的实施方式的分布式计算网络的一部分的框图。图1B是示出根据本发明的实施方式的分布式计算网络的传输层部分的框图。图2是根据本发明的实施方式的写入器设备的框图。图3是根据本发明的实施方式的写入器设备的操作的流程图。图4A至图4B是根据本发明的实施方式的读取器设备的操作的流程图。图5示出了根据本发明的实施方式的读取器操作的示例。具体实施方式本发明的实施方式涉及分布式计算。在分布式计算网络中,可以提供多个节点,并且每个节点负责处理的职责。这些节点可以位于不同的物理位置。不同节点可以使用消息彼此通信。图1A是示出根据本发明的实施方式的分布式计算网络100的一部分的框图。图1A可以描述根据本发明的实施方式的分布式计算网络100的逻辑说明。分布式计算网络100可以包括多个应用110.1-110.M其中M是正整数、网关120、多个写入器130.1-130.N其中N是正整数以及多个读取器140.1-140.P其中P是正整数。应用110.1-110.M可以提供与终端用户的交互。应用110.1-110.M可以创建发起事件、接收消费事件以及或者对事件做出反应。应用110.1-110.M可以经由通信链路通过网关120与分布式计算网络100的其他网络实体进行通信。通信链路可以由一个或更多个通信网络例如因特网提供。通信网络可以包括有线或无线局域网LAN、广域网WAN、无线个域网PAN或任何其他类型的通信网络。计算机可以通过因特网、内联网、外联网、以太网或任何其他提供通信的系统进行连接。一些合适的通信协议可以包括例如TCPIP、UDP或OSI。对于无线通信,通信协议可以包括Bluetooth、Zigbee、IrDa或其他合适的协议。此外,网络实体可以通过有线路径或无线路径的组合彼此通信。尽管可以提供多于一个网关,但是出于说明目的示出了单个网关120。网关120可以从其他网络实体例如写入器、读取器、应用接收消息并且将这些消息转发给其他实体。网关120可以控制对系统的访问。网关120可以对消息执行有效性检查并且还可以控制消息传输的速度。因此,网关可以保护分布式计算网络100免受网络攻击例如拒绝服务型攻击。在一个实施方式中,网关120可以采用“N-in-flight”N-运行节流——其中N是可编程的节流水平——以控制消息的速度并且提高可靠性。例如,如果应用试图将十个消息的流发送至写入器并且节流水平N被设置为1,则网关120可以仅允许第一个消息继续进行并且进行等待直到通过从读取器查看事件流能够验证第一个消息已被排序。如果第一个消息被适当地处理了,则网关120然后可以基于系统中的当前消息流将剩余的九个消息相继地发送至写入器。在一个实施方式中,为了提高吞吐量,可以将节流水平N设置为更高的数目。例如,节流水平N可以设置为3;在该示例中,网关120可以向写入器一次发送来自应用流的三个消息。写入器130.1-130.N可以耦接至网关120。响应于来自应用110.1-110.M的传入消息,写入器130.1-130.N可以创建与事件有关的传出消息。写入器130.1-130.N可以彼此全局时间同步。因此,写入器130.1-130.N可以对传出消息进行排序。写入器130.1-130.N可以对传出消息加时间戳并且还可以将数字签名附加至传出消息。数字签名可以是公钥数字签名。可以基于全局同步的时钟来精确地同步时间戳。写入器130.1-130.N可以耦接至读取器140.1-140.P。每个读取器140.1-140.P可以“收听”一个或更多个写入器130.1-130.N。因此,每个读取器140.1-140.P可以从多个写入器130.1-130.N接收消息。出于安全目的,每个读取器140.1-140.P可以对消息上的数字签名进行认证。并且每个读取器140.1-140.P可以基于从不同写入器130.1-130.N接收的消息中的时间戳对这些消息进行排列以创建时间精确的事件流。无论读取器和或写入器的物理位置如何,订阅同一组写入器的任何两个读取器可以生成相同的事件流顺序。因此,本发明的实施方式提高了分布式计算的准确性。此外,对不同角色例如写入器和读取器进行分离会在网络上分配计算负担以使每个网络实体能够更有效地操作。这提高了分布式计算网络的速度并且因此提高了吞吐量。例如,读取器140.1-140.P可能不需要彼此通信或执行其他无关操作从而减慢全局一致事件流的生成。写入器也可以免于执行无关操作从而减慢将要发送给读取器的序列消息的生成。图1B是示出根据本发明的实施方式的分布式计算网络100的传输层部分的框图。如上所示和所讨论的,写入器130.1-130.N可以以单向方式与读取器140.1-140.P通信。分布式计算网络100还可以包括包含一个或更多个中继器150.1-150.Q的中继器块150。中继器块150可以是来自写入器130.1-130.N的侧信道并且可以分布在整个网络中。中继器150.1-150.Q可以包括存储装置并且可以存储写入器130.1-130.N的传出消息。中继器150.1-150.Q可以以各种方式组织。在一个实施方式中,中继器150.1-150.Q可以是基于存储器的并且每个中继器可以与早的传出消息的窗口相对应。例如,一个中继器可以存储最后的一百个传出消息,而另一中继器可以存储下一百个最早的传出消息等。在另一实施方式中,中继器150.1-150.Q可以是基于文件的,并且中继器150.1-150.Q可以基于消息所属的文件和应用来存储传出消息。例如,一个中继器可以存储应用A的最新消息,而另一中继器可以存储应用B和应用C等的最新消息。在另一实施方式中,中继器可以被组织为基于存储器和基于文件的组合。存储在中继器150.1-150.Q中的数据可以是结构化的、半结构化的或非结构化的。中继器150.1-150.Q中的数据存储区域可以包括文件系统和用于存储数据的数据库。如本领域中已知的,存储在中继器150.1-150.Q中的数据可以通过数据库管理系统进行管理和通信。中继器150.1-150.Q可以包括可以具有不同的结构并且存储不同类型的数据的多个数据存储区域。如下面进一步详细讨论的,读取器140.1-140.P可以与中继器150.1-150.Q通信以对丢失的消息进行请求。如果中继器150.1-150.Q中的一个中继器具有丢失的消息,则适当的中继器可以将该消息发送至进行请求的读取器。然而,如果中继器150.1-150.Q中没有一个中继器具有丢失的消息在中继器之间已经检查了丢失的消息之后,则适当的中继器可以向始发写入器发送重传请求。作为响应,始发写入器可以重传丢失的消息。在该实施方式中,读取器140.1-140.P可以直接不经过网关向中继器150.1-150.P发送消息但不向写入器130.1-130.N发送消息。如果需要,中继器150.1-150.P可以直接向写入器130.1-130.N发送消息。在一个实施方式中,中继器150.1-150.P可以按层次排列。并且只有最高层次中的中继器被允许能够直接向写入器130.1-130.N发送消息。将读取器和写入器的角色进行分离还可以为分布式计算网络提供额外的灵活性并且使网络能够动态地更新。写入器的成员资格可以由当前的写入器控制。例如,预先存在的写入器可以在事件流中添加或删除其他写入器。在一个实施方式中,如果写入器物理上失败,则具有相同逻辑地址但具有不同物理地址的另一写入器可以取代失败的写入器的物理位置。在另一示例中,如果要删除写入器,则该即将删除的写入器可以将“序列结束”消息发送至该写入器的读取器基础readerbase。该“序列结束”消息可以向读取器基础指示该消息将是该写入器发送的最后消息。这是在分布式计算网络中为设备添加冗余的另一种技术,这种技术提供了更大的灵活性。此外,读取器可能不需要彼此通信并且仍然可以与写入器成员列表保持同步。这提高了分布式计算网络的速度。如上所描述的,每个写入器可以生成单独的事件流。在一个实施方式中,来自写入器的消息即单独的事件流可以被存储在远程存储器单元例如云存储器中。远程存储器单元还可以存储读取器的写入器订阅列表的历史。因此,可以重建对读取器过去操作即读取器看到的消息的重放。在一个实施方式中,远程存储器单元可以与中继器块部件集成。在本发明的一个实施方式中,可以通过主题来组织消息,其中主题可以由关联的标签或字符串指定。因此,读取器可以基于主题对从不同写入器接收的消息进行过滤。可以在一个或更多个写入器之间共享单个主题。主题可以被保持在一个或更多个数据库中。在一个实施方式中,主题数据库可以位于中心位置;可替选地,可以以分散的方式提供主题数据库。在新主题被创建的情况下,相应的条目可以被存储在主题数据库中。存储的条目可以包括定义该主题的字符串、在该主题下发布消息的第一个写入器的标识以及该消息的序列号相对于该写入器。在一个实施方式中,如果写入器希望加入已经存在的主题,则可以由已经写入该主题的写入器进行宣告。新写入器会在发布关于该主题的任何消息之前进行等待以看到做出的此宣告,这确保订阅该主题的所有读取器都将使用带有时间戳的宣告并且知道从该时间戳发生起开始跟随新写入器。这可以例如通过具有与每个主题相关联的源宣告主题来实例化。在由来自新写入器的请求提示以及其他情况下时,已经与主题相关联的写入器可以进行添加其他写入器的宣告。写入器也可以从主题中删除自己,并且也可以通过作出删除宣告来删除自己。已删除自身的写入器将不再在该主题下发布消息除非稍后将该写入器重新添加到主题中。这些机制确保均订阅一组主题的任何两个读取器都会就这些主题中产生的消息的确切顺序达成一致。在创建新主题时,可以使用“主题创建”工具向读取器通知新主题。在一个实施方式中,读取器可以维持有针对感兴趣的主题的标准例如字符串上的表达。因此,在任何新创建的主题被宣告的情况下,可以根据读取器的标准进行检查以使读取器能够决定是否消费该新主题。如本文所描述的分布式计算网络可以具有各种用途。例如,分布式计算网络可以被用于全球清算结算系统。如本文所描述的本发明的实施方式可以与在线游戏、全球匹配引擎、军事应用、票据交换所、物联网、数字货币、小额支付、在不同云平台上的同步应用等等一起使用。图2示出了根据本发明的实施方式的写入器130。写入器130可以包括引导机器220和高速缓存230。写入器130可以从网关接收可以源自应用的传入消息。引导机器220可以包括处理器220.1和时钟220.2。处理器220.1可以认证传入消息的数字签名。如下面进一步详细描述的,处理器220.1可以生成新的传出消息并且将写入器130的数字签名附加至传出消息。时钟220.2可以被提供为用于为来自写入器130的传出消息创建时间戳的高精度时钟。时钟220.2可以与其他写入器的时钟全局同步。在一个实施方式中,可以使用网络时间协议NTP来同步写入器的时钟。高速缓存230可以包括存储装置并且可以存储写入器130的传出消息。在中继器请求重传消息的少见情况下,高速缓存230可以处理该请求并且重传所请求的消息。写入器130可以将传出消息发送至读取器中继器。在一个实施方式中,传出消息可以被广播并且任何接收器都能够接收传出消息。在另一实施方式中,传出消息可以专门以一个或更多个读取器为目标,并且只有被作为目标的读取器能够接收那些消息除了中继器以外。写入器130还可以周期性地将写入器的“心跳”发送至读取器。读取器可以使用心跳以及序列号来确认读取器仍然与写入器通信并且来自该写入器的消息没有无意中丢失。例如,如果收听读取器没有收到来自指定写入器的消息但在同一时间段内确实收到该写入器的心跳,则该读取器可以假定该写入器在该时间段内没有要发送的消息。图3示出了根据本发明的实施方式的从写入器生成和发送消息的流程图。在一个实施方式中,图3的方法可以由图1和图2的写入器130执行,或者可替选地,图3的方法可以由另一设备执行。在步骤310中,写入器130可以从与其耦合的网关120接收消息。在步骤320中,写入器130可以认证数字签名以验证传入消息的发送者。在步骤330中,写入器130可以生成步骤340中的新的传出消息。传入消息可能经由网关从应用多播到写入器。传入消息可能是未排序的。在步骤340中,写入器130可以将写入器130的写入器ID附加至消息。写入器ID可以是对每个写入器而言唯一的ID。在步骤340中,写入器130可以将序列号附加至消息。序列号可以是在每个消息之后递增的单调递增的数字。在步骤360中,写入器130可以将时间戳附加至消息。消息可以由高精度的全局时钟加盖时间戳。分布式计算网络中的所有写入器可以使用相同类型的高精度全局时钟来确保一致的事件排序。在步骤370中,写入器130可以针对消息生成唯一的数字签名并且将数字签名附加至消息。写入器的数字签名可以基于以下中的一个或更多个:消息内容包括来自应用的传入消息主体和或传入消息上的网关签名、写入器ID、序列号以及时间戳。数字签名对于每个消息可以是唯一的并且可以由传出消息的接收者使用以验证传出消息的真实性。在步骤380中,可以将消息存储在写入器130的本地高速缓存中。在步骤390中,写入器可以将传出消息发送至一个或更多个读取器和一个或更多个中继器。写入器可以广播传出消息或者可以直接将传出消息发送至一个或更多个读取器。图4A示出了根据本发明的实施方式的接收消息的流程图。在一个实施方式中,图4A的方法可以由图1的读取器140.1-140.P中之一来执行,或者可替选地,图4A的方法可以由另一设备执行。在步骤405中,读取器可以设置读取器将收听的写入器的列表。列表上的写入器可以分布在分布式计算网络中的不同位置。在步骤410中,读取器可以从读取器的列表上的写入器接收消息。此外,读取器还可以从读取器的列表上的写入器接收心跳。对于每个接收到的消息,读取器可以执行以下步骤:在步骤415,读取器可以认证接收到的消息上的数字签名以验证消息确实源自指定的写入器。在步骤420中,读取器可以基于来自同一始发写入器的最后接收的消息来检查附加至消息的序列号以确定序列号是否正确。如果序列号是正确的即,来自同一写入器的最后消息的序列号之后的下一序列号,则在步骤425中,读取器可以将消息分配给始发写入器的队列。读取器可以包括多个队列,每个队列对应于读取器的列表上的每个写入器。如果序列号不正确即,不是来自同一写入者的最后消息的序列号之后的下一序列号,则读取器可以假定读取器丢失了对应于间隙序列编号的消息。因此,在步骤430中,读取器可以将对丢失的消息的请求发送至合适的中继器。中继器可以直接将消息发送至合适的读取器。中继器响应于重传请求而采取的动作如上所描述。图4B示出了根据本发明实施方式的生成事件流的流程图。在一个实施方式中,图4B的方法可以由图1的读取器140.1-140.P中之一来执行,或者可替选地,图4B的方法可以由另一设备执行。在步骤435中,读取器可以检查每个写入器队列是否具有至少一个消息包括心跳。如果是,则在步骤440中,读取器可以从队列中识别最早的尚未提交的消息不包括心跳。在步骤445中,读取器可以将所识别的最早的尚未提交的消息发布至事件流。然后该方法可以返回至步骤435。然而,如果在步骤435中并非所有写入器队列都具有至少一个消息包括心跳,则在步骤450中,读取器可以检查是否从写入器接收到“流结束”消息——其中在写入器的相应队列中没有消息。如果没有接收到“流结束”消息,则该方法可以返回至步骤435并且等待来自该写入器的内容消息、心跳或“流结束”消息中的任何一个被接收。如果接收到“流结束”消息,则在步骤455中,读取器可以从其列表中移除该写入器并且返回至步骤435。图5示出了根据本发明的实施方式的接收消息并且按适当的时间顺序重新排列这些消息的读取器操作的示例。在该示例中,两个读取器520、550可以订阅相同的五个写入器A-E。然而,由于例如读取器处于不同的位置,所以两个读取器可能以不同的顺序接收来自写入器的消息。来自更靠近读取器的写入器的消息可以比来自更远离读取器的写入器的消息更快地被接收。在该示例中,读取器520可以以以下的接收顺序510接收消息:1来自写入器A的消息;2来自写入器B的消息;3来自写入器C的消息;4来自写入器D的消息;以及5来自写入器E的消息。相比之下,读取器550可以以以下的接收顺序540接收消息:1来自写入器B的消息;2来自写入器C的消息;3来自写入器A的消息;4来自写入器E的消息;以及5来自写入器D的消息。然而,在读取器520、550检查在创建接收消息时的时间戳之后,读取器520、550可以重新排列消息,其中最早的时间戳消息在最先而最新的时间戳消息在最后。读取器520、550两者可以以相同的顺序重新布置事件流530的消息:1来自写入器C的消息;2来自写入器E的消息;3来自写入器A的消息;4来自写入器D的消息;以及5来自写入器B的消息。因此,订阅相同写入器的任何两个读取器可以生成相同的事件流。在一个实施方式中,还可以使用加密来在网络实体之间传输消息。如本文所描述的,加密可以与通过数字签名的使用来提供的认证分离并且与该认证互补。在一个实施方式中,一些网络实体不需要具有加密钥匙来执行网络实体的功能。例如,读取器可以以加密形式来针对事件流来接收和安排消息。对于读取器来说,消息是否加密可能不重要。为了查看事件流的消息中的信息,应用可能需要加密钥匙来解密消息。这为分布式计算网络提供了额外的安全层。在一个实施方式中,可以使用“检查点”。检查点可以使读取器能够从特定的检查点开始重建事件流而不是从事件序列的开始来开始重建事件流。这可以使得能够更快地重建事件流从而提高分布式计算网络中的恢复速度。上面描述的技术可以保护分布式计算网络免受时钟漂移的某些不利的影响。时钟漂移中的误差将不会改变所有读取器在每条消息上都会看到相同的时间戳的事实,并且因此时钟漂移可能不会产生关于消息的顺序的争议。这提高了分布式计算网络的准确性。通常,应当注意,上文描绘的和描述的部件可以是计算机或多个计算机或者可以包括计算机或多个计算机。可以在由计算机执行的计算机可执行指令例如程序模块的一般上下文中描述部件。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、部件、数据结构等。本领域技术人员将理解,本发明可以用各种计算机系统配置来实践,包括手持无线设备例如移动电话或PDA、多处理器系统、基于微处理器或可编程的消费电子产品、小型计算机、大型计算机等等。如上所描述的,本发明可以在分布式计算环境中实施,在该分布式计算环境中,任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于包括存储装置的本地计算机存储介质和远程计算机存储介质二者中。计算机通常包括可以形成系统存储器的一部分并且由处理单元读取的各种计算机可读介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。系统存储器可以包括易失性存储器和或非易失性存储器形式例如只读存储器ROM和随机存取存储器RAM的计算机存储介质。基本输入输出系统BIOS——包含有助于例如在启动期间在元件之间传输信息的基本例程——通常被存储在ROM中。RAM通常包含处理单元可以立即访问和或当前正在操作的数据和或程序模块。数据或程序模块可以包括操作系统、应用程序、其他程序模块和程序数据。操作系统可以是各种操作系统或包括各种操作系统例如Microsoft操作系统、Unix操作系统、Linux操作系统、Xenix操作系统、IBMAIXTM操作系统、HewlettPackardUXTM操作系统、NovellNetwareTM操作系统、SunMicrosystemsSolarisTM操作系统、OS2TM操作系统、BeOSTM操作系统、操作系统、ApacheTM操作系统、OpenStepTM操作系统或其他操作系统平台。存储器包括永久被存储或临时被存储的至少一组指令。处理器执行为了处理数据而被存储的指令。该组指令可以包括执行特定的一个任务或多个任务例如附加流程图中所示的那些任务的各种指令。用于执行特定任务的这样的一组指令可以被描述为程序、软件程序、软件、引擎、模块、部件、机制或工具。计算机可以包括存储在如上所述的存储器中并且以本文描述的方式在处理器上执行的多个软件处理模块。程序模块可以是被转换为机器语言或目标代码以允许处理器读取指令的任何合适的编程语言的形式。也就是说,使用编译器、汇编器或解释器可以将特定编程语言中的编程代码或源代码的写入行转换为机器语言。机器语言可以是特定于特定计算机的二进制编码机器指令。可以根据本发明的各种实施方式使用任何合适的编程语言。说明性地,所使用的编程语言可以包括例如汇编语言、Ada、APL、Basic、C、C++、COBOL、dBase、Forth、FORTRAN、Java、Modula-2、Pascal、Prolog、REXX以及或者JavaScript。此外,不必一定将单一类型的指令或编程语言与本发明的系统和方法的操作结合使用。相反,可以根据需要或期望使用任意数量的不同编程语言。另外,在本发明的实践中使用的指令和或数据可以根据需要使用任何压缩或加密技术或者压缩或加密算法。可以使用加密模块来加密数据。此外,可以使用合适的解密模块来解密文件或其他数据。计算环境还可以包括其他可移动不可移动的易失性非易失性计算机存储介质。例如,硬盘驱动器可以读取或写入不可移动的非易失性磁介质。磁盘驱动器可以读取或写入可移动的非易失性磁盘,以及光盘驱动器可以读取或写入可移动的非易失性光盘例如CDROM或其他光学介质。可以在示例性操作环境中使用的其他可移动不可移动的易失性非易失性计算机存储介质包括但不限于磁带盒、闪存卡、数字通用盘、数字录像带、固态RAM、固态ROM等。存储介质通常通过可移动或不可移动的存储器接口连接至系统总线。执行命令和指令的处理单元可以是通用计算机,但是可以使用包括以下设备的各种其他技术中的任何一种:专用计算机、微型计算机、小型计算机、大型计算机、可编程微处理器、微控制器、外围集成电路元件、CSIC客户专用集成电路、ASIC专用集成电路、逻辑电路、数字信号处理器、可编程逻辑器件例如FPGA现场可编程门阵列、PLD可编程逻辑设备、PLA可编程逻辑阵列、RFID处理器、智能芯片或能够实施本发明的处理的步骤的任何其他设备或装置。应当理解,计算机系统的处理器和或存储器不需要在物理上位于相同的位置。计算机系统使用的每个处理器和每个存储器可以在地理上位于不同的位置并且可以被连接以便以任何合适的方式彼此通信。另外地,应当理解,每个处理器和或存储器可以由设备的不同的物理件组成。用户可以通过包括输入设备例如键盘和指点设备——通常称为鼠标、轨迹球或触摸板——的用户界面将命令和信息输入至计算机。其他输入设备可以包括麦克风、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、语音识别设备、键盘、触摸屏、拨动开关、按钮等。这些输入设备和其他输入设备通常通过耦接至系统总线的用户输入接口连接至处理单元,但是可以通过其他接口和总线结构例如并行端口、游戏端口或通用串行总线USB来连接。一个或更多个监视器或显示设备也可以经由接口连接至系统总线。除了显示设备以外,计算机还可以包括可以通过输出外围接口连接的其他外围输出设备。实现本发明的计算机可以使用至一个或更多个远程计算机的逻辑连接在联网环境中操作,该远程计算机通常包括上述的许多元件或所有元件。根据本发明的实施方式可以实现包括有线或无线局域网LAN和广域网WAN、无线个域网PAN和其他类型的网络的各种网络。在LAN网络环境中使用时,计算机可以通过网络接口或适配器连接至LAN。在WAN网络环境中使用时,计算机通常包括调制解调器或其他通信机制。调制解调器可以是内部的或外部的并且可以经由用户输入接口或其他适当的机制连接至系统总线。计算机可以通过因特网、内联网、外联网、以太网或任何其他提供通信的系统进行连接。例如,一些合适的通信协议可以包括TCPIP、UDP或OSI。对于无线通信,通信协议可以包括蓝牙、Zigbee、IrDa或其他合适的协议。此外,系统的部件可以通过有线或无线路径的组合进行通信。尽管未示出计算机的许多其他内部的部件,但是本领域普通技术人员将理解的是这些部件和互连是公知的。因此,不需要结合本发明来公开关于计算机内部结构的更多细节。对于本领域普通技术人员来说,明显的是本公开发明可以在广泛的行业中实现。本公开发明的各种实施方式和特征可以以任何组合来使用,因为这些实施方式和特征的组合完全在本发明的范围内。尽管前面的描述包括许多细节和特征,但是应当理解,这些仅仅是为了解释的目的而包括在内而不应被解释为对本发明的限制。对于本领域技术人员来说,明显的是在不脱离本发明的精神和范围的情况下,可以对上述实施方式进行其他修改。因此,这些修改被认为是在本发明的范围内并且旨在由所附权利要求书及其法律等同物涵盖。从前述内容可以看出,本发明很好地适用于实现上述所有目的和目标以及其它优点,这些优点对于该系统和方法是明显的和固有的。应当理解,某些特征和子组合是有用的并且可以在不参照其他特征和子组合的情况下使用。这是预期的并且在所附权利要求书的范围内。

权利要求:1.一种分布式计算系统,包括:多个写入器,每个写入器生成消息并且将时间戳附加至所述消息;以及多个读取器,其与所述多个写入器分离,至少一个读取器订阅所述多个写入器中的至少两个写入器,并且所述至少一个读取器接收来自其所订阅的至少两个写入器的消息并且通过基于附加至所述消息的时间戳按时间顺序对来自所述至少两个写入器的消息进行排列来生成事件流。2.根据权利要求1所述的系统,还包括网关,所述网关用于将终端用户应用在通信上耦接至所述多个写入器中的至少一个写入器和所述多个读取器中的至少一个读取器。3.根据权利要求2所述的系统,其中,所述终端用户应用将消息发送至所述至少一个写入器。4.根据权利要求1所述的系统,其中,每个写入器将唯一的数字签名附加至所述消息。5.根据权利要求4所述的系统,其中,所述数字签名基于以下中的一个更多个:时间戳、消息内容、写入器ID和序列号。6.根据权利要求1所述的系统,还包括:用于对来自所述至少两个写入器的先前发送的消息进行存储的一个或更多个中继器。7.根据权利要求6所述的系统,其中,响应于来自所述至少一个读取器的重传请求,所述中继器检索并发送存储的消息。8.根据权利要求1所述的系统,其中,所述多个写入器中的一个写入器具有将新写入器添加至所述多个写入器的能力。9.根据权利要求1所述的系统,其中,所述多个写入器中的一个写入器具有删除所述多个写入器中的另一写入器的能力。10.根据权利要求1所述的系统,其中,所述多个写入器周期性地发送心跳。11.根据权利要求1所述的系统,其中,不同的写入器的至少两个消息通过主题进行组织。12.一种写入器设备,包括:时钟,其用于生成时钟信号;处理器,其基于来自网关的传入消息生成传出消息,基于所述时钟信号将时间戳附加至所述传出消息,以及将所述传出消息发送至一个或更多个读取器设备。13.根据权利要求12所述的写入器设备,还包括:高速缓存,其存储先前发送的消息。14.根据权利要求13所述的写入器,其中,所述高速缓存用于在存在对存储的消息的请求时检索所述存储的消息以进行重传。15.根据权利要求12所述的写入器设备,其中,所述处理器用于将数字签名附加至所述传出消息。16.根据权利要求15所述的写入器设备,其中,所述数字签名基于以下中的一个更多个:时间戳、消息内容、写入器ID和序列号。17.根据权利要求12所述的写入器设备,其中,处理器周期性地发送心跳。18.根据权利要求12所述的写入器设备,其中,所述时钟与分布式计算网络中的其他写入器的其他时钟同步。19.根据权利要求12所述的写入器设备,其中,所述写入器设备将所述传出消息直接发送至所述一个或更多个读取器设备。20.根据权利要求12所述的写入器设备,其中,所述写入器设备在所述写入器设备解除运作之前发送“序列结束”消息。21.一种创建事件流的方法,包括:接收来自多个写入器的消息;基于包括在所述消息中的时间戳按时间顺序排列所述消息;以及将已排列的消息作为事件流进行发送。22.根据权利要求21所述的方法,还包括基于包括在所述消息中的数字签名来认证所述消息。23.根据权利要求21所述的方法,其中,所述事件流被发送至网关,所述网关将所述事件流转发至终端用户应用。24.根据权利要求21所述的方法,还包括:建立一组写入器;以及接收来自所述一组写入器中的每个写入器的周期性心跳。25.根据权利要求21所述的方法,还包括通过主题对不同的写入器的至少两个消息进行组织。

百度查询: 艾一克斯集团有限公司 用于创建时间准确的事件流的系统和方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。