用于递送实时消息的消息传递平台的制作方法

文档序号:29461180发布日期:2022-04-02 01:29阅读:80来源:国知局
用于递送实时消息的消息传递平台的制作方法
用于递送实时消息的消息传递平台
1.相关申请的交叉引用
2.本技术是于2019年10月30日提交的美国非临时申请第16/669,044号和于2019年10月30日提交的美国非临时申请第16/668,811号的继续部分并要求它们的优先权,这两个申请要求于2019年8月6日提交的美国临时申请第62/883,633号的优先权,该申请的公开内容通过引用整体并入本文。
3.本技术还要求于2019年8月6日提交的美国临时专利申请第62/883,633号的优先权,该申请的公开内容通过引用整体并入本文。


背景技术:

4.社交媒体消息传递平台可以促进数百万或数亿条社交媒体消息在其用户当中的交换。在平台上交换的消息常常能够向平台的用户提供关于当前事件的最新更新或报告。在一些示例中,用户可以在平台上提交搜索并且接收结果流,使得用户能够随着时间而查看与一个或多个关键词匹配的消息。然而,在一段时间内匹配非常大消息流中的消息同时将那些消息实时地呈现给用户涉及诸如处理速度、计算机资源分配和安全性问题的复杂技术性技术挑战。


技术实现要素:

5.本公开涉及以如下方式根据与来自在消息传递平台上交换的大消息流的内容匹配的查询订阅来随着时间而向客户端应用流传输实时消息:该方式提高消息递送速度,有效地控制计算机资源的管理以处理活动查询订阅的数目的波动,并且/或者提高对照从作者视角生成的消息来匹配查询订阅的安全性,同时从发起查询订阅的用户视角实时地递送那些消息。
6.为了建立客户端应用开始接收与活动查询相关的消息流的活动查询,客户端应用可以生成查询订阅请求(例如,graphql订阅查询)并且通过网络将其发送到消息传递平台的订阅执行器(例如,graphql引擎)以使订阅执行器生成查询订阅并且将该查询订阅提供给消息传递平台的事件产生器系统。另外,客户端应用可以生成订阅请求并将该订阅请求发送到输送引擎以在客户端应用与输送引擎之间创建递送信道。可以经由递送信道将由事件产生器系统匹配的消息流传输到客户端应用。以这种方式,查询订阅的管理通过使用两个单独的模块例如订阅执行器、输送引擎而与消息的递送分开,这可以提高从查询创建到实时消息的匹配然后再到实时消息到客户端的呈现的递送速度。另外,在一些示例中,由于生成了两个订阅(例如,一个在订阅执行器处,并且一个在输送引擎处),所以这可以建议客户端应用将必须在订阅执行器和输送模块两者处更新。然而,如本公开中稍后讨论的,客户端应用可以与输送引擎一起更新,并且消息传递平台的结构可以使得查询订阅在输送引擎和订阅执行器处更新,从而减少在客户端应用与消息传递平台之间传送以维持查询订阅的通信量。此外,消息传递平台可以能够针对大消息流(例如,每秒超过50k条消息)执行来自数千个客户端应用的查询订阅并且每秒向客户端应用递送几万条消息。
7.可能不要求用户刷新用户界面或者提交在用户界面上查看新消息的另一请求,而是相反响应于其它用户在消息传递平台上张贴与查询订阅相匹配的消息而将该消息推送到用户的用户界面。例如,用户可以键入诸如“dog(狗)”的搜索词语以生成活动查询,然后接收包括搜索词语“dog”的消息流,并且随着新消息被创建并张贴到消息传递平台而继续接收包括搜索词语“dog”的消息,直到活动查询期满为止。与在提交静态查询(例如,响应于搜索请求而接收web结果的列表)的时刻附近提供一次结果的静态查询相反,用户可以在活动查询的提交之后继续查看已匹配的内容(并且直到活动查询期满为止)。
8.事件产生器系统包括事件产生器管理器和多个事件产生器,该多个事件产生器被配置成同时地执行查询订阅以标识匹配内容。事件产生器管理器从订阅执行器接收查询订阅并且将查询订阅指配给一个或多个事件产生器,使得查询订阅被存储在所指配的事件产生器处。在一些示例中,事件产生器管理器可以管理事件产生器的配置,例如,引起查询订阅的存储和移除,以控制事件产生器系统处的计算资源。例如,事件产生器管理器可以从事件产生器移除期满的(或有错误的)查询订阅,并且当在事件产生器管理器处接收到新查询订阅时指配它们。所指配的事件产生器响应于来自消息队列的消息与查询订阅相匹配而生成响应事件。响应事件可以标识具有与查询订阅相匹配的内容的消息。
9.订阅执行器接收响应事件,用从发起查询订阅的用户视角的数据生成由响应事件标识的消息,并且将这些消息提供给输送引擎以经由递送信道来递送。例如,消息队列中的消息已从其作者视角生成。然而,可能要求被递送到客户端应用的消息具有从发起请求的用户视角的数据。订阅执行器可以在消息已由事件产生器系统匹配之后但在由输送引擎递送之前生成消息(例如,水合(hydrate)消息并对其应用可见性规则)。以这种方式,如果匹配消息的作者已限制(例如,阻挡或禁言)发起查询订阅的用户,则订阅执行器可以丢弃该消息,从而提高消息传递平台的安全性。此外,在一些示例中,由于响应事件可以仅包括用户已为订阅而请求的数据,所以在事件总线上发布的数据量可以减少,从而使得不向客户端发送额外的数据,这可以帮助节省带宽以每秒流传输更多事件。
10.在一些示例中,可以将事件产生器分组成多个事件产生器组,其中每个事件产生器组接收完整消息流。每个产生器组包括多个事件产生器,其中每个事件产生器接收完整消息流的单独部分。每个事件产生器组被分配了查询订阅的单独部分。事件产生器管理器可以将订阅查询指配给事件产生器组,其中组中的每个事件产生器存储并执行查询订阅。在一些示例中,事件产生器管理器可以将订阅指配给第一事件产生器组和第二事件产生器组,使得如果在事件产生器组中的一个处处理查询订阅时存在错误,则能够维持查询订阅。以这种方式,系统能够通过增加或减少事件产生器组的数目和/或增加或减少每个组中的事件产生器的数目来容易地控制事件产生器系统处的响应量以处理(to account for)查询订阅和响应事件的波动量。例如,响应于单个事件产生器组中的事件产生器的数目在增加,每个个体事件产生器可以从消息流接收更少消息来处理,并且因此可以具有更多计算能力来处理额外的搜索。响应于事件产生器组的数目在增加,分配给事件产生器的搜索词语的数目可以减少。
11.在一些示例中,事件产生器系统包括收集器服务,该收集器服务从事件产生器接收响应事件并且丢弃一个或多个响应事件以控制流传输速率,使得由响应事件标识的消息被以等于或低于流传输速率阈值的方式流传输到客户端。例如,如果以快速率流传输消息,
则用户可能无法消费流传输的消息。因此,收集器服务可以节流流传输速率,使得流传输消息的速率等于或小于阈值水平。例如,如果流传输速率阈值是每秒10条消息,则收集器服务可以在一秒时间间隔内丢弃超过了10条的那些响应事件。在一些示例中,收集器服务可以基于除了当响应事件被生成时的时间之外的其它属性丢弃消息。例如,收集器服务可以丢弃被预测为低质量或不当的消息以便以小于阈值的流传输速率提供消息。在一些示例中,收集器服务可以丢弃被预测成具有低参与度的消息以便以小于阈值的流传输速率提供消息。在具体实施方式中进一步讨论这些和其它特征。
12.在一些示例中,收集器服务从事件产生器接收状态响应并且将这些状态响应存储在存储器缓存中。收集器服务可以通过周期性地查询存储器缓存是否有状态响应来确定查询订阅的健康。如果收集器服务确定查询订阅是可修复的,则收集器服务可以向一个或多个事件产生器提供报告为有错误的订阅数据,使得能够修复查询订阅。
13.根据一方面,一种用于在消息传递平台中处理查询订阅的系统包括队列,该队列包括在能够由服务器计算机执行的消息传递平台上交换的消息流,其中消息传递平台被配置成将消息流传输到能够由计算设备执行的客户端应用的用户界面。该系统包括多个事件产生器和事件产生器管理器,该事件产生器管理器被配置成接收查询订阅并且将查询订阅指配给所述多个事件产生器中的一个或多个事件产生器,其中每个事件产生器被配置成响应于来自消息流的满足查询订阅的消息而生成响应事件。该系统包括收集器服务,该收集器服务被配置成从所述多个事件产生器接收状态响应并且将这些状态响应存储在存储器缓存中,其中收集器服务被配置成通过查询存储器缓存中的状态响应来周期性地确定查询订阅的健康状态。响应于健康状态被确定为可修复的,收集器服务被配置成从存储器缓存获得与订阅查询相关的订阅数据并且将该订阅数据提供给一个或多个事件产生器以重启查询订阅。
14.根据一些方面,该系统可以包括以下特征中的一个或多个特征(或它们的任何组合)。事件产生器管理器包括被配置成经由thrift调用接收查询订阅的应用编程接口(api)。事件产生器管理器被配置成监测在所述多个事件产生器处处理的查询订阅的数目和消息流的大小,并且基于所述查询订阅的数目和消息流的大小来调整所述多个事件产生器的数目。所述多个事件产生器被布置在事件产生器组中,并且事件产生器管理器被配置成将查询订阅指配给第一事件产生器组和第二事件产生器组。所述多个事件产生器被布置在事件产生器组中,并且事件产生器管理器被配置成基于与查询订阅相关联的用户标识符将查询订阅指配给至少一个事件产生器组。收集器服务被配置成从事件产生器接收响应事件,将响应事件存储在存储器缓存中,并且在响应事件总线上发布响应事件。
15.响应于接收到新响应事件,收集器服务被配置成通过查询存储器缓存来确定针对查询订阅的响应事件是否已超过流传输速率阈值,其中收集器服务被配置成响应于流传输速率阈值被超过而丢弃新响应事件。响应于接收到新响应事件,收集器服务被配置成确定新响应事件的消息标识符是否被存储在存储器缓存中,其中收集器服务被配置成响应于消息标识符未被存储在存储器缓存中而在响应事件总线上发布新响应事件并且将新响应事件存储在存储器缓存中。收集器服务被配置成响应于消息标识符被存储在存储器缓存中而丢弃新响应事件。所述多个事件产生器被布置在事件产生器组中,并且每个事件产生器组包括许多事件产生器,使得在相应组的事件产生器之间分配消息流。
16.该系统包括:订阅执行器,该订阅执行器被配置成响应于对于通过网络从客户端应用接收到的查询订阅请求的接收而将查询订阅传送到事件产生器管理器,以及输送引擎,该输送引擎被配置成响应于对于通过网络从客户端应用接收到的订阅请求的接收而在输送引擎与客户端应用之间创建递送信道,使得由响应事件标识的消息在查询订阅处于活动的一段时间期间经由递送信道被流传输到客户端应用。事件产生器管理器被配置成响应于查询订阅的期满而针对所指配的组在多个事件产生器中的每一个处删除查询订阅。
17.根据一方面,一种非暂时性计算机可读介质存储可执行指令,当由至少一个处理器执行时,这些可执行指令被配置成使至少一个处理器接收查询订阅,所述查询订阅要与包括能够由服务器计算机执行的消息传递平台上交换的消息流的队列中的内容进行匹配,将查询订阅指配给多个事件产生器中的一个或多个事件产生器,由个体事件产生器响应于来自消息流的包括查询订阅的查询词语的相应部分的消息而生成响应事件,由收集器服务从事件产生器接收状态响应并且将这些状态响应存储在存储器缓存中,由收集器服务通过查询存储器缓存中的状态响应来周期性地确定查询订阅的健康状态,以及,响应于健康状态被确定为可修复的,从存储器缓存获得与订阅查询相关的订阅数据,并且将该订阅数据提供给一个或多个事件产生器以重启查询订阅。
18.根据一些方面,该非暂时性计算机可读介质可以存储被配置成提供或引起以上/以下特征中的一个或多个特征(或它们的任何组合)的指令。所述多个事件产生器被布置在事件产生器组中,并且查询订阅被指配给事件产生器组。基于使用与查询订阅相关联的用户标识符的模操作的执行来将查询订阅指配给事件产生器组。操作还可以包括在响应事件总线上发布响应事件并且将响应事件存储在存储器缓存中。操作还可以包括确定一段时间内的响应事件的数目是否已超过流传输速率阈值并且响应于流传输速率阈值被超过而丢弃响应事件。操作还可以包括确定由响应事件标识的消息是否已经被发布到响应事件总线并且响应于消息被确定为已经被发布到响应事件总线而丢弃响应事件。操作还可以包括发起指示查询订阅的健康状态的状态消息的传输。操作还可以包括:由订阅执行器响应于对于通过网络从客户端应用接收到的查询订阅请求的接收而将查询订阅传送到事件产生器管理器,由输送引擎响应于对于通过网络从客户端应用接收到的订阅请求的接收而在输送引擎于客户端应用之间创建递送信道,由订阅执行器基于来自响应事件的消息标识符和与查询订阅相关联的用户标识符生成消息,并且由输送引擎在查询订阅处于活动的一段时间期间经由递送信道将消息流传输到客户端应用。
19.根据一方面,一种用于在消息传递平台中处理查询订阅的方法可以包括:由事件产生器管理器接收要与包括在能够由服务器计算机执行的消息传递平台上交换的消息流的队列中的内容进行匹配的查询订阅,由事件产生器管理器将查询订阅指配给多个事件产生器组中的一个事件产生器组,每个事件产生器组包括多个事件产生器,由个体事件产生器响应于来自消息流的包括查询订阅的查询词语的相应部分的消息而生成响应事件,由收集器服务将响应事件发布到响应事件总线,由收集器服务从事件产生器接收状态响应并且将这些状态响应存储在存储器缓存中,由收集器服务通过查询存储器缓存中的状态响应来周期性地确定查询订阅的健康状态,以及响应于健康状态被确定为可修复的,从存储器缓存获得与订阅查询相关的订阅数据,并且将该订阅数据提供给一个或多个事件产生器以重启查询订阅。
20.根据一些方面,该方法可以包括以上/以下特征中的一个或多个特征(或它们的任何组合)。查询订阅被指配给主要事件产生器组和次要事件产生器组。基于与查询订阅相关联的用户标识符将查询订阅指配给事件产生器组。该方法可以包括,由收集器服务在发布步骤之前确定一段时间内的响应事件的数目是否已超过流传输速率阈值,以及由收集器服务响应于流传输速率阈值被超过而丢弃响应事件。该方法可以包括,由收集器服务在发布步骤之前确定由响应事件标识的消息是否已经被发布到响应事件总线,以及由收集器服务响应于消息被确定为已经被发布到响应事件总线而丢弃响应事件。
21.根据一方面,一种用于在消息传递平台中处理查询订阅的系统包括,消息队列,该消息队列包括在能够由服务器计算机执行的消息传递平台上交换的消息流,事件产生器,该事件产生器被配置成接收查询订阅并且在查询订阅处于活动的同时生成响应事件,使得响应事件是响应于消息流的包括查询订阅的查询词语的消息而生成的,收集器服务,该收集器服务被配置成接收响应事件并且丢弃一个或多个响应事件以控制由响应事件标识的消息被递送到客户端应用的流传输速率,以及输送引擎,该输送引擎被配置成根据流传输速率通过网络将消息递送到客户端应用。
22.根据一些方面,该系统可以包括以上/以下特征中的一个或多个特征(或它们的任何组合)。收集器服务被配置成响应于先前接收到的响应事件的数目在一段时间内超过阈值量而丢弃新响应事件。收集器服务被配置成响应于先前发布的响应事件的数目在一段时间内等于或小于阈值量而将新响应事件发布到响应事件总线。收集器服务被配置成将响应事件发布到响应事件总线并且将所发布的响应事件存储在存储器缓存中,其中,响应于新响应事件,收集器服务被配置成查询存储器缓存以确定在一段时间内存储在存储器缓存中的响应事件的数目并且响应于存储在存储器缓存中的响应事件的数目在该段时间期间超过阈值量而丢弃新响应事件。每个响应事件包括消息标识符和包括关于查询订阅的信息的订阅数据。该系统可以包括,订阅执行器,该订阅执行器被配置成经由响应事件总线从收集器服务接收响应事件,其中订阅执行器被配置成基于包括在相应响应事件中的消息标识符和与查询订阅相关联的用户标识符针对每个响应事件生成消息。收集器服务被配置成从事件产生器接收针对第一查询订阅的第一响应事件并且从事件产生器接收针对第二查询订阅的第二响应事件,其中收集器服务被配置成丢弃一个或多个第一响应事件,使得由第一响应事件标识的消息通过输送引擎以等于或小于流传输速率阈值的方式经由第一递送信道流传输,并且收集器服务被配置成丢弃一个或多个第二响应事件,使得由第二响应事件标识的消息通过输送引擎以等于或小于流传输速率阈值的方式经由第二递送信道流传输。
23.收集器服务可以包括多个收集器服务实例,其中每个收集器服务实例被配置成接收响应事件的单独部分并且通过丢弃一个或多个响应事件来获得响应事件的子集,使得每个子集包括数目等于或小于个体流传输速率阈值的响应事件。该系统可以包括存储器缓存,该存储器缓存被配置成存储从相应收集器服务实例接收到的响应事件的每个子集,其中所述多个收集器服务实例中的至少一个被配置成聚合子集并且从聚合子集中丢弃一个或多个响应事件,使得聚合子集包括数目等于或小于流传输速率阈值的响应事件。收集器服务被配置成接收由响应事件标识的消息的参与概率度量,其中参与概率度量指示对消息的参与的预测水平,并且收集器服务被配置成基于参与概率度量丢弃一个或多个响应事件。收集器服务被配置成接收由响应事件标识的消息的消息健康度量,其中消息健康度量
指示违反消息传递平台的一个或多个条款的风险水平,并且收集器服务被配置成基于消息健康度量来丢弃一个或多个响应事件。
24.根据一方面,一种非暂时性计算机可读介质存储可执行指令,当由至少一个处理器执行时,这些可执行指令被配置成使所述至少一个处理器接收在能够由服务器计算机执行的消息传递平台上交换的消息流,其中消息传递平台被配置成将消息递送到能够由计算设备执行的客户端应用的用户界面,接收针对消息传递平台上的活动查询的查询订阅,在查询订阅处于活动的同时生成响应事件,使得响应事件是响应于消息流的包括查询订阅的查询词语的消息而生成的,丢弃一个或多个响应事件以控制由响应事件标识的消息被递送到客户端应用的流传输速率,并且根据流传输速率通过网络将消息递送到客户端应用。
25.根据一些方面,该非暂时性计算机可读介质可以包括提供或引起以上/以下特征中的一个或多个特征(或它们的任何组合)的指令。响应于先前接收到的响应事件的数目在一段时间内超过阈值量,将新接收到的响应事件丢弃。响应于先前发布的响应事件的数目在一段时间内等于或小于阈值量,将新接收到的响应事件发布到响应事件总线。操作还可以包括将响应事件发布到响应事件总线,将所发布的响应事件存储在存储器缓存中,以及确定在一段时间内存储在存储器缓存中的响应事件的数目并且响应于存储在存储器缓存中的响应事件的数目在该段时间期间超过阈值量而丢弃新响应事件。操作可以包括经由响应事件总线接收响应事件,其中每个响应事件包括消息标识符,并且基于响应事件生成消息,使得消息是基于包括在相应响应事件中的消息标识符和与查询订阅相关联的用户标识符针对每个响应事件而生成的。
26.根据一方面,一种用于在消息传递平台中处理查询订阅的方法包括,接收在能够由服务器计算机执行的消息传递平台上交换的消息流,接收针对消息传递平台上的活动查询的查询订阅,生成响应事件,使得响应事件是响应于消息流的包括查询订阅的查询词语的消息而生成的,丢弃一个或多个响应事件以控制由响应事件标识的消息被递送到客户端应用的流传输速率,其中每个响应事件包括消息标识符,基于响应事件生成消息,使得消息是基于包括在相应响应事件内的消息标识符和与订阅查询相关联的用户标识符而生成的,以及根据流传输速率通过网络将消息递送到客户端应用。
27.根据一些方面,该方法可以包括以上/以下特征中的一个或多个特征(或它们的任何组合)。响应于先前接收到的响应事件的数目在一段时间内超过阈值量,新接收到的响应事件被丢弃。该方法可以包括,将响应事件发布到响应事件总线,将所发布的响应事件存储在存储器缓存中,以及确定在一段时间内存储在存储器缓存中的响应事件的数目,并且响应于存储在存储器缓存中的响应事件的数目在该段时间期间超过阈值量而丢弃新响应事件。该方法可以包括,接收由响应事件标识的消息的参与概率度量,其中参与概率度量指示对消息的参与的预测水平,以及基于参与概率度量丢弃一个或多个响应事件。该方法可以包括,接收由响应事件标识的消息的消息健康度量,其中消息健康度量指示违反消息传递平台的一个或多个条款的风险水平,以及基于消息健康度量丢弃一个或多个响应事件。
28.根据一方面,一种用于在消息传递平台中处理查询订阅以向客户端应用递送实时消息的方法包括,由订阅执行器响应于从客户端应用接收到查询订阅请求而向事件产生器系统传送查询订阅,由输送引擎响应于从客户端应用接收到订阅请求而在客户端应用与输送引擎之间创建递送信道,在事件产生器系统处响应于来自消息流的具有满足查询订阅的
内容的消息而生成响应事件,通过订阅执行器确定由响应事件标识的消息的作者是否已限制与用户标识符相关联的用户,由订阅执行器响应于用户被确定为受作者限制而丢弃由响应事件标识的消息,以及由输送引擎响应于用户被确定为不受作者限制而在查询订阅处于活动的一段时间期间经由递送信道将由响应事件标识的消息流传输到客户端应用。
29.根据一些方面,该方法可以包括以上/以下特征中的一个或多个特征(或它们的任何组合)。查询订阅请求包括查询词语和期满时间。事件产生器系统包括多个事件产生器,并且该方法包括基于用户标识符将查询订阅指配给所述多个事件产生器中的一个或多个事件产生器。订阅请求包括输送主题和用户标识符。该方法可以包括,由订阅执行器响应于接收到查询订阅请求而标识输送主题,由订阅执行器响应于接收到查询订阅请求而生成订阅标识符,以及由订阅执行器通过网络向客户端应用传送订阅状态响应,其中订阅状态响应包括输送主题和订阅标识符,并且订阅请求包括输送主题和订阅标识符。该方法可以包括,由事件产生器管理器将查询订阅指配给多个事件产生器,将查询订阅存储在所述多个事件产生器中的每一个处,以及由每个事件产生器响应于来自消息流的具有满足查询订阅的内容的消息而生成响应事件。
30.根据一方面,一种用于处理查询订阅以向客户端应用递送实时消息的消息传递平台包括,事件产生器系统,该事件产生器系统被配置成接收在消息传递平台上交换的消息流并且响应于来自消息流的具有满足查询订阅的内容的消息而生成响应事件,订阅执行器,该订阅执行器被配置成确定由响应事件标识的消息的作者是否已限制与查询订阅相关联的用户,并且响应于该用户被确定为受作者限制而丢弃由响应事件标识的消息,以及输送引擎,该输送引擎被配置成通过网络从客户端应用接收订阅请求以在输送引擎与客户端应用之间建立递送信道,其中输送引擎被配置成响应于用户被确定为不受作者限制而在查询订阅处于活动的一段时间期间经由递送信道将由响应事件标识的消息流传输到客户端应用。
31.根据一些方面,消息传递平台可以包括以上/以下特征中的一个或多个特征(或它们的任何组合)。订阅执行器被配置成响应于从客户端应用接收到查询订阅请求而将查询订阅传送到事件产生器系统。订阅执行器被配置成响应于从客户端应用接收到查询订阅请求而标识输送主题,其中订阅执行器被配置成通过网络向客户端应用传送订阅状态响应,并且订阅状态响应包括输送主题。订阅执行器被配置成生成唯一地标识查询订阅的订阅标识符并且在订阅状态响应中传送订阅标识符。订阅请求包括输送主题和用户标识符。
32.订阅执行器连接到响应事件总线以随着响应事件由事件产生器系统生成而获得响应事件,每个响应事件包括消息标识符。订阅执行器被配置成基于消息标识符来生成消息,其中订阅执行器被配置成将消息提供给输送引擎以供经由递送信道递送到客户端应用。订阅执行器包括graphql应用编程接口(api)和graphql执行器。graphql执行器被配置成与graphql api进行通信以针对每个响应事件生成javascript对象表示法(json)消息。graphql执行器被配置成将json消息提供给输送引擎以供经由递送信道递送到客户端应用。事件产生器系统包括事件产生器管理器和多个事件产生器,其中事件产生器管理器被配置成从订阅执行器接收查询订阅并且将查询订阅指配给所述多个事件产生器中的一个或多个事件产生器。
33.根据一方面,一种非暂时性计算机可读介质存储可执行指令,当由至少一个处理
器执行时,这些可执行指令被配置成使所述至少一个处理器通过订阅执行器响应于从客户端应用接收到查询订阅请求而向事件产生器系统传送查询订阅,由输送引擎响应于从客户端应用接收到订阅请求而在客户端应用与输送引擎之间创建递送信道,在事件产生器系统处响应于来自消息流的具有满足查询订阅的内容的消息而生成响应事件,通过订阅执行器确定由响应事件标识的消息的作者是否已限制与用户标识符相关联的用户,由订阅执行器响应于该用户被确定为受作者限制而丢弃由响应事件标识的消息,并且由输送引擎响应于用户被确定为不受作者限制而在查询订阅处于活动的一段时间期间经由递送信道将由响应事件标识的消息流传输到客户端应用。
34.根据一些方面,该非暂时性计算机可读介质可以存储提供以上/以下特征中的一个或多个特征(或它们的任何组合)的指令。查询订阅请求包括查询词语和期满时间,其中订阅请求包括输送主题,并且递送信道与输送主题相关联,使得消息被流传输到与输送主题相对应的客户端应用。操作可以包括由订阅执行器基于被包括在查询订阅请求中的订阅数据来标识输送主题,由订阅执行器基于订阅数据来生成订阅标识符,并且由订阅执行器通过网络向客户端应用传送订阅状态响应,其中订阅状态响应包括输送主题和订阅标识符。订阅请求包括输送主题和订阅标识符。操作可以包括将查询订阅指配给事件产生器系统中的一个或多个事件产生器,将查询订阅存储在每个指配的事件产生器处,并且由每个事件产生器响应于查询订阅中的对照来自消息流的消息而匹配的查询词语来生成响应事件。
35.根据一方面,一种用于处理查询订阅以用于从消息传递平台流传输实时消息的方法包括,由客户端应用通过网络向消息传递平台的订阅执行器传送查询订阅请求,其中查询订阅请求被配置成使订阅执行器生成要在消息传递平台上交换的消息的队列上执行的查询订阅,由客户端应用通过网络向消息传递平台的输送引擎传送订阅请求,其中订阅请求被配置成使输送引擎在输送引擎与客户端应用之间创建递送信道,由客户端应用经由递送信道接收满足查询订阅的条件的消息流,使得在查询订阅处于活动的同时在客户端应用的用户界面上流传输消息,以及由客户端应用通过网络向输送引擎周期性地传送订阅更新请求,其中订阅更新请求被配置成使输送引擎更新递送信道并且使订阅执行器更新查询订阅。
36.根据一些方面,该方法可以包括以上/以下特征中的一个或多个特征(或它们的任何组合)。查询订阅请求包括查询词语和用户标识符。查询订阅请求包括定义查询订阅处于活动的一段时间的期满时间。订阅请求包括输送主题,其中输送主题对应于与查询订阅相关联的一个或多个查询词语。该方法可以包括,由客户端应用通过网络从订阅执行器接收订阅状态响应,其中订阅状态响应包括输送主题和订阅标识符,以及由客户端应用生成订阅请求以包括输送主题和订阅标识符。查询订阅请求和订阅请求被大体上彼此并行地传送。该方法可以包括由客户端应用从输送引擎接收信道标识符,该信道标识符标识递送信道。消息流被呈现在客户端应用的时间线上,使得消息随着时间在时间线上被自动地流传输。时间线是客户端应用的用户界面上的搜索纵列,其中该方法进一步包括由客户端应用响应于搜索纵列的创建而生成查询订阅请求。时间线是客户端应用的用户的主时间线(home timeline),使得消息被自动地流传输到用户的主时间线。消息流包括与消息传递平台上的对话相关的对话图内的消息。
37.根据一方面,一种非暂时性计算机可读介质存储可执行指令,当由至少一个处理器执行时,这些可执行指令被配置成使所述至少一个处理器由能够由计算设备执行的客户端应用通过网络向能够由服务器计算机执行的消息传递平台的订阅执行器传送查询订阅请求,其中查询订阅请求被配置成使订阅执行器生成要在消息传递平台上交换的消息的队列上执行的查询订阅,由客户端应用通过网络从订阅执行器接收状态消息响应,其中状态消息响应包括输送主题,由客户端应用通过网络向消息传递平台的输送引擎传送订阅请求,其中订阅请求包括输送主题,并且订阅请求被配置成使输送引擎在输送引擎与客户端应用之间创建递送信道,由客户端应用经由递送信道接收满足查询订阅的条件的消息流,使得消息在查询订阅处于活动的同时以等于或低于流传输速率阈值的流传输速率在客户端应用的用户界面上流传输,并且由客户端应用通过网络向输送引擎周期性地传送订阅更新请求,其中订阅更新请求被配置成使输送引擎更新递送信道并且使订阅执行器更新查询订阅。
38.根据一些方面,该非暂时性计算机可读介质可以存储提供以上/以下特征中的一个或多个特征(或它们的任何组合)的指令。查询订阅请求包括查询词语、用户标识符以及定义查询订阅处于活动的一段时间的期满时间。查询订阅请求是graphql订阅查询。操作可以包括由客户端应用通过网络经由递送信道从输送引擎接收状态消息,并且由客户端应用基于状态消息重新传送查询订阅请求和订阅请求。
39.根据一方面,一种用于处理查询订阅以用于从消息传递平台流传输实时消息的系统包括,消息传递平台,该消息传递平台能够由服务器计算机执行,该消息传递平台被配置成生成在消息传递平台上交换的消息的队列,以及客户端应用,该客户端应用能够由计算设备执行,该客户端应用被配置成在客户端应用的用户界面上呈现社交内容的时间线。客户端应用被配置成通过网络向消息传递平台的订阅执行器传送查询订阅请求,其中查询订阅请求被配置成使订阅执行器生成要在消息的队列上执行的查询订阅,通过网络向消息传递平台的输送引擎传送订阅请求,其中订阅请求被配置成使输送引擎在输送引擎与客户端应用之间创建递送信道,经由递送信道接收满足查询订阅的条件的消息流,使得消息在查询订阅处于活动的同时以等于或低于流传输速率阈值的流传输速率在客户端应用的用户界面上流传输,并且通过网络向输送引擎周期性地传送订阅更新请求,其中订阅更新请求被配置成使输送引擎更新递送信道并且使订阅执行器更新查询订阅。
40.根据一些方面,该系统可以包括以上/以下特征中的一个或多个特征(或它们的任何组合)。查询订阅请求是包括查询词语和用户标识符的graphql订阅查询。订阅请求包括输送主题,其中输送主题对应于查询词语,并且输送主题具有与输送引擎兼容的格式。查询订阅请求和订阅请求被大体上彼此并行地传送。客户端应用被配置成在查询订阅处于活动的同时在时间线上自动地呈现消息流。消息流包括与对话相关的消息,并且客户端应用被配置成随着消息由消息传递平台生成和共享而将与对话相关的消息推送在用户界面上。
附图说明
41.图1是根据一方面的用于根据以下查询订阅来随着时间而向客户端应用流传输实时消息的系统的示意图,所述查询订阅与来自具有在消息传递平台上交换的消息的消息流的内容匹配。
42.图2图示了根据一方面的系统的一部分,该系统描绘用于生成查询订阅的输送引擎、订阅执行器和客户端应用。
43.图3图示了根据一方面的系统的一部分,该系统描绘用于实现查询订阅并且生成响应事件的事件产生器系统和订阅执行器。
44.图4图示了根据一方面的系统的一部分,该系统描绘用于向输送引擎递送递送事件的订阅执行器和输送引擎。
45.图5图示了根据一方面的系统的一部分,该系统描绘用于流传输消息的输送引擎和客户端应用。
46.图6图示了根据一方面的系统的一部分,该系统描绘用于更新查询订阅的事件产生器系统、订阅执行器、输送引擎和客户端应用。
47.图7图示了根据一方面的客户端应用的用户界面的示例,该客户端应用提供多个时间线以用于流传输内容。
48.图8图示了根据一方面的流程图,该流程图描绘用于根据查询订阅来流传输消息的消息传递平台的示例操作。
49.图9图示了根据一方面的流程图,该流程图描绘用于根据查询订阅来流传输消息的客户端应用的示例操作。
50.图10a图示了根据一方面的用于根据以下查询订阅来随着时间而向客户端应用流传输实时消息的系统的示意图,所述查询订阅与来自具有在消息传递平台上交换的消息的消息流的内容匹配。
51.图10b图示了根据一方面的事件产生器系统的示例。
52.图11图示了根据一方面的事件产生器系统的收集器服务的示例。
53.图12图示了根据一方面的具有多个收集器服务实例的收集器服务的示例。
54.图13图示了根据一方面的描绘事件产生器系统的示例操作的流程图。
55.图14图示了根据一方面的描绘消息传递平台的用于在阈值水平以下流传输消息的示例操作的流程图。
具体实施方式
56.图1是根据一方面包括能够由一个或多个服务器计算机102执行的消息传递平台104和能够由计算设备124执行的客户端应用126的系统100的示意图。消息传递平台104被配置成以如下方式根据与来自消息流114的内容匹配的查询订阅141来随着时间而向客户端应用126流传输实时消息132:该方式提高消息递送速度,有效地控制计算机资源的管理以处理活动查询订阅141的数目的波动,并且/或者提高从发起查询订阅141的用户视角匹配查询订阅141并且实时地递送那些消息132的安全性。
57.消息传递平台104是用于促进用户设备(其中的一个被示出为计算设备124)之间的实时通信的平台。消息传递平台104可以存储个人、企业和/或实体的数百万个账户(例如,化名账户、新奇账户等)。每个账户的一个或多个用户可以使用消息传递平台104来向消息传递平台104内部和/或外部的其它账户发送消息。消息传递平台104可以被配置成使得用户能够“实时地”通信,即,以最小延迟与其它用户对话并且在同时会话期间与一个或多个其它用户进行对话。换句话说,消息传递平台104可以允许用户广播消息132并且可以在
合理的时间帧内向一个或多个其它用户显示消息132以促进用户之间的实况对话。在一些示例中,消息132的接收者可以在连接图169中与广播消息132的用户的账户具有预定义图关系。
58.客户端应用126被配置成通过网络150与消息传递平台104进行通信。客户端应用126可以是其中用户张贴消息132并与之交互的社交媒体消息传递应用。在一些示例中,客户端应用126是在计算设备124的操作系统上执行的本机应用或者可以是与计算设备124的基于浏览器的应用相结合地在服务器计算机102(或其它服务器)上执行的基于web的应用。计算设备124可以以允许客户端应用126和消息传递平台104彼此通信的方式使用任何类型的网络连接和/或应用编程接口(api)来经由网络150访问消息传递平台104。
59.消息132可以是指消息创建事件,诸如新消息的创建和将新消息张贴到消息传递平台104。在一些示例中,消息132可以是指重新共享事件,诸如先前张贴的消息在消息传递平台104上的重新共享。在一些示例中,消息132可以是指参与事件,诸如对消息传递平台104上先前张贴的消息的收藏或点赞。
60.消息传递平台104包括订阅执行器116、事件产生器系统106和输送引擎122。订阅执行器116通过网络150从客户端应用126接收查询订阅请求140并且向事件产生器系统106发送查询订阅141以生成响应事件156,使得响应事件156是响应于来自消息流114的消息满足查询订阅141的条件而生成的。输送引擎122通过网络150从客户端应用126接收订阅请求154以在输送引擎122与客户端应用126之间建立递送信道125,使得响应于在查询订阅141处于活动的一段时间期间生成响应事件156,满足查询订阅141的条件的消息132经由递送信道125被流传输到客户端应用126。
61.在一些示例中,消息132被流传输到一个或多个时间线130。在一些示例中,在时间线130上按时间顺序流传输消息132。在一些示例中,在时间线130上按逆时间顺序流传输消息132。在一些示例中,在时间线130上对消息132进行排名。在一些示例中,不在时间线130上对消息132进行排名。在一些示例中,时间线130是实时地流传输与搜索条件匹配的消息132的用户界面128上的纵列(例如,搜索纵列)。例如,用户可以使用客户端应用126来提交活动查询以获得包括搜索词语“dog”的消息132,并且客户端应用126在时间线130上流传输包括搜索词语“dog”的消息132,直到活动查询期满(例如,用户执行动作以关闭查询或活动查询超时)为止。
62.在一些示例中,时间线130是用户账户的主时间线,其中客户端应用126从链接到存储在消息传递平台104处的连接图169中的用户账户的用户账户实时地流传输消息132。在一些示例中,时间线130是直接消息时间线,其中客户端应用126流传输向用户直接发送的消息132。在一些示例中,消息132的流包括与消息传递平台104上的对话相关的对话图167内的消息。对话图167可以定义与对话相关的消息132的回复结构。在一些示例中,与对话相关的消息132可以随着用户在对话图167中回复消息132而被自动地推送到用户界面128。
63.如本文所讨论的,查询订阅141的管理通过使用两个单独的模块例如订阅执行器116和输送引擎122来与消息132的递送分开。例如,客户端应用126向消息传递平台104传送两个请求以发起接收实时消息132,例如,一个请求被导向订阅执行器116以进行查询订阅生成,而另一个请求被导向输送引擎122以建立递送信道125来接收消息132。订阅执行器
116从客户端应用126接收查询订阅请求140以在事件产生器系统106处实现查询订阅141,并且输送引擎122从客户端应用126接收订阅请求154以建立递送信道125,其中由事件产生器系统106标识的消息132被流传输到客户端应用126。
64.订阅执行器116可以是被配置成接收查询请求并且生成查询响应(诸如javascript对象表示法(json)响应)的查询语言处理器。通常,订阅执行器116通过网络150从客户端应用126接收查询订阅请求140,并且响应于查询订阅请求140而生成查询订阅141并将其发送到事件产生器系统106。订阅执行器116订阅响应事件总线123以从事件产生器系统106接收响应事件156,基于响应事件156生成消息132(例如,水合消息132并对其应用可见性规则)(从而以用户的视角获得消息132),并且在递送事件总线121上发布消息132,这些消息132被提供给输送引擎122以供递送到客户端应用126。
65.在一些示例中,订阅执行器116包括数据查询应用编程接口(api)118和数据查询执行器120。数据查询api 118通信地连接到数据查询执行器120。在一些示例中,数据查询api 118是graphql api。在一些示例中,数据查询执行器120是graphql执行器。graphql可以指定诸如查询、突变、订阅的三种操作类型。在一些示例中,数据查询api 118包括被配置成支持订阅操作的库(例如,graphql库)。数据查询api 118通过网络连接(例如,http连接)与客户端应用126进行通信以接收并传送与查询订阅141的生成和管理相关的信息。在一些示例中,数据查询api 118包括由数据查询执行器120使用来针对从事件产生器系统106接收到的响应事件156执行查询的端点(例如,thrift端点)。
66.数据查询执行器120经由响应事件总线123监测响应事件156并从事件产生器系统106接收响应事件156,经由端点将响应事件156递送到数据查询api 118,从数据查询api 118接收完整消息132,并且将具有消息132的递送事件160发布到递送事件总线121以被提供给输送引擎122以供递送到客户端应用126。在一些示例中,响应事件总线123和递送事件总线121是单独的分布式队列系统,其中订阅者订阅总线以接收事件(例如,输送引擎122订阅递送事件总线121,而数据查询执行器120订阅响应事件总线123)。另外,如本公开中稍后进一步描述的,数据查询执行器120可以管理订阅更新。
67.输送引擎122是用于将消息132流传输到客户端应用126的递送机制。输送引擎122通过网络150通信地连接到客户端应用126。输送引擎122通过网络连接(例如,http连接)与客户端应用126进行通信以接收并传送与在输送引擎122和客户端应用126之间建立的递送信道125的生成相关的信息。当输送引擎122接收到递送事件160时,输送引擎122通过递送信道125流传输包括在递送事件160中的消息132。此外,输送引擎122从客户端应用126接收订阅更新请求以更新查询订阅141,这些订阅更新请求被提供给订阅执行器116,然后被提供给事件产生器系统106以更新查询订阅141。
68.事件产生器系统106被配置成通过对照消息队列112的消息流114的消息来匹配查询从而支持流传输搜索查询结果。事件产生器系统106可以包括事件产生器管理器108、一个或多个事件产生器110和收集器服务170。在一些示例中,事件产生器管理器108是api。事件产生器管理器108被配置成与订阅执行器116的数据查询api 118进行通信以接收新查询订阅141。事件产生器管理器108可以接收查询订阅141并且将查询订阅141指配给一个或多个事件产生器110。例如,事件产生器管理器108可以接收查询订阅141并且将查询订阅141指配给事件产生器110(或一组事件产生器110),使得查询订阅141被存储在事件产生器110
处(或者在组中的每个事件产生器110处)。
69.事件产生器110从消息队列112接收消息流114并且标识满足查询订阅141的搜索条件的消息132。在一些示例中,消息流114是在消息传递平台104上生成的所有消息132的大流。在一些示例中,消息流114包括以每秒超过10k(一万)条消息的速率递送的消息。在一些示例中,消息流114包括以每秒超过25k条消息的速率递送的消息。在一些示例中,消息流114包括以每秒超过50k条消息的速率递送的消息。在一些示例中,消息流114包括在消息传递平台104上创建和张贴消息的消息创建事件、在消息传递平台104上重新共享的现有消息的消息重新共享事件和/或在消息传递平台104上收藏或点赞现有消息的参与事件。
70.图2图示了根据一方面的更详细地描绘查询订阅生成的操作的系统100。参考图1和图2,客户端应用126可以生成查询订阅请求140并且通过网络将查询订阅请求140传送到订阅执行器116的数据查询api 118。在一些示例中,用户可以使用客户端应用126的用户界面128来提交活动查询,并且响应于活动查询的提交,客户端应用126可以生成并发送查询订阅请求140。在一些示例中,查询订阅请求140被配置成在事件产生器系统106处发起新查询订阅141并且发起查询订阅141的实现。在一些示例中,查询订阅请求140是基于超文本传输协议(http)的graphql订阅查询。
71.查询订阅请求140可以包括订阅数据142。订阅数据142包括一个或多个查询词语144和用户的用户标识符146。在一些示例中,查询词语144包括由用户提供的搜索词语。在一些示例中,订阅数据142包括变量和一个或多个操作名称。在一些示例中,订阅数据142包括客户端应用标识符和经认证的用户标识符。在一些示例中,查询订阅请求140包括指示查询订阅141处于活动的时间值的期满时间148。如果时间量超过期满时间148,则查询订阅141可以被认为超时(除非接收到更新请求)。在一些示例中,客户端应用126确定期满时间148的值,该值可以取决于时间量和/或已由客户端应用126发送的更新订阅的数目。
72.响应于接收到查询订阅请求140,订阅执行器116基于订阅数据142的查询词语144标识输送主题134。输送主题134可以是能够由输送引擎122检测的描述性标识符和/或数值标识符。在一些示例中,订阅执行器116使用定义多个输送主题的主题库135来标识输送主题134。例如,订阅执行器116可以标识主题库135中的所述多个输送主题中的与查询词语144相对应的一个输送主题。在一些示例中,如果订阅执行器116使用查询词语144不能从主题库135中标识出输送主题134,则订阅执行器116可以生成并发送指示查询订阅141已失败的响应。在一些示例中,数据查询api 118使用订阅数据142来标识输送主题134。在一些示例中,数据查询执行器120使用订阅数据142来标识输送主题134。
73.响应于接收到查询订阅请求140,订阅执行器116可以基于订阅数据142来生成订阅标识符136。订阅标识符136可以是标识查询订阅141的标识符。在一些示例中,数据查询api 118生成订阅标识符136。在一些示例中,数据查询执行器120生成订阅标识符136。在一些示例中,订阅执行器116可以基于用户标识符146、查询词语144和/或包括在订阅数据142中的其它信息(诸如变量、操作名称)、经认证的用户标识符和/或客户端应用标识符来生成订阅标识符136。在一些示例中,订阅执行器116被配置成对订阅数据142进行序列化和散列处理以生成订阅标识符136。
74.数据查询api 118被配置成通过网络150向客户端应用126传送订阅状态响应152。订阅状态响应152包括输送主题134。在一些示例中,订阅状态响应152包括订阅标识符136。
在一些示例中,订阅状态响应152包括指示查询订阅请求140是否成功的状态消息。
75.在接收到订阅状态响应152时,客户端应用126可以生成订阅请求154并且通过网络150将其传送到输送引擎122。订阅请求154包括输送主题134。在一些示例中,客户端应用126使用针对订阅请求154的订阅状态响应152中标识的输送主题134。在一些示例中,客户端应用126以与订阅执行器116相同的方式使用订阅数据142来标识输送主题134。在一些示例中,订阅请求154包括订阅标识符136。在一些示例中,订阅请求154包括用户标识符146。在一些示例中,客户端应用126响应于接收到订阅状态响应152而传送订阅请求154。在一些示例中,客户端应用126与查询订阅请求140的传送大体上并行地传送订阅请求154。在一些示例中,客户端应用126发送查询订阅请求140,然后在从查询订阅请求140的传送起不到500ms(毫秒)的时段内发送订阅请求154。在一些示例中,客户端应用126发送查询订阅请求140,然后在发送查询订阅请求140之后100-200ms的时段内发送订阅请求154。
76.响应于订阅请求154,输送引擎122与客户端应用126建立递送信道125以将消息132流传输到客户端应用126。递送信道125与输送主题134相关联,使得通过递送信道125递送的消息132对应于输送主题134。在一些示例中,输送引擎122将客户端应用126订阅到与用户标识符146和查询词语144(和/或贡献者标识符)相对应的输送主题134。当查询订阅141处于活动时,递送信道125保持开放且是活动的。在一些示例中,输送引擎122将信道标识符指配给递送信道125。在一些示例中,输送引擎122通过网络150将信道标识符发送到客户端应用126。客户端应用126可以周期性地(例如,每两分钟)重新订阅递送信道125。客户端应用126可以响应于查询是活动的(例如,可见搜索纵列被显示在用户界面128上)而自动地发送重新订阅请求。如果查询结束(例如,纵列从用户界面128滚出),则客户端应用126可以向输送引擎122发送要从输送主题134取消订阅的消息,从而关闭递送信道125。
77.图3图示了根据一方面的描绘事件产生器系统106和订阅执行器116在事件产生器系统106处配置查询订阅141并且从事件产生器系统106接收响应事件156的示例操作的系统100。图4图示了描绘订阅执行器116和输送引擎122将递送事件160递送到输送引擎122的示例操作的系统100。
78.响应于接收到查询订阅请求140,数据查询api 118生成查询订阅141并且将其发送到事件产生器管理器108。数据查询api 118可以将查询订阅141作为thrift请求发送到事件产生器管理器108。thrift请求可以是用于在消息传递平台104的各种组件之间通信的远程过程调用系统。查询订阅141包括订阅数据142(例如,其可以包括查询词语144和用户标识符146)。在一些示例中,查询订阅141包括订阅标识符136。在一些示例中,查询订阅141包括期满时间148。在一些示例中,向事件产生器管理器108发送的查询订阅141可以包括用户标识符146和其它订阅相关数据以使得事件产生器系统106能够在响应事件156中返回它们以提供足够的上下文来水合并路由被响应事件156标识的消息132。事件产生器管理器108可以使用期满时间148来确定查询订阅141是否已超时。例如,如果时间已超过期满时间148,则事件产生器管理器108可以指示事件产生器110删除查询订阅141,从而节省资源以进行其它查询订阅141。
79.事件产生器管理器108将查询订阅141指配给事件产生器110(或一组事件产生器110)。在一些示例中,事件产生器管理器108基于用户标识符146指配查询订阅141。查询订阅141被存储在事件产生器110(或组中的每个事件产生器110)处。事件产生器110生成响应
事件156,使得响应事件156是响应于来自消息流114的消息被确定为包含查询订阅141的查询词语144而生成的。事件产生器110可以将响应事件156发布到响应事件总线123。
80.在一些示例中,收集器服务170接收响应事件156并且将响应事件156发布到响应事件总线132。在一些示例中,如本公开中稍后更详细地讨论的,收集器服务170可以去重复与同一消息132相关的响应事件156,丢弃一个或多个响应事件156使得流传输速率低于阈值水平,并且/或者在事件产生器系统106处周期性地生成关于查询订阅141的健康的状态消息。每个响应事件156包括唯一地标识与查询订阅141匹配的消息132的消息标识符158。在一些示例中,每个响应事件156包括订阅数据142(例如,查询词语144)和用户标识符146。在一些示例中,每个响应事件156包括订阅标识符136。在一些示例中,每个响应事件156仅包括消息标识符158。
81.订阅执行器116订阅响应事件总线123以获得由事件产生器系统106发布的响应事件156。通常,订阅执行器116生成(例如,水合)由消息标识符158标识的消息132并且在将完整消息132提供给输送引擎122之前应用可见性规则。在一些示例中,水合可以是指从消息标识符158和用户标识符146创建消息132,使得所生成的消息132具有与客户端应用126兼容的格式并且包括与由用户标识符146标识的用户的视角相对应的数据。在一些示例中,订阅执行器116被配置成基于消息标识符158和用户标识符146生成java脚本对象表示法(json)消息(例如,完整json消息)。当订阅执行器116生成与相应响应事件156相对应的每个消息132时,订阅执行器116将包括消息132的递送事件160发布到递送事件总线121。
82.在消息水合期间,如果订阅执行器116确定由消息标识符158标识的消息132违反可见性规则,则订阅执行器116可以丢弃响应事件156,从而在能够将实时消息132递送到客户端应用126的同时提高消息传递平台104的安全性。例如,如果响应事件156标识的消息132是由以下用户所创作的,则订阅执行器116可以丢弃该响应事件156,其中该用户限制(例如,阻挡或禁言)由用户标识符146标识的用户。
83.数据查询执行器120订阅响应事件总线123。数据查询执行器120可以监测响应事件总线123以获得由事件产生器110发布到响应事件总线123的任何响应事件156。数据查询执行器120可以与数据查询api 118进行通信以响应于从响应事件总线123获得的每个响应事件156而生成消息132。在一些示例中,数据查询api 118可以接收查询和事件两者并且使用该事件作为用于查询执行的基础。
84.例如,对于响应事件156,数据查询执行器120可以将消息标识符158和订阅元数据(例如,订阅数据142和/或订阅标识符136)递送到数据查询api 118。在一些示例中,数据查询执行器120对数据查询api 118执行thrift请求以递送消息标识符158和订阅元数据。数据查询api 118从消息标识符158和订阅元数据中提取数据并且针对响应事件156执行原始查询订阅141以生成消息132(例如,完整json消息)。数据查询执行器120从数据查询api 118接收执行结果(例如,消息132)并且在递送事件总线121上发布递送事件160。如图4所示,递送事件160包括消息132。在一些示例中,递送事件160包括标识输送主题134的输送主题数据162。
85.输送引擎122订阅递送事件总线121以监测并获得由数据查询执行器120发布的递送事件160。例如,当递送事件160被发布到递送事件总线121时,输送引擎122获得递送事件160并且基于将递送信道125映射到输送主题134的信道主题映射164来确定哪个递送信道
125要流传输被包括在递送事件160内的消息132。例如,输送主题数据162可以标识与消息132相关联的输送主题134,并且输送引擎122可以基于信道主题映射164标识适当的递送信道125以流传输消息132。输送引擎122被配置成通过递送信道125将消息132流传输到客户端应用126。
86.图5图示了针对多个递送信道125描绘输送引擎122的示例操作的系统100。例如,如果客户端应用126已建立多个查询订阅141,则输送引擎122为每个活动查询订阅141创建单独的递送信道125,然后将那些消息132通过其相应的递送信道125递送。例如,响应于查询订阅141与搜索词语“dogs”相关,输送引擎122通过网络150将从订阅执行器116接收到的消息132经由第一递送信道125-1(例如,“dogs”递送信道)传送到客户端应用126。响应于活动查询订阅141与搜索词语“cats(猫)”相关,输送引擎122通过网络150将从订阅执行器116接收到的消息132经由第二递送信道125-2(例如,“cats”通信信道)传送到客户端应用126。
87.尽管客户端应用126向消息传递平台104发送两个请求(例如,查询订阅请求140和订阅请求154)以生成并接收消息132,但是在一些示例中,客户端应用126可以与订阅执行器116或输送引擎122中的一个一起更新。在一些示例中,客户端应用126与输送引擎122一起更新。例如,对输送主题134的订阅可以在一时间间隔之后期满,除非该订阅由客户端应用126更新(例如客户端应用126必须每一段时间(例如,每2分钟)与输送引擎122一起更新或者查询订阅141期满)。
88.图6图示了根据一方面的描绘更新操作的示例操作的系统100。在一些示例中,订阅执行器116(例如,数据查询执行器120)被配置成管理订阅更新。例如,客户端应用126可以通过网络150向输送引擎122传送订阅更新请求161以更新对输送主题134的订阅。响应于订阅更新请求161,输送引擎122可以向数据查询执行器120提供输送主题数据162。输送主题数据162可以包括关于输送主题134的信息、订阅标识符136和/或关于哪个事件产生器110被指配来针对用户标识符146生成响应事件156的信息。响应于输送主题数据162,数据查询执行器120可以向事件产生器系统106传送更新调用171。
89.事件产生器管理器108可以接收更新调用171并且更新期满时间148,使得不会从事件产生器110删除查询订阅141。响应于更新调用171,事件产生器管理器108可以将状态消息166发布到响应事件总线123,该状态消息166由数据查询执行器120接收。数据查询执行器120可以在递送事件总线121上发布状态消息166,使得输送引擎122能够将状态消息166递送到客户端应用126。
90.计算设备124可以是移动计算设备(例如,智能电话、pda、平板或膝上型计算机)或非移动计算设备(例如,台式计算设备)。计算设备124还包括各种网络接口电路系统,诸如例如计算设备124能够通过其与蜂窝网络进行通信的移动网络接口、计算设备124能够通过其与wi-fi基站进行通信的wi-fi网络接口、计算设备124能够通过其与其它蓝牙设备进行通信的蓝牙网络接口、和/或使得计算设备124能够访问网络150的以太网连接或其它有线连接。
91.服务器计算机102可以是单个计算设备或者可以是通信地连接以共享工作负载和资源的两个或更多个分布式计算设备的表示。服务器计算机102可以包括至少一个处理器和非暂时性计算机可读介质,该非暂时性计算机可读介质存储可执行指令,当由所述至少一个处理器执行时,这些可执行指令使所述至少一个处理器执行本文讨论的操作。
92.图7图示了根据一方面的图1的客户端应用126的用户界面728的示例。图7的描述还引用参考图1至图6说明的组件和消息。在一些示例中,客户端应用126被配置成将多个时间线显示为单独纵列。例如,用户可以添加或移除纵列,从而添加或移除时间线。在一些示例中,指定搜索的纵列的添加发起查询订阅141。在一些示例中,纵列的移除使查询订阅141期满。在一些示例中,用户可以添加提供第一时间线730-1的第一纵列。第一时间线730-1可以在查询订阅141保持处于活动的同时显示由某个用户(例如,用户a)生成的消息732。例如,当显示第一纵列时,由用户a生成的任何消息732被显示在第一时间线730-1上。例如,用户a可以在某个时间向消息传递平台104张贴消息732,并且可以在消息732被张贴的时间附近将消息732推送到第一时间线130-1,使得用户能够查看由用户a实时地或近实时地新创建的消息732。在一些示例中,第一时间线730-1被按时间顺序呈现,使得新创建的消息732被推送到第一时间线730-1的顶部。
93.在一些示例中,用户可以添加第二纵列,该第二纵列提供与主题标签#graphql匹配的消息732的第二时间线730-2。例如,指示搜索词语“#graphql”的第二纵列的添加发起查询订阅141。第二时间线730-2可以显示包括具有搜索词语“#graphql”的内容的消息732。例如,当显示第二纵列时,在消息传递平台104上交换的包括搜索词语“#graphql”的任何消息732被流传输到第二时间线730-2。在一些示例中,第二时间线730-2按时间顺序呈现,使得包括搜索词语“#graphql”的新创建的消息732被推送到第二时间线730-2的顶部。
94.在一些示例中,用户可以添加第三纵列,该第三纵列提供包括搜索词语“graphql summit(graphql提交)”的消息732的第三时间线730-3。例如,指示搜索词语“graphql summit”的第三纵列的添加发起查询订阅141。第三时间线730-3可以显示包括与搜索词语“graphql summit”匹配的内容的消息732。例如,当显示第三纵列时,与搜索词语“graphql summit”匹配的任何消息732在查询订阅141保持处于活动的同时被流传输到第三时间线730-3。在一些示例中,第三时间线730-3被按时间顺序呈现,使得包括搜索词语“graphql summit”的新创建的消息732被推送到第三时间线730-3的顶部。
95.图8图示了根据一方面的描绘用于根据查询订阅141来流传输实时消息132的消息传递平台104的示例操作的流程图800。参考图1至图6的系统100描述流程图800。
96.操作802包括由订阅执行器116响应于从客户端应用126接收到查询订阅请求140而向事件产生器系统106传送查询订阅141。例如,数据查询api 118可以接收通过网络150从客户端应用126接收查询订阅请求140,并且数据查询api 118可以生成查询订阅141。数据查询api 118可以将查询订阅141发送到事件产生器管理器108。在一些示例中,查询订阅请求140是graphql订阅查询,其中数据查询api 118是graphql api并且数据查询执行器120是graphql执行器。在一些示例中,查询订阅请求140包括查询词语144和用户标识符146。在一些示例中,数据查询api 118可以响应于查询订阅请求140而标识输送主题134。
97.操作804包括由输送引擎122响应于对于通过网络150从客户端应用126接收到的订阅请求154的接收而在客户端应用126与输送引擎122之间创建递送信道125。例如,输送引擎122可以通过网络150从客户端应用126接收订阅请求154并且响应于接收到订阅请求154而创建递送信道125。
98.操作806包括在事件产生器系统106处响应于来自消息流114的具有满足查询订阅141的内容的消息而生成响应事件156。例如,事件产生器管理器108可以将查询订阅141指
配给一个或多个事件产生器110,其中当来自消息流114的消息满足查询订阅141时,每个事件产生器110生成响应事件156。
99.操作808包括由订阅执行器116确定由响应事件156标识的消息的作者是否已限制(例如,阻挡或禁言)与用户标识符146相关联的用户,并且操作810包括由订阅执行器116响应于用户被确定为受该作者限制而丢弃由响应事件156标识的消息。例如,在消息水合期间,如果订阅执行器116确定由消息标识符158标识的消息132违反可见性规则,则订阅执行器116可以丢弃响应事件156,从而在能够将实时消息132递送到客户端应用126的同时提高消息传递平台104的安全性。例如,如果响应事件156标识的消息132是由以下用户所创作的,则订阅执行器116可以丢弃该响应事件156,其中该用户限制(例如,阻挡或禁言)由用户标识符146标识的用户。
100.操作812包括由输送引擎122响应于用户被确定为不受作者限制而在查询订阅141处于活动的一段时间期间经由递送信道125将消息132流传输到客户端应用126的用户界面128。例如,当输送引擎122接收到递送事件160时,输送引擎122通过网络150将消息132(其不违反可见性规则)流传输到客户端应用126。
101.图9图示了根据一方面的描绘用于在消息传递平台104上生成活动查询并且接收与该活动查询匹配的消息132的流的客户端应用126的示例操作的流程图900。参考图1至图6的系统100描述流程图800。
102.操作902包括由客户端应用126通过网络150向消息传递平台104的订阅执行器116传送查询订阅请求140,其中查询订阅请求140被配置成使订阅执行器116生成要在消息传递平台104上交换的消息的消息队列112上执行的查询订阅141。
103.操作904包括由客户端应用126通过网络150向消息传递平台104的输送引擎122传送订阅请求154,其中订阅请求154被配置成使输送引擎122在输送引擎122与客户端应用126之间创建递送信道125。
104.操作906包括由客户端应用126经由递送信道125接收满足查询订阅141的条件的消息132的流,使得在查询订阅141处于活动的同时随着时间在客户端应用126的用户界面128上流传输消息132。
105.操作908包括由客户端应用126通过网络150向输送引擎122周期性地传送订阅更新请求161,其中订阅更新请求161被配置成使输送引擎122更新递送信道125并且使订阅执行器116更新查询订阅141。
106.例如,响应于订阅更新请求161,输送引擎122可以将输送主题数据162提供给数据查询执行器120。响应于输送主题数据162,数据查询执行器120可以向事件产生器系统106传送更新调用171。事件产生器管理器108可以接收更新调用171并且更新期满时间148,使得不会从事件产生器110中删除查询订阅141。响应于更新调用171,事件产生器管理器108可以将状态消息166发布到响应事件总线123,该状态消息166由数据查询执行器120接收。数据查询执行器120可以在递送事件总线121上发布状态消息166,使得输送引擎122能够将状态消息166递送到客户端应用126。因此,客户端应用126可以仅与输送引擎122一起更新,并且如下所述,消息传递平台104的结构可以使得在输送引擎122和订阅执行器116处更新查询订阅141,从而减少为了维持查询订阅141而在客户端应用126与消息传递平台104之间传送的通信量。
107.图10a是根据一方面的包括消息传递平台1004和客户端应用1026的系统1000的示意图,其中该消息传递平台能够由一个或多个服务器计算机1002执行,该客户端应用能够由计算设备1024执行。消息传递平台1004被配置成根据与来自在消息传递平台1004上交换的消息的大消息流1014的内容匹配的查询订阅1041来通过网络1050向客户端应用1026流传输实时消息1032。消息传递平台1004包括事件产生器系统1006、具有消息流114的消息队列1012、订阅执行器1016和输送引擎1022。图10b更详细地图示了事件产生器系统1006。系统1000可以是图1至图6的系统100的示例并且可以包括参考先前图讨论的任一个特征。
108.事件产生器系统1006包括事件产生器管理器1008、通信地连接到事件产生器管理器1008的事件产生器1010、以及通信地连接到事件产生器1010的收集器服务1070。事件产生器管理器1008获得查询订阅1041并且根据查询订阅1041的条件来配置事件产生器1010以匹配来自消息流1014的内容。
109.在一些示例中,事件产生器管理器1008是被配置成经由thrift请求接收查询订阅1041的api。在一些示例中,事件产生器管理器1008被配置成从订阅执行器1016接收查询订阅1041。查询订阅1041可以定义用于标识来自消息流1014的消息的条件。在一些示例中,查询订阅1041是graphql查询订阅。查询订阅1041包括提供关于查询订阅1041的信息的订阅数据。在一些示例中,查询订阅1041包括一个或多个查询词语、用户标识符、期满时间和/或订阅标识符。
110.事件产生器1010被布置在事件产生器组1013中以针对消息流1014执行相对大量的查询订阅1041。例如,事件产生器系统1006可以包括多个事件产生器组1013,诸如第一事件产生器组1013-1、第二事件产生器组1013-2、第三事件产生器组1013-3和第四事件产生器组1013-4。尽管在图10b中图示了四个事件产生器组1013,但是事件产生器组1013可以包括任何数目的事件产生器组1013。每个事件产生器组1013被配置成接收完整消息流1014。换句话说,每个事件产生器组1013被配置成独立地监测完整消息流1014。每个事件产生器组1013包括多个事件产生器1010。尽管图10b在每个事件产生器组1013内图示了四个事件产生器1010,但是每个事件产生器组1013可以包括任何数目的事件产生器1010,该任何数目在事件产生器组1013之间可以是相同或不同的数目。
111.相应事件产生器组1013内的每个事件产生器1010可以接收消息流1014的单独部分。例如,在特定事件产生器组1013内的事件产生器1010当中划分(例如,相等地划分或不等地划分)消息流1014。例如,如果在第一事件产生器组1013-1内有四个事件产生器1010,则第一事件产生器接收消息流1014的第一部分,第二事件产生器接收消息流1014的第二部分,第三事件产生器接收消息流1014的第三部分,而第四事件产生器接收消息流1014的第四部分,其中第一部分至第四部分覆盖整个消息流1014。
112.每个事件产生器组1013被分配了查询订阅1041的一部分。例如,如果存在一百个查询订阅1041,则可以将二十五个查询订阅1041分配给第一事件产生器组1013-1,可以将二十五个查询订阅1041分配给第二事件产生器组1013-2,可以将二十五个查询订阅1041分配给第三事件产生器组1013-3,并且可以将二十五个查询订阅1041分配给第四事件产生器组1013-4。然而,应注意,查询订阅1041的数目可以是数千或数百万。
113.事件产生器管理器1008可以接收查询订阅1041并且将查询订阅1041指配给事件产生器组1013中的至少一个。在一些示例中,事件产生器管理器10083基于查询订阅1041的
用户标识符将查询订阅1041指配给事件产生器组1013。在一些示例中,事件产生器管理器1008被配置成使用用户标识符来执行模操作并且基于模操作的结果来指配查询订阅1041。查询订阅1041被存储在所指配的事件产生器组1013内的每一个事件产生器1010处。
114.在一些示例中,事件产生器管理器1008将查询订阅1041指配给两个事件产生器组1013,例如,主要事件产生器组和次要事件产生器组。例如,事件产生器管理器1008可以将查询订阅1041指配给第一事件产生器组1013-1和第三事件产生器组1013-3,其中第一事件产生器组1013-1和第三事件产生器组1013-3内的每一个事件产生器1010将查询订阅1041存储在存储器中。以这种方式,如果事件产生器组1013中的一个失败,则查询订阅1041仍然能够由指配给查询订阅1041的另一个事件产生器组1013执行。
115.在一些示例中,事件产生器管理器1008被配置成监测针对每个事件产生器组1013指配和执行的查询订阅1041的数目并且被配置成增加和/或减少事件产生器组1013的数目和/或每个事件产生器组1013内的事件产生器1010的数目。例如,响应于特定事件产生器组1013中的事件产生器1010的数目在增加,每个个体事件产生器1010可以从消息流1014接收更少消息以处理,并且因此可以具有更多计算容量来处理额外的搜索。响应于增加了事件产生器组1013的数目,分配给事件产生器1010的搜索词语的数目可以减少。
116.每个事件产生器1010被配置成响应于查询订阅1041被对照来自消息流1014的相应部分的消息匹配而生成响应事件156。如关于先前图所示,每个响应事件156包括消息标识符以及提供关于查询订阅1041的信息的订阅数据。另外,每个事件产生器1010被配置成周期性地生成指示相应事件产生器1010处的查询订阅1041的健康状态的状态响应1075。每个状态响应1075可以指示是否存在与执行查询订阅1041相关联的错误。例如,状态响应1075可以指示表明在特定事件产生器1010处处理查询订阅1041时存在错误的失败状态,或者状态响应1075可以指示表明查询订阅1041在特定事件产生器1010处适当地起作用的正常状态。
117.如上所指示的,在一些示例中,查询订阅1041与期满时间相关联。在一些示例中,事件产生器管理器1008被配置成监测查询订阅1041在所指配的事件产生器1010处处于活动的时间量,并且如果时间超过期满时间所指定的值,则事件产生器管理器1008可以通过指令所指配的事件产生器1010从存储器中删除查询订阅1041来停用查询订阅1041,从而节省事件产生器系统1006处的资源。然而,事件产生器管理器1008可以在期满时间期满之前接收更新调用,这更新期满时间,从而更新查询订阅1041。
118.收集器服务1070被配置成从事件产生器1010接收响应事件1056并且将响应事件1056发布到响应事件总线1023。在一些示例中,收集器服务1070可以确定由响应事件标识的消息是否已经被发布到响应事件总线1023,然后响应于消息被确定为已经被发布到响应事件总线1023而丢弃响应事件1056以避免将重复消息发送到客户端应用。在一些示例中,收集器服务1070可以确定一段时间(例如,一秒)内的响应事件1056的数目是否已超过流传输速率阈值,并且丢弃一个或多个响应事件1056(例如,不在响应事件总线123上发布一个或多个响应事件1056)。
119.另外,收集器服务1070被配置成从事件产生器1010接收状态响应1075并且通过在响应事件总线1023上发布状态消息来周期性地发送状态消息1066(例如,失败、正常和/或更新)。如果状态消息1066指示错误,则可能要求客户端应用1026传送查询订阅请求和订阅
请求以重启查询订阅1041。例如,收集器服务1070可以从事件产生器1010接收状态响应1075,基于状态响应1075确定查询订阅1041的健康状态,并且发起指示查询订阅1041的健康状态的状态消息的传输。
120.图11图示了根据一方面的收集器服务1170的示例。收集器服务1170可以是图10b的收集器服务1070的示例并且可以包括参考先前图讨论的任一个特征。收集器服务1170可以在将响应事件1056发布到响应事件总线1023之前与存储器缓存1180相结合地操作以去重复由响应事件1056标识的消息1032和/或降低流传输速率,使得消息1032在流传输速率阈值1173以下被递送到客户端应用1026。另外,收集器服务1170可以与存储器缓存1180相结合地操作以确定查询订阅1041的健康状态以向客户端应用1026提供状态消息1066或者试图重启查询订阅1041。
121.收集器服务1170可以包括去重复器1172,该去重复器被配置成去重复那些标识已经递送到客户端应用1026的消息1032的响应事件1056。在一些示例中,查询订阅1041被指配给两个事件产生器组1013(其中的每一个接收完整消息流1014)以保护免于事件产生器失败,这可以使事件产生器1010标识重复消息1032。然而,去重复器1172被配置成标识重复,使得同一消息不会被多次提供给客户端应用1026。
122.当收集器服务1170将响应事件1056发布到响应事件总线1023时,收集器服务1170将响应事件1056存储在存储器缓存1180中。响应于接收到新响应事件1056,去重复器1172通过查询存储器缓存1180来确定新响应事件1056的消息标识符是否被存储在存储器缓存1180中。响应于消息标识符未被存储在存储器缓存1180中(例如,指示它不是重复),收集器服务1170在响应事件总线1023上发布新响应事件1056并且将新响应事件1056存储在存储器缓存1180中。响应于新响应事件1056的消息标识符被存储在存储器缓存1180中(例如,指示它是重复),去重复器1172被配置成丢弃新响应事件1056。
123.收集器服务1170可以包括状态消息处理程序1174,该状态消息处理程序被配置成通过查询存储器缓存1180中的状态响应1075来确定查询订阅1041的健康状态。例如,收集器服务1170可以从事件产生器1010周期性地接收状态响应1075并且将状态响应1075存储在存储器缓存1180中。状态消息处理程序1174可以周期性地查询存储器缓存1180以针对特定查询订阅1041自所指配的事件产生器1010从存储器缓存1180获得状态响应1075,然后通过在响应事件总线123上发布状态消息10066来传送状态消息1066。在一些示例中,如果一个或多个状态响应1075指示失败状态,则状态消息1066可以指示失败状态,这可能要求客户端应用1026重新生成查询订阅1041(例如,可能要求传送查询订阅请求和订阅请求)。如果大多数或所有状态响应1075指示正常状态,则状态消息1066可以指示正常状态。
124.在一些示例中,收集器服务1170包括订阅重启器1176,该订阅重启器被配置成在事件产生器1010处重启查询订阅1041。如果状态响应1075指示在一个或多个事件产生器1010处的查询订阅1041存在错误,则订阅重启器1176可以基于与响应事件1056相关联的订阅数据确定查询订阅1041是否是可修复的,并且如果是这样的话,则订阅重启器1176可以将订阅数据传送到报告消极状态响应1075的一个或多个事件产生器110。
125.在一些示例中,收集器服务1170包括限额检查器1178,该限额检查器被配置成丢弃一个或多个响应事件1056以控制由响应事件1056标识的消息1032被递送到客户端应用1026的流传输速率是等于或小于流传输速率阈值1173的。在一些示例中,流传输速率阈值
1173是每秒三条消息至每秒20条消息的范围内的值。在一些示例中,流传输速率阈值1173是每秒10条消息。在一些示例中,限额检查器1178被配置成响应于先前接收到的响应事件1056的数目在一段时间内超过阈值量(例如,新响应事件1056是一秒内的第十一条消息而阈值是每秒十条消息)而丢弃新响应事件1056。然而,如果先前叙述的响应事件1056的数目在一段时间内等于或小于阈值量,则收集器服务1170可以将新响应事件1056发布到响应事件总线1023。
126.如上所述,收集器服务1170可以将响应事件1056发布到响应事件总线1023并且将所发布的响应事件1056存储在存储器缓存1180中。响应于新响应事件1056,限额检查器1178可以查询存储器缓存1180以确定在一段时间内存储在存储器缓存1180中的响应事件1056的数目,然后响应于存储在存储器缓存1180中的响应事件1056的数目在一段时间内超过阈值量而丢弃新响应事件1056。
127.在一些示例中,限额检查器1178被配置成接收由响应事件156标识的消息1032的参与概率度量1177,其中参与概率度量1177指示对消息1032的参与的预测水平。限额检查器1178被配置成基于参与概率度量1177丢弃一个或多个响应事件1056,使得流传输速率等于或小于流传输速率阈值1173。例如,用户可以通过对消息1032收藏、重新共享和/或评论来参与消息1032,这可以被认为是积极结果。在一些示例中,消息传递平台1004可以包括预测对要递送到用户的消息1032的积极参与水平(例如,用户参与(例如,收藏、重新共享和/或评论)消息1032的可能性有多大)的机器学习资源,并且限额检查器1178可以接收那些参与概率度量1177。如果特定消息1032的参与概率度量1177低于阈值水平,则限额检查器1178可以丢弃该消息1032以便控制流传输速率。在一些示例中,参与概率度量1177包括预测的消极结果,例如,用户可能发现消息1032不当的概率。在这些示例中,基于参与概率度量1177,限额检查器1178可以丢弃具有被认为不当(例如,包含不当内容)的更高可能性的消息1032。
128.在一些示例中,限额检查器1178被配置成接收由响应事件1056标识的消息1032的消息健康度量1179,其中消息健康度量1179指示违反消息传递平台1004的一个或多个条款的风险水平(例如,不当行为、仇恨行为、威胁等)。限额检查器1178被配置成基于消息健康度量1179丢弃一个或多个响应事件1056,使得流传输速率等于或小于流传输速率阈值1173。
129.图12图示了根据一方面的收集器服务1270的示例。收集器服务1270可以是图11的收集器服务1170的示例并且可以包括参考先前图描述的任一个特征。收集器服务1270可以包括多个收集器服务实例1271,诸如第一收集器服务实例1271-1、第二收集器服务实例1271-2和第三收集器服务实例1271-3。尽管在图12中图示了三个收集器服务实例1271,但是收集器服务1270可以包括任何数目的收集器服务实例1271。每个收集器服务实例1271可以接收响应事件1056和/或状态响应1075的单独部分。例如,第一收集器服务实例1271-1可以接收响应事件1056和/或状态响应1075的第一部分,第二收集器服务实例1271-2可以接收响应事件1056和/或状态响应1075的第二部分,而第三收集器服务实例1271-3可以接收响应事件1056和/或状态响应1075的第三部分。每个收集器服务实例1271可以是图11的收集器服务1170的单独实例。例如,每个收集器服务实例1271可以执行图11的收集器服务1170的任一个操作。例如,每一个收集器服务实例1271可以包括去重复器1172、状态消息处
理程序1174、订阅重启器1176和/或限额检查器1178的功能性。
130.在一些示例中,收集器服务1270被配置成执行两层流传输速率调整过程。例如,关于第一层,每个收集器服务实例1271可以接收响应事件1056的单独部分并且通过丢弃一个或多个响应事件1056来获得响应事件1056的子集,使得每个子集包括数目等于或小于个体流传输速率阈值1284的响应事件10056。关于第二层,每个收集器服务实例1271将其子集存储在存储器缓存1180中,并且收集器服务实例1271中的至少一个将子集聚合并且从聚合子集中丢弃一个或多个响应事件1056,使得聚合子集包括数目等于或小于流传输速率阈值1173的响应事件1056。
131.更详细地,关于第一层,第一收集器服务实例1271-1可以接收响应事件1056的第一部分并且通过丢弃一个或多个响应事件1056来获得那些响应事件1056的第一子集以提供等于或小于个体流传输速率阈值1284的流传输速率。如果个体流传输速率阈值是每秒四条消息,则第一收集器服务实例1271-1丢弃在一秒内超过四条的任何消息并且将第一子集存储在存储器缓存1180中。第二收集器服务实例1271-2可以接收响应事件的第二部分1056并且通过丢弃一个或多个响应事件1056来获得那些响应事件1056的第二子集以提供等于或小于个体流传输速率阈值1284的流传输速率。如果个体流传输速率阈值是每秒四条消息,则第二收集器服务实例1271-2丢弃在一秒内超过四条的任何消息并且将第二子集存储在存储器缓存1180中。类似地,第三收集器服务实例1271-3可以接收响应事件1056的第三部分并且通过丢弃一个或多个响应事件1056来获得那些响应事件1056的第三子集以提供等于或小于个体流传输速率阈值1284的流传输速率。如果个体流传输速率阈值是每秒四条消息,则第三收集器服务实例1271-3丢弃在一秒内超过四条的任何消息并且将第三子集存储在存储器缓存1180中。
132.此时,消息的总数是十二,并且流传输速率阈值1173可以是每秒十条消息。关于第二层,收集器服务实例1271中的至少一个将第一子集、第二子集和第三子集聚合并且从聚合子集中丢弃一个或多个响应事件1056,使得聚合子集包括数目等于或小于流传输速率阈值1173的响应事件1056。如果流传输速率阈值1173是每秒十条消息,则收集器服务实例1271中的至少一个丢弃两个响应事件156并且将十个响应事件1056发布到响应事件总线1023。
133.在一些示例中,收集器服务1270被配置成执行两层去重复过程。例如,关于第一层,每个收集器服务实例1271可以接收响应事件156的单独部分并且移除标识相同消息1032的任何响应事件1056。每个收集器服务实例1271可以将其相应组的响应事件1056存储在存储器缓存1180中。收集器服务实例1271中的至少一个可以查询存储器缓存1180以聚合组并且从聚合组中丢弃标识相同消息1032的任何响应事件1056。
134.图13图示了根据一方面的描绘系统1000的示例操作的流程图1300。尽管参考图10a和图10b的系统1000讨论流程图,但是图13的操作可以适用于本文讨论的任一个系统。
135.操作1302包括由事件产生器管理器1008接收查询订阅1041以与包括了在能够由服务器计算机1002执行的消息传递平台1004上交换的消息的消息流114的消息队列1012中的内容进行匹配,其中消息传递平台1004被配置成将消息1032递送到能够由计算设备1024执行的客户端应用1026的用户界面。
136.操作1304包括由事件产生器管理器1008将查询订阅1041指配给多个事件产生器
组1013中的一个事件产生器组1013,其中每个事件产生器组1013被配置成从消息队列1012接收消息的消息流1014,每个事件产生器组1013包括多个事件产生器1010,并且每个事件产生器1010被配置成接收消息的消息流1014的单独部分。
137.操作1306包括由个体事件产生器1010响应于来自消息的消息流114的相应部分的消息包括查询订阅1041的查询词语而生成响应事件1056。
138.操作1308包括由收集器服务1070将响应事件1056发布到响应事件总线1023,其中响应事件1056包括要递送到客户端应用1026的消息1032的消息标识符。
139.图14图示了根据一方面的描绘在图11的收集器服务1170和/或图12的收集器服务1270情况下图10a和图10b的系统1000的示例操作的流程图1400。然而,图14的操作可以适用于本文讨论的任一个系统。
140.操作1402包括接收在能够由服务器计算机1002执行的消息传递平台1004上交换的消息的消息流1014,其中消息传递平台1004被配置成将消息1032递送到能够由计算设备1024执行的客户端应用1026的用户界面。
141.操作1404包括接收针对消息传递平台1004上的活动查询的查询订阅1041。
142.操作1406包括在查询订阅1041处于活动的同时生成响应事件1056,使得响应事件1056是响应于消息的消息流1014的包括查询订阅1041的查询词语的消息而生成的。
143.操作1408包括一个或多个丢弃响应事件1056以将由响应事件1056标识的消息被递送到客户端应用1026的流传输速率控制成等于或小于流传输速率阈值1173。
144.操作1410包括通过网络1050以等于或小于流传输速率阈值1173的方式将消息1032递送到客户端应用1026。
145.在以上描述中,阐述了许多细节。然而,对于受益于本公开的本领域普通技术人员而言将显而易见的是,可以在没有这些特定细节的情况下实践本公开的实现方式。在一些情况下,以框图形式而不是详细地示出公知结构和设备,以便避免使描述混淆。
146.详细描述的一些部分是按在计算机存储器内对数据比特的操作的算法和符号表示呈现的。这些算法描述和表示是由数据处理领域的技术人员使用来将他们的工作本质最有效地传达给本领域其它技术人员的手段。算法在这里并通常被构思为导致期望结果的步骤的自洽序列。这些步骤是要求对物理量进行物理操纵的步骤。通常,尽管不一定,但是这些量采取能够被存储、转移、组合、比较和以其它方式操纵的电或磁信号的形式。有时主要出于常见用法的原因,将这些信号称为比特、值、元素、符号、字符、术语、数字等已被证明是方便的。
147.然而,应该记住,所有这些和类似术语都将与适当的物理量相关联并且仅仅是应用于这些量的方便标签。除非如从以上讨论中显而易见的那样另外具体地陈述,否则应领会,在整个描述中,利用诸如“标识”、“确定”、“计算”、“更新”、“传送”、“接收”、“生成”、“改变”等的术语的讨论是指计算机系统或类似电子计算设备的动作和过程,该计算机系统或类似电子计算设备将被表示为计算机系统的寄存器和存储器内的物理(例如,电子)量的数据操纵并变换成被类似地表示为计算机系统存储器或寄存器或其它此类信息存储、传输或显示设备内的物理量的其它数据。
148.本公开的实现方式还涉及一种用于执行本文操作的装置。此装置可以是为所需目的专门构造的,或者它可以包括通过存储在计算机中的计算机程序选择性地激活或重新配
置的通用计算机。这样的计算机程序可以被存储在非暂时性计算机可读存储介质中,所述非暂时性计算机可读存储介质诸如但不限于包括软盘、光盘、cd-rom和磁光盘的任何类型的盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡、闪速存储器,或适合于存储电子指令的任何类型的介质。
149.单词“示例”或“示例性”在本文中用于意指用作示例、实例或图示。在本文中描述为“示例”或“示例性”的任何方面或设计不一定被解释为优于其它方面或设计优选或有利的。相反,单词“示例”或“示例性”的使用旨在以具体方式呈现构思。如本技术中使用的,术语“或”旨在意指包括性“或”而不是排他性“或”。也就是说,除非另外指定,或者从上下文中清楚,否则“x包括a或b”旨在意指自然包括性排列组合中的任一个。也就是说,如果x包括a;x包括b;或者x包括a和b两者,则在前面实例中的任一个下满足“x包括a或b”。另外,除非另外指定或者从上下文中清楚为针对单数形式,否则本技术和所附权利要求中使用的冠词“一”和“一个”通常应该被解释成意指“一个或多个”。此外,除非如此描述,否则对于术语“实现方式”或“一个实施例”或“实现方式”或“一个实现方式”的使用自始至终都不旨在意指同一实施例或实现方式。此外,如本文所使用的术语“第一”、“第二”、“第三”、“第四”等意在作为用于区分不同元件的标签,而可能不一定具有根据其数值指定的顺序含义。
150.本文呈现的算法和显示与任何特定计算机或其它装置不内在相关。各种通用系统可以依照本文教导与程序一起使用,或者可以证明将更专门的装置构造成执行所需方法步骤是方便的。各种这些系统所需要的结构将从下面的描述中出现。另外,不参考任何特定编程语言描述本公开。应领会,可以使用各种编程语言来实现如本文所描述的本公开的教导。
151.以上描述阐述诸如特定系统、组件、方法等的示例的许多特定细节,以便提供对本公开的若干实现方式的良好理解。然而,对本领域技术人员而言将显而易见的是,可以在没有这些特定细节的情况下实践本公开的至少一些实现方式。在其它实例中,公知组件或方法未被详细地描述或者以简单框图格式呈现,以便避免不必要地使本公开混淆。因此,上面阐述的特定细节仅仅是示例。特定实现方式可以与这些示例细节不同并且仍然被设想为在本公开的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1