将消息从消息源传送至订阅接收者的制作方法

文档序号:6360999阅读:160来源:国知局
专利名称:将消息从消息源传送至订阅接收者的制作方法
将消息从消息源传送至订阅接收者背景在计算领域中,多种场景涉及消息从一组消息源到一组接收者的传送,其中各个接收者可订阅一个或多个消息源以从中接收消息。第一个此类场景涉及社交网络,其中每个用户可订阅一个或多个其他用户,且其中用户可编写消息,该消息将被传送至订阅该作者的每个其他用户。第二个此类场景涉及事件公布和订阅模型,其中消息源(包括,例如,个人、组织、设备或软件程序)可产生事件的通知,且其中多个接收者(也包括,例如,个人、组织、设备或软件进程)可订阅消息源以接收由消息源所产生的事件的通知。消息服务器可被配置成接收来自多个消息源的消息,并基于接收者的请求(例如,将待传送给接收者的消息储存在消息队列中,直到接收者请求传送)或按照推送模型(例如,其中消息服务器在接收到来自接收者所订阅的消息源的消息时主动并积极地通知接收者)将消息分发给接收者。

发明内容
提供本发明内容以便以简化形式介绍将在以下具体实施方式
中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键因素或必要特征,也不旨在用于限定所要求保护的主题的范围。用于接收来自多个消息源的一组消息并将消息传送至订阅相应消息源的接收者的消息服务器的配置可能面临挑战。作为第一示例,消息服务器可被配置成对于相应的接收者产生单独的消息队列,并且在接收到来自消息源的消息时,将消息的副本放到订阅该消息源的每个接收者的消息队列中。然而,该示例不能很好地扩展,因为消息源可能具有大量的订阅接收者(例如社交网络场景下的受欢迎用户可能被数百万用户所订阅),而且消息源发出的每个消息可能导致该消息的非常大数量的副本。作为第二示例,消息服务器可被配置成对于各个消息源产生单独的消息队列,并在接收到来自接收者的呈现消息的请求时,从接收者所订阅的每个消息源的消息队列检索这些消息。然而,如果消息源被许多接收者所订阅,则该消息服务器可能不得不现场应付对于来自该消息源的消息的非常大数量的查询。在这些示例的任一个中,扩展性是潜在的问题;消息服务器的配置不容易利于添加更多消息源、添加更多接收者、或管理接收者对消息源的高容量的订阅。本申请中呈现了用于配置消息服务器以基于订阅模型来处理从一组消息源到一组接收者的消息的传送的技术。单个消息服务器(诸如单个计算机)可被配置成接收并存储消息以传送至一组接收者,且可存储用于各个接收者的接收者概况,该接收者概况指示接收者所订阅的消息源。消息服务器还可产生订阅过滤器,订阅过滤器可指示对于各个消息源是否有至少一个接收者订阅该消息源。在接收到来自消息源的消息时,消息服务器就可检查订阅过滤器以确定是否有至少一个接收者订阅该消息的消息源。如果是,则该消息源可被配置成接收该消息,并使该消息与订阅该消息源的接收者相关联(基于接收者的接收者概况)。如果否,则该消息源可简单地丢弃该消息。当接收者请求接收消息时,消息服务器可在所存储的消息中搜索与接收者相关联的那些消息,并可将相关联的消息呈现给接收者。例如,通过提供用于确定特定传入消息将被保留还是被丢弃的高效机制,并通过即使消息被多个接收者订阅也能只存储该消息的单个副本,该配置会是有优势的。例如,通过将订阅过滤器实现为可允许空间高效和处理高效的确定的布隆过滤器(bloom filter),可实现附加的效率。通过提供一组消息服务器,每个消息服务器被分配以特定的接收者组,并存储各个接收者的接收者概况,可实现附加的优势。消息服务器组的消息服务器可共享分配映射,该分配映射标识特定接收者所被分配給的消息服务器。此外,每个消息服务器可与其它消息服务器共享它的订阅过滤器。从而消息服务器可被配置成在接收到来自消息源的消息时,就咨询每个另一消息服务器的订阅过滤器,以确定被分配给另一消息服务器的任何接收者是否订阅了该消息源,且如果被分配给另一消息服务器的至少一个接收者订阅了该消息源,则可将该消息仅转发给该另一消息服务器。以此方式,消息服务器可被配置成,通过仅向具有订阅了该消息的消息源的一个或多个接收者的消息服务器发送消息,有效地利用了网络业务量。此外,该配置促进了消息服务器组的扩展性,因为通过添加新的消息服务器并将接收者分配给新的消息服务器,简单地增大了容量。
通过将相似的接收者分配给相应的消息服务器,使得消息服务器的接收者更可能订阅相似类型的消息源,可实现更高的效率。例如,构成社交网络的消息服务器组可被配置成将相似的接收者组分配给特定的消息服务器,因为此类相似的用户更可能订阅相同的消息源(例如,在相似的用户组中受欢迎的消息作者)。与在许多消息服务器上分配该相似用户组(可能涉及从受欢迎的消息作者向许多消息服务器发送相同的消息)相比,该分配可将此类消息的发送和存储合并为针对这些相似用户所被分配給的一个消息服务器。为实现上述内容和相关目的,以下描述和附图阐述了各个说明性方面和实现。这些方面和实现仅指示可以使用一个或多个方面的各种方式中的一些。结合附图阅读以下详细描述,则本公开的其他方面、优点、以及新颖特征将变得显而易见。附图描述图I是描绘社交网络的示例性场景的图示,该社交网络包括订阅以接收来自其他用户的消息的用户。图2是描绘社交网络的示例性场景的图示,其中发送用户将消息发送至接收用户,接收用户订阅以接收来自相应发送用户的消息。图3是描绘消息服务器对消息从发送用户到接收用户的传送进行处理的第一配置的示例性场景的图示。图4是描绘消息服务器对从发送用户到接收用户的传送进行处理的第二配置的示例性场景的图示。图5是描绘根据本申请所提出的技术被配置成对消息从消息源到接收者的传送进行处理的消息服务器的示例性场景的图示。图6是描绘根据本申请所提出的技术的对消息从消息源到接收者的传送进行处理的消息服务器的示例性场景的图示。图7是示出配置消息服务器以将消息源所产生的消息分别传送至被分配给该消息服务器的至少一个接收者的示例性方法的流程图。图8是示出用于将消息源所产生的消息分别传送至被分配给消息服务器的至少一个接收者的示例性系统的组件框图。
图9是包括被配置成实现本申请中所陈述的措施中的一个或多个措施的处理器可执行指令的示例性计算机可读介质的图示。

图10是描绘使用布隆过滤器作为订阅过滤器的示例性场景的图示。图11是描绘两个消息服务器在消息服务器组中进行互操作的示例性场景的图
/Jn ο图12是描绘根据人口学特征将用户分配为消息服务器的接收者的示例性场景的图示。图13是描绘消息服务器在消息服务器组中的互操作以将从多个消息源接收的一组消息分发给订阅接收者的示例性场景的图示。图14示出其中可实现本文中所述的措施中的一个或多个措施的示例性计算环·境。
具体实施例方式现在参考附图来描述所要求保护的主题,所有附图中使用相同的附图标号来指代相同的元素。在以下描述中,为解释起见,阐明了众多具体细节以提供对所要求保护的主题的全面理解。然而,很明显,所要求保护的主题可以在没有这些具体细节的情况下实施。在其他情况下,以框图形式示出了各个结构和设备以便于描述所要求保护的主题。在计算领域中,许多场景涉及基于相应接收者对一个或多个消息源的订阅,从一个或多个消息源到一个或多个接收者的消息的传送。作为第一示例,社交网络可包括编写消息的一组用户,并且可允许用户订阅其他用户以接收由其他用户编写的消息。作为第二示例,一组博客作者可编写帖子,且用户可订阅多个博客作者以接收发布至相应博客的帖子。作为第三示例,邮件系统可涉及一组邮件列表,且多个用户可订阅一个或多个邮件列表以接收特定邮件列表的消息。作为第四示例,事件公布和订阅系统可描绘一组事件源,每组事件源可基于检测到特定事件而发出通知,以及多个事件监视器可订阅一个或多个事件源以接收来自此类事件源的所检测到的事件的通知。在这些和其他场景中,消息源和/或接收者可包括人类(例如个人、个人团体)和组织(例如企业或学术机构)或自动代理(例如硬件设备和软件进程)。并且,在这些和其他场景中,接收者可订阅多个消息源,或消息源可选择订阅到该消息源的接收者,或外部代理可定义接收者对消息源的订阅。此外,在某些场景中,消息源和接收者可包括不同组的代理,而在其他场景中,一个或多个代理可既作为消息源也作为接收者。图1-2 —起示出了将消息从消息源传送到接收者的示例性场景,具体被示为包括一组用户14的社交网络12。在图I的示例性场景中,相应的诸个用户14可与其他用户14建立订阅16,其中从第一用户14到第二用户14的箭头表示第一用户14 (作为接收者20)订阅第二用户14的消息(作为消息源)。一些用户14 (诸如,第八用户14)可与多个其他用户14建立订阅16 ;其他用户14 (诸如,第二用户14)可被多个其他用户14订阅;以及还有其他用户14(诸如,第五用户14和第六用户14)可互相建立订阅16。因此,这些用户14可建立订阅16的网。图2示出了示例性场景30,其中在图I中所示的用户14和订阅16可交换消息32。例如,当第三用户14发布第一消息32时,订阅第三用户14的用户14(包括第五用户14和第八用户14)可接收消息32的副本。类似地,当第八用户14发布第二消息32 (可能包括第八用户14希望重播的第一消息32的副本,或不同的消息32)时,已与第八用户14建立订阅16的用户14 (例如第六用户14和第七用户14)接收第二消息32。以这种方式,消息32可基于其中建立的订阅16的网从消息源18传送至接收者20。为了能够实现这种场景,多个系统可被设计成接受接收者20对消息源18的订阅16,并基于此类订阅16来执行消息32的传送。一些系统相对于其他系统可能呈现出一些优势,例如对于不同场景易于实现或更有效率。在多种实现方式之间可能差别相当大的重要方面涉及在不耗尽系统的计算资源的情况下,该系统在消息源18、接收者20和可建立的订阅16的数量和其中可交换的消息32的数量方面的可扩展性。可扩展性也可以是涉及并行处理的实现方式的重要因素,诸如包括一组服务器的服务器场的并行处理,每个服务器被配置为处理消息32的交换的处理任务的一部分(例如,从消息源18接收消息32、标识消息32的接收者20、存储代表消息32到接收者20的传送的数据、以及将消息32呈现给接收者20);如果新的服务器被加入到服务器场,一些配置可提供与服务器的数量的增加成比例的改进性能,而其他配置可提供较少或没有优势。
·
图3示出了描绘用于将消息32从消息源16传送至接收者20的消息服务器的第一配置的示例性场景40。在该示例性场景40中,消息服务器以邮件服务器的方式来配置,其中每个用户14被分配以消息存储44,消息存储44存储从用户14订阅的消息源20接收的和将被传送至用户14的消息32。当消息源18产生消息32时(在社交网络的示例性场景中,当用户14发布消息32时),消息32的副本被传送至具有对消息源18的订阅16的每个用户14的消息存储44。该配置可具有特殊优势,例如,该配置可易于实现。在该配置中,由于接收者20的所有消息32被存储在一个位置,因此消息32也可被容易且迅速地传送至接收者20,并且消耗较少的计算资源。然而,该配置还可具有显著的缺点。作为第一示例,消息32的复制可出现显著的效率低下。在图3的示例性场景40中,由单个用户14所产生的单个消息32被存储为具有对第一用户14的订阅16的五个接收者20的五个复制副本。在涉及对特定消息源18的大量订阅16的场景中,例如社交网络上数百万的接收者20具有对其的订阅16的名人,这种复制可能变得难以维持。除了过度消耗存储空间外,该场景还可能耗尽网络带宽,例如,如果具有对多产的名人的订阅16的多个接收者20的消息存储44被存储在服务器场中的多个不同的服务器上,名人所产生的每个消息32的百万份副本可通过连接服务器场的局域网来传输。该复制还可变得不可持续,例如,如果消息32包括大量数据(诸如视频或其他大数据对象)。此外,增加消息服务器组中的消息服务器的数量可能不会提高该配置的性能,例如,图3的示例性场景40的性能限制瓶颈可以是主控第一用户14的服务器的出站带宽。图4示出了展示用于将消息32从消息源16传送至接收者20的消息服务器的第二配置的示例性场景50。在该示例性场景50中,消息服务器以web服务器的方式来配置,使得将消息源18的消息32存储在消息存储44中,且当用户14请求呈现消息32时,用户14可查询用户对其具有订阅16的相应消息源18的消息存储44。与图3的示例性场景40中所示的配置相比,因为仅保存一个副本,该配置可通过减少消息存储44中的复制消息32的存储而获益。然而,该配置涉及由接收者20提交的对消息存储44的多个查询,例如,当数百万的接收者20对其具有订阅16的名人用户将消息32存储到消息存储44中时,消息存储44则会接收来自接收者20关于新消息32的数百万次查询。此外,消息源14的消息存储44的出站网络容量可导致性能限制瓶颈,并且不能通过增加更多消息存储44来得以缓和。此外,当具有对多个消息源18的订阅16的接收者20请求接收消息32时可出现性能问题,因为每个订阅16可产生对相应消息源18的消息存储44的单独的查询。大量的查询会消耗大量的计算和网络资源,而且在相应查询的查询结果的检索期间消息32向接收者20的呈现可能会延迟。鉴于图3和图4的示例性实现方式的不足,可以理解,有效而及时的、可扩展以支持许多消息源18、接收者20、订阅16和消息32且具有足够性能的消息服务器的体系结构的实现可出现重大挑战。此外,可能有利的是选择体系结构,该体系结构如果在消息服务器组的相应诸个消息服务器上实现,则在扩展以包括附加的消息服务器时会呈现成比例的性能优势。本文提出一种用于配置消息服务器的技术,基于相应接收者20对相应消息源18的订阅16,将消息32从一组消息源18传送至一组接收者20。这些技术可在单个消息服务 器上或在互操作以完成此类任务的消息服务器组的相应诸个成员上实现。图5示出了描绘可与一组接收器20建立订阅16的一组消息源18的示例性场景60。消息源18和接收者20在该示例性场景60中被示为个人,但可替代地包括多个个人的组、组织、或诸如设备或软件进程之类的自动化代理。在该示例性场景中,两个消息服务器62被配置成接收来自消息源18的消息32,并基于各个接收者20对相应消息源18的订阅16而将消息32传送至接收者20。(本文中所提出的技术的某些变型涉及消息服务器62的合作,但是在该示例性场景60中,消息服务器62独立地操作以服务不同的接收者20的组。)根据本文中所提出的技术,消息服务器62按照以下方式配置。消息服务器62包括消息存储68,消息存储68存储从消息源18接收的并将被传送至接收者20的消息32。消息服务器62还存储用于相应诸个接收者20的接收者概况64的组,每个接收者概况64包括标识接收者20所订阅的消息源18的零个或更多个订阅16。基于这些接收者概况64,消息服务器62产生订阅过滤器66,订阅过滤器66指示对于各个消息源18是否有至少一个接收者20订阅该消息源18。例如,基于由第一消息服务器62存储的第一组接收者20的接收者概况64,第一消息服务器62的订阅过滤器66指示至少一个接收者20订阅第一消息源18、第二消息源18、第四消息源18、以及第五消息源18中的每一个,但没有接收者20订阅第三消息源18或第六消息源18。相反,基于由第二消息服务器62所存储的第二组接收者20的接收者概况64,第二消息服务器62的订阅过滤器66指示至少一个接收者20订阅第二消息源18、第三消息源18、第四消息源18、以及第六消息源18中的每一个,但没有接收者20订阅第一消息源18或第五消息源18。订阅过滤器66可以多种方式来实现,例如,作为包括布尔值的一组位标志、作为所订阅的消息源18的排序列表或二叉树(并省略其他消息源18以指示缺乏此类订阅),或布隆过滤器。图6示出了示例性场景70,其中在图5中示出并相应地配置的第一消息服务器62从消息源18接收消息32并将消息32发送至接收者20。在该示例性场景70中,每个消息源18将消息32发送至消息服务器62,消息服务器62尽力存储和组织消息32以在被请求时将消息32传送至接收者20。对于从相应的消息源18接收的相应的消息32,消息服务器62参考订阅过滤器66以确定是否有至少一个接收者20具有对消息源18的订阅16。如果没有,则消息服务器62简单地丢弃消息32。但是如果至少一个接收者20订阅消息源18,则消息服务器62将消息32存储在消息存储68中。此外,消息服务器62检查接收者概况64以标识订阅消息源18的接收者20,并将消息32与这些接收者20相关联,例如,通过采用接收者20的标识符(例如名称)来对消息32进行注释。随后,在接收到来自接收者20的呈现来自该接收者20所订阅的消息源18的消息32的请求时,消息服务器62就可从消息存储68检索与接收者20相关联的该消息32,且可向接收者20呈现所检索到的消息32。例如,当第一接收者20提交接收消息的接收请求74时,消息服务器62可从消息存储68检索第一消息32和第二消息32,且可向第一接收者20呈现这些检索到的消息32 ;且当第二接收者20提交接收消息的接收请求74时,消息服务器62可从消息存储68检索第四消息32和第五消息32,且可向第二接收者20呈现这些检索到的消息32。以此方式,消息服务器62可被配置成基于各个接收者20对相应消息32的消息源18的订阅16来接收、存储消息32并向接收者20呈现消息32。本申请中呈现的技术的在图5和6中示出的实现方式相对于其它技术的实现方式 (诸如图3和4中呈现的实现方式)可促进或改善若干优势。作为第一示例,使用订阅过滤器66使消息服务器62能丢弃无法传送至任何接收者20的消息32,由此有效利用了消息存储68的存储空间。作为第二示例,图5-6的实现方式可允许消息32的高效存储,诸如通过针对由消息服务器62所服务的接收者20的整个组而存储消息32的一个副本,而不是像图3的示例性场景40中那样针对每个订阅接收者20而存储消息32的副本。作为第三示例,相比于如图4的示例性场景50中那样被提交给受欢迎用户14的消息存储44的由接收者20做出的大量查询,在接收消息32时与用户20的关联促进了对要被传送至特定接收者20的消息32的高效检索。实际上,消息32向接收者20的传送可能不消耗消息服务器组的消息服务器62中的网络资源,因为在向接收者20呈现消息32时所利用的所有消息32和订阅信息由消息服务器62本地存储。作为第四示例,在涉及一组消息服务器62的场景中,通过这些技术设计的体系结构可通过引入附加的消息服务器62而被扩展以支持附加的诸个接收者20,每个附加的消息服务器62被配置成服务接收者20的特定组。例如,在图5中,第一消息存储62服务第一组接收者20,而第二消息存储62服务第二组接收者20。虽然在被分配给每个消息服务器62的至少一个接收者20订阅了消息32的消息源18时每个消息服务器62可能不得不存储消息32的复制副本,但相比于如图3的示例性场景40那样针对每个订阅接收者14而存储副本,复制消息的数量可显著或很大程度地减少。(虽然在图5的示例性场景60中仅三个接收者20被分配给每个消息服务器62,但可以理解,消息服务器62可支持更大的接收者20的组的分配,诸如数百或数千个接收者20,而且所分配的更大的接收者20的组可进一步减少消息32的复制。)在此方面,通过将订阅相似的消息源18的组的一组接收者20分配给每个消息服务器62 (例如基于共享的人口学统计特征,诸如年龄、性别、地理位置以及兴趣),可实现附加的效率。图7呈现了本文中呈现的技术的第一实现方式,示为配置消息服务器62以将由消息源18产生的消息32分别传送给至少一个接收者20的示例性方法80。消息服务器62包括具有处理器和消息存储68的装置,该消息存储68被配置成存储将要传送至接收者20的消息32。该消息服务器也被分配一组接收者20,而且存储针对每个接收者20的接收者概况62,该接收者概况64被配置成标识由接收者20订阅的消息源18。该示例性方法80始于82,并且涉及在被配置成执行本申请所提出的技术的处理器指令上的执行84。具体而言,这些指令被配置成产生(86)订阅过滤器66,订阅过滤器66指示对于各个消息源18是否有至少一个接收者20订阅该消息源18。这些指令也被配置成,在接收(88)来自消息源18的消息32时,检查(90)订阅过滤器66以确定是否有至少一个接收者20订阅该消息源18,并在确定(92)有至少一个接收者20订阅该消息源18时,将消息32存储(94)在消息存储64中,并且将订阅该消息源18的接收者20与消息96相关联(96)。这些指令还被配置成,在接收(98)来自接收者20的接收消息32的请求74时,从消息存储64检索(100)与接收者20相关联的至少零个检索到的消息32,并将检索到的消息32呈现(102)给接收者20。根据本申请呈现的技术,在已基于对消息源18的订阅16将消息32传送给接收者20之后,示例性方法80结束于104。图8呈现了这些技术的第二实施例,示为在消息服务器112上操作并使消息服务器112基于对各个消息源18的订阅16将消息32传送给接收者20的示例性系统116。消 息服务器12包括处理器114,而且该示例性系统116可被实现为例如存储在易失性存储器(诸如系统RAM)或非易失性存储器(诸如闪存设备、硬盘驱动器、固态驱动器或光盘)上的一组软件指令,这些软件指令一起作为示例性系统116的体系结构来操作。替代地,示例性系统116可被实现为硬件设备,诸如配置成实现本申请呈现的技术的半导体电路或现场可编程门阵列(FPGA)。消息服务器112也被分配以一组接收者20,该组接收者20具有对相应消息源18的订阅16,以从消息源18接收消息32。示例性系统116包括消息存储118和接收者概况存储120,消息存储118被配置成存储要传送给接收者20的消息32,接收者概况存储120被配置成存储接收者概况64,接收者概况64标识由相应接收者20所订阅的消息源18。示例性系统116还包括订阅过滤器122,订阅过滤器122被配置成指示对于各个消息源18是否有至少一个接收者20订阅该消息源18。示例性系统116还包括消息接收组件124,消息接收组件124被配置成在接收来自消息源18的消息32时检查订阅过滤器122以确定是否有至少一个接收者20订阅消息源18,并在确定有至少一个接收者20订阅消息源18时将消息32存储在消息存储118中,并将消息32与订阅消息源18的接收者20相关联(根据接收者概况存储120中存储的接收者概况64)。示例性系统116还包括消息呈现组件126,消息呈现组件126被配置成,在接收来自接收者20的接收消息32的请求74时,从消息存储118检索与接收者20相关联的至少零个检索到的消息32,并将检索到的消息32呈现给接收者20。以此方式,示例性系统116可与图5的示例性场景60以及图6的示例性场景70中呈现的消息存储62相似地操作,以将从消息源18接收的消息32传送给订阅消息源18的接收者20。又一实施例涉及包括被配置成应用此处所呈现的技术的处理器可执行指令的计算机可读介质。可以这些方式设计的一种示例性计算机可读介质在图9中示出,其中实现130包括其上编码有计算机可读数据134的计算机可读介质132 (例如,⑶-R、DVD-R、或硬盘驱动器的盘片)。该计算机可读数据134又可包括被配置成根据本申请中陈述的原理来操作的一组计算机指令136。在一个这样的实施例中,处理器可执行指令136可被配置成执行对具有处理器和消息存储的消息服务器进行配置以将由消息源产生的消息分别传送给被分配给该消息服务器的至少一个接收者的方法,诸如图7的示例性方法80。在另一个这样的实施例中,处理器可执行指令136可被配置成实现用于将由消息源产生的消息分别传送给被分配给该消息服务器的至少一个接收者的系统,诸如图8的示例性系统116。此计算机可读介质的一些实施例可包括非瞬态计算机可读存储介质(例如,硬盘驱动器、光盘、或闪存设备),它们被配置成存储以这种方式配置的处理器可执行指令。本领域普通技术人员可设计被配置成根据本申请所呈现 的技术来操作的许多此类计算机可读介质。本申请所呈现的技术可被设计成在许多方面具有变型,并且某些变型可呈现出相对于这些和其他技术的其他变型的附加优点和/或减少缺点。此外,一些变型可组合实现,并且一些组合可表征通过相互协作而得到的附加优点和/或减少的缺点。各种变型可被合并到各实施例中(例如,图7的示例性方法80和图8的示例性系统116)中,以向这些实施例赋予单独和/或相互促进的优点。可在这些技术的实施例之间改变的第一方面涉及其中可使用此类技术的情形。作为第一示例,消息源18和接收者20可包括个体、个体的组、组织(诸如公司、学术机构和政府)、或自动化代理(诸如设备和软件进程)。消息源18和接收者20还可包括分立的代理组,或至少一个接收者20也可充当消息源18 (例如,通过再发送从其他消息源18接收的消息32,和/或通过产生新消息32。)。作为该第一方面的第二示例,消息源18和接收者20可在许多场景下交换消息32,这些场景诸如内容服务器(诸如web服务器)、社交网络、企业一企业网络、电子邮件交换系统、即时消息收发或其它聊天网络、事件发布/订阅网络、以及对等文件交换网络。此外,消息源18中的一个或多个可存在于网络之外,诸如从由消息服务器62管理的网络之外的电子邮件发送者所接收的电子邮件消息。作为该第一方面的第三示例,这些网络可支持许多类型的订阅模型,诸如接收者20请求订阅消息源18、消息源18创建与接收者20的订阅16、以及其它代理定义消息源18和接收者20之间的订阅16。作为该方面的第四示例,可交换许多类型的消息32,诸如状态消息、电子邮件消息、即时消息、文本作品、图像、音频和/或视频文档、文件以及其它数字对象。本领域普通技术人员可设计其中可利用本文所呈现技术的许多场景。在这些技术的实施例中可能有差别的第二方面涉及其中实现这样的技术的体系结构。作为第一示例,这些技术可被实现为单个消息服务器62,单个消息服务器62被配置成将来自一组消息源18的消息32传送给一组接收者20。替代地,这些技术可在多个消息服务器62上实现,多个消息服务器62包括消息服务器组,其中每个消息服务器62可被分配以接收者20的不同的组。此外,消息服务器组的消息服务器62可彼此独立地操作(例如,消息源18可向所有消息服务器62广播消息32,每个消息服务器62可独立地确定将哪些消息32传送给被分配的接收者20),或可进行互操作以改善消息服务器组的效率、灵活性和/或强健性。作为该第二方面的第二示例,消息服务器62可包括分立的硬件组件,诸如机器或计算机服务器。替代地,消息服务器62可包括实现在这样的机器或计算机服务器上(可能与其它消息服务器一起)的软件进程。例如,计算机服务器可实现并且并发地执行一组虚拟机或进程,每个虚拟机或进程实现消息服务器62,该消息服务器62被分配以接收者20的不同组。作为该第二方面的第三示例,这些技术可被实现为方法,诸如图7的示例性方法80 ;然而,这样的方法的要素可被实现为不同的配置。作为该第二方面的第四示例,这些技术可被实现为系统,诸如图8的示例性系统116 ;然而,实现这些技术的系统的组件可不同,或可被实现为不同的配置。本领域普通技术人员可设计本申请呈现的技术的实现方式的许多体系结构变化。
在这些技术的实施例之间可能有差别的第三方面涉及建立或移除接收者20与消息源18的订阅16的方式。这些技术的第一实施例可能不允许或简单地不支持对接收者20与消息源18的订阅的改变。例如,订阅16可能是相对静态的,或可由另一系统或组件来定义,诸如在接收者概况64由另一系统管理的情况下。因此,该实施例可被配置成根据订阅32的静态映射来路由消息32,且因此可产生订阅过滤器66以用于根据该静态映射来传送消息32。替代地,实施例可被配置成允许对接收者20对消息源18的订阅32的改变。例如,在接收到来自接收者20的订阅消息源18的订阅请求时,该实施例可被配置成更新接收者20的接收者概况64以标识接收者20所订阅的消息源18,并更新订阅过滤器66以指示至少一个接收者20订阅该消息源18。反之,在接收到来自接收者20的取消订阅消息源18的取消订阅请求时,该实施例可被配置成更新接收者20的接收者概况64以标识该消息源18未被接收者20订阅,且如果无其它接收者20订阅该消息源18,则可从订阅过滤器66移
除消息源18。替代地或附加地,诸个实施例可接受并应用由其它源定义的订阅请求和取消订阅请求;例如消息源18可请求添加或去除针对特定接收者20的订阅16,或在订阅推举模型中,订阅消息源18的接收者20可请求添加其它接收者20作为同一消息源18的订阅者。本领域普通技术人员可设计在实现本申请中呈现的技术的同时支持订阅请求和取消订阅请求的许多方式。在这些技术的实施例之间可能有差别的第四方面涉及订阅过滤器66的实现方式,该订阅过滤器66指示是否有至少一个接收者20订阅每个消息源18。作为第一示例,订阅过滤器66可简单地包括一组布尔值,诸如位数组,指示是否有由消息服务器62管理的至少一个接收者20已经与消息源18建立订阅16。作为该第四方面的第二示例,订阅过滤器66可指示订阅接收者20的数量,诸如整数数组;这可能是有利的,例如允许订阅过滤器66响应于接收者20从消息源18取消订阅,通过简单地递减订阅接收者20的计数来迅速更新订阅过滤器66。作为该第四方面的第三示例,订阅过滤器66可附加地指示哪些接收者20订阅特定的消息源18,诸如对订阅接收者20的接收者概况64的引用的数组。订阅过滤器66的该实现方式可纳入接收者概况64的各个方面,而且是有利的,例如不仅用于确定是否有接收者20订阅消息源18,而且用于标识订阅接收者20以将消息32与其相关联(96)。例如,如果订阅过滤器64指示对于特定消息源32的当前正订阅该消息源32的接收者20 (或接收者20的接收者概况64)的引用列表,则通过将引用列表的副本附加至消息32,消息32可与接收者20相关联。该副本复制操作可批量进行以加速关联96 (尤其是在大量接收者20订阅消息源18的情况下),而且可比其它变型(例如在数据库中查询将消息32与订阅接收者20相关联的记录)更加计算高效。此外,鉴于接收者20的订阅16的改变,该实现方式可能比较容易更新。然而,该变型的扩展性可能难以管理;例如,如果许多消息源18被许多接收者20订阅,则该实施例可能不得不存储订阅接收者20的长引用列表的许多副本,这可能不是对存储空间的高效的或可行利用。该第三方面的第四示例涉及将订阅过滤器66实现为布隆过滤器,其允许大量数据以紧凑的方式存储,同时也允许迅速检索数据。布隆过滤器的传统实现方式允许任何输入值最初(而且默认)与假(False)的结果值相关联,但允许特定的输入值被设置为真(True)。可利用诸如位数组之类的数组作为用于存储与各个输入值相对应的结果值的存储结构。布隆过滤器也与一组散列函数相关联,散列函数将输入值映射至该位数组内的特定索引。例如,如果选择了八千字节(65536位)的数组,则可提供根据不同的数学公式将输入值任意地映射至O与65535之间的值的一组散列函数。最初,整个位数组被初始化为零,指示每个输入值与假的结果值相关联。当特定输入值被存储为真时,该值被所有散列函数所处理,而且在由每个散列函数计算的索引处的位值被设置为I。为了提取特定输入值的结果值,输入值再次被所有散列函数处理,而且相应索引处的位值被检索并被比较。如果所有位值被设置为一,则输入值可能以真的结果值被存储在布隆过滤器中;但如果任一个位值被设置为零,则该值绝对是以假的结果值被存储在布隆过滤器中(或根本没有存储在布隆过滤器中,由此导致假的默认结果值)。对传统布隆过滤器的改进可呈现附加的特征,诸如改善的准确度或存储密度、更快的检索、或从位数组移除值的能力。鉴于布隆过滤器的这些性质,这些技术的变型可将订阅过滤器66实现为布隆过滤器。图10呈现描绘该变型的示例性场景140,其中订阅过滤器66被实现为布隆过滤器142,其包括位数组144和一组三个散列函数146。通过按照以下方式来设置位数组144中的值,各个消息源18可在布隆过滤器142中被记录为由一个或多个接收者20订阅。最初,长度为16的位数组144的值被设置为零,以指示没有消息源18具有任何订阅接收者20。·消息源18可具有不同的标识符,诸如名字或整数。当消息源18将在订阅过滤器66中被记录为具有至少一个订阅接收者20时,该标识符被所有三个散列函数146处理,每个散列函数返回O至15之间的数值散列值,该数值散列值对应于长度为16的位数组144中的索引,而且相应索引处的值被设置为零(不论其先前值是零还是一)。当接收到消息32并且要确定消息32的消息源18是否具有任何订阅接收者20时,消息源18的标识符可再次被散列函数处理,而且通过散列函数计算出的索引处的值可被比较(例如通过逐位AND)以确定是否所有这些值都是一。如果是,则确定消息源18 (可能)具有至少一个接收者20,从而消息32可被存储在消息存储68中;但如果不是,则消息32可被丢弃。在图10的示例性场景140中,如果接收到来自第一消息源18的消息32,则消息源18的标识符可被布隆过滤器142的三个散列函数146处理,从而得到数值散列值2、11和5,对应于数组索引0x02、0x0B和0x05。位数组144中的这些数组索引处的值可被检查;由于所有三个值都是1,所以布隆过滤器142指示消息源18被至少一个接收者20订阅,而且消息32可被存储。相反,当从第二消息源18接收到消息32时,第二消息源18的标识符被散列函数146处理,而且查明相应位索引0x04和0x07处的值等于一,但查明位索引OxOA处的值(由第三散列函数146指示)等于零;相应地,第二消息源18被确定为不具有订阅接收者32,而且来自第二消息源18的消息32可被丢弃。将布隆过滤器142用作订阅过滤器(诸如图10的示例性场景140中所示)会是有优势的,允许以紧凑的方式存储与大量消息源18有关的大量订阅信息,同时仍允许订阅信息的较快检索(例如与查询每个接收者概况64以定位至少一个订阅接收者20相比)。传统布隆过滤器142可呈现一些限制,但这些限制对于订阅过滤器66是可以忍受的。作为第一示例,布隆过滤器142可返回假阳性结果;例如对于尚未以真的结果值存储的特定输入值,每个散列函数146可指示之前已被设置为一的数组索引(对于不同输入值),而且可一致地产生不正确的为真的结果值。作为第二示例,一旦输入值在传统布隆过滤器142中与真的结果值相关联时,则它通常不能通过将位数组144中的相应值设置为零而被被复位为假,因为该设置可能引起之前已与真的结果值相关联的其它输入值无意中被设置为假,从而导致相应消息源18的假的否定结果以及将可传送至一个或多个订阅接收者20的消息32的不正确丢弃。然而,在这两种情况下,布隆过滤器142的假阳性结果(因为消息源18从未具有任何订阅接收者20,或因为所有订阅接收者20被取消订阅)的后果包括将单个不可传送的消息32存储在消息存储68中,这可能代表了不重要的和可接受的低效。通过附加的处理可避免该低效;例如当将消息32与订阅接收者20相关联(96)时(根据接收者概况64),可确定没有订阅接收者20存在,且消息32随后可被丢弃。反之,传统的布隆过滤器不会产生假阴性结果,因此可传送至一个或多个订阅接收者20的消息32未被不正确地丢弃。此外,如果布隆过滤器142变得不可接受地不准确(例如产生太多假阳性结果),则可基于当前接收者概况64重新产生布隆过滤器142。该重新产生可能抹去之前订阅但当前取消订阅的接收者20的影响。此外,通过在重新产生期间选择用于布隆过滤器142的不同组的散列函数144,可减少假阳性定结果。在第一个这样的实施例中,可积极地执行重新产生以减少由取消订阅的接收者20引起的不准确性;例如,在接收到来自接收者20的取消订阅消息源18的取消订阅请求时,消息服务器62就可更新接收者20的接收者概况64,以将消息源18标 识为未被接收者20订阅,而且可基于消息服务器62的(经更新的)接受者概况64重新产生布隆过滤器142。类似地,在接收到从消息服务器62移除接收者20的移除请求(例如停用或关闭一账户)时,消息服务器62就可移除接收者20的接收者概况64,而且可基于消息服务器62的余下接收者概况64来重新产生布隆过滤器142。然而,重新产生会是计算成本高的行为,而且可能周期性执行,或在布隆过滤器142中检测到特定程度的低效引发的不准确时(例如在将消息32与接收者20相关联(96)期间检测到特定数量的假阳性结果时)执行。替代地,可利用布隆过滤器142的改进版本来解决这些限制;例如,可利用“布隆过滤器”来消除由布隆过滤器142报告的假阳性结果值。本领域普通技术人员可设计订阅过滤器66的许多变型,同时实现本申请呈现的技术。本申请中描述的技术可在单个独立的消息服务器62的配置中具体化(例如,如同图6的示例性场景70,其中单个消息服务器62将从一组消息源18接收的消息32传送个多个订阅接收者20),或在独立地服务不同接收者20和/或消息源18的多个消息服务器62中具体化(例如如同图5的示例性场景60,其中两个消息服务器62服务接收者20的分立和不交迭的组)。然而,这些技术中的一些变型涉及消息服务器组的多个消息服务器62按照互操作方式的配置。在这些场景中,大量接收者20可分布在多个消息服务器62中,诸如通过将相应的接收者分配给特定的消息服务器62,该消息服务器62主控接收者20的接收者概况64和/或要传送给接收者20的消息32。消息服务器62也可共享分配映射,分配映射指示相应接收者20至消息服务器组中的特定消息服务器62的分配。每个消息服务器62可包括在一组互操作的计算机系统之间的分立的计算机系统,和/或在这样的计算机系统上操作的软件进程,该软件进程可能与代表在同一计算机系统上操作的其它消息服务器62的其它软件进行并发地或顺序地操作。第一消息服务器62可利用该分配映射来确定特定接收者20被分配至的消息服务器62,以处理从接收者20接收的请求,或转发这样的请求,或将接收者20推举给第二消息服务器62。图11呈现描绘包括两个消息服务器62的消息服务器组152的示例性场景150。与图5的示例性场景60中的消息服务器62(其独立地传送消息32至分立且不交迭的接收者20的组)相反,在该示例性场景150中,消息服务器62被配置成进行互操作。一组接收者20可分布式地被分配给消息服务器62,使得对于任何接收者20,特定的消息服务器62可存储接收者概况64、可存储要传送给接收者20的消息32,而且可满足将所储存的消息32传送给接收者20的接收请求156。例如,第一消息服务器62可被分配第一接收者20,且可存储从第一接收者20订阅的各个消息源18接收的任何消息32。而且,消息服务器62可共享分配映射154,且可按照以下方式利用该分配映射154,分配映射154指示特定接收者20被分配至哪个消息服务器62。当接收到来自第一接收者20的接收消息32的接收请求156时,第一消息服务器62可检查分配映射154以确定标识第一接收者20被分配至的接收者消息服务器。在确定第一接收者20被分配给第一消息服务器62时,第一消息服务器62可通过从第一消息服务器62的消息存储68检索与第一接收者20相关联的任何消息32来满足该接收请求156,并可将所检索到的消息32呈现给第一接收者20。相反,当第六接收者20将接收请求156发送至第二消息服务器62 (按照相似的方式配置)时,第二消息服务器62可检查分配映射154以确定标识第六接收者20被分配至的接收者消息服务器,且可确定第六接收者20被分配至的接收者消息服务器是第六消息服务器62。因此,代替努力满 足第六接收者20的接收请求156,第二消息服务器62可简单地将接收请求156转发给第一消息服务器62。以此方式,消息服务器组152的消息服务器62可互操作以将消息32、接收者20的分配方式传送给相应的消息服务器62。该配置也可促进消息服务器组152的可扩展性和工作共享,因为任何消息服务器62可接收并最初地查看来自任何接收者20的接收请求156。在这些技术的实施例之间(尤其是对于涉及消息服务器组152的相应消息服务器62的配置的实施例)可能有差别的第五方面涉及向消息服务器62添加接收者20的方式。消息服务器62可被配置成接受新的接收者20,诸如新用户14,新用户14产生个人账户以接收来自消息源18的消息32。作为第一示例,在接收到添加新接收者20的请求时,消息服务器62就可被配置成产生新接收者概况64,该新接收者概况64标识由新接收者20订阅的消息源并更新分配映射154,由此指示(例如向消息服务器组152的其它消息服务器62)新接收者20至消息服务器32的分配方式。在此方面,这些技术的附加变型可涉及选择接收者20将被分配至的消息服务器62的方式。作为该第五方面的第二示例,接收者20可被随意地分配给消息服务器62,诸如随机地或由用户或管理员选择。作为该第五方面的第三示例,接收者20可为了平衡各个消息服务器62的资源消耗而被分配,诸如通过促进接收者20的数量大致相等或接收者20的空间使用率大致相等(例如,其中订阅更多消息源18的接收者20可能必然需要更大的消息存储32,具有更大的资源消耗)。作为该第五方面的第四示例,接收者20可基于地理接近程度被分配给消息服务器62 ;例如,如果消息服务器组152被分配在广域网上(诸如国家或洲),接收者20可被分配至最接近的消息服务器62以减少网络等待时间。作为该第五方面的第五示例,接收者20可按照改善计算资源的高效使用的方式被分配给消息服务器62。具体而言,在该组接收者20之间,标识相似接收者20并将这样的接收者20分配给同一消息服务器62可减少所储存的消息32的数量和所消耗的网络带宽。例如,如果一组100,000个接收者20中的1,000个接收者20的群集订阅特定消息源18,则将这些接收者20分配给同一消息服务器62会是高效的,该同一消息服务器62可接收并存储从消息源18接收的消息32的单个副本并将这样的消息分发给这些接收者20,而不是将接收者分布在许多消息服务器62上(由此必然产生通过多个消息服务器62的多次传输、多个副本的存储以及传送处理)。这样的群集也可通过改善对高速缓存的使用来改善消息服务器组152的性能;例如,如果一组接收者20订阅相同的消息源18,则这些接收者20被分配至的消息服务器62可通过将来自消息源18的消息32保持在存储器高速缓存中以供更快和更频繁的传送而呈现改善的性能,但如果接收者20分布在许多消息服务器62上,则该性能改善可能无法实现。相似接收者20的这种群集可按照至少两种方式来实现。作为第一种群集技术,接收者20可基于这些接收者20可能订阅的消息源18的预测共享组而被分配给消息服务器组152的消息服务器62。在接收到将接收者20添加至消息服务器62的添加请求时,就可确定新的接收者20是否类似于之前所标识的群集的接收者20,诸如爱好特定体育运动、听相似类型音乐或从事特定职业的接收者20。如果接收者20看起来与之前分配给特定消息服务器62的接收者20的任何这样的群集相似,则消息服务器62可接受该新的接收者20(例如通过产生标识由新接收者20订阅的消息源18的新接收者概况64,并更新分配映射154以指示新接收者20至消息服务器62的分配方式)。替代地,如果第一消息服务器62确定特定接收者20类似于分配给第二消息服务器62的接收者20,则第一消息服务器62可简单地将添加请求转发给第二消息服务器62。图12示出示例性场景160,其中接收者20基于这样的接收者20可能订阅的消息源18的预测被分配给消息服务器62。具体而言,该示例性场景160中的预测涉及确定属于接收者20的一个或多个人口学统计学特征162 (诸如年龄、性别、地理位置、国籍或兴趣),这些人口学统计学特征162可预测接收者20可能订阅的消息源18。共享至少一个人口学统计学特征162的接收者20可被分配给同一消息服务器62。例如,在该示例性场景160中示出的接收者20中,将订阅了消息源16的相似组的年轻且为男性的所有接收者20分配给第一消息服务器62,同时将年长或女性的接收者分配给第二消息服务器62。第二群集技术(可替代地实现或使用其它群集技术附加地实现)不包括预测特定接收者20可能订阅的消息源18,而是包括检测接收者20之间的现有的订阅16的相似性,·且在标识到保持相似订阅16的接收者20的子集时,将接收者20重新分配给特定的消息服务器62。可例如通过统计分析或各种人工智能技术(诸如模式识别)来实现该检测。在检测到接收者20的子集之间的订阅16的这样的相似性时,消息服务器62可安排将接收者20合并至单个消息服务器62。该合并可按照分散方式进行;例如每个消息服务器62可尽力向其它消息服务器62主张由这样的其它消息服务器62所主控的订阅相似消息源18的任何接收者20的所有权。例如,当第一消息服务器62标识由第一消息服务器62主控的第一接收者20以及由第二消息服务器62主控的第二接收者20所订阅的至少一个共享的消息源18时,第一消息服务器62可向第二消息服务器62发送将第二接收者20转移至第一消息服务器62的转移请求。第二消息服务器62可通过如下步骤来答应请求在接收到转移请求时,就将接收者20的接收概况64发送至第一消息服务器62,从由第二消息服务器62存储的接收者概况64的组中移除接收者概况64,更新订阅过滤器66、以及更新分配映射154以指示将接收者20重新分配给第一消息服务器62。在一个这样的实现中,消息服务器62可按照许多方式进行互操作以实现高效的重新分配;例如,在确定两个或更多个消息服务器62共享一组接收者20 (该组接收者20共享对特定消息源18的一个或多个订阅16)时,则消息服务器62可基于各种试探来选择可将接收者20有利地转移至的特定消息服务器62,各种试探诸如选择当前存储接收者20的最大共享的消息服务器62、具有最大空闲容量(例如被分配以最少其它接收者20)的消息服务器62和/或具有与接收者20的最接近的地理接近程度或可用带宽的消息服务器62。替代地或作为附加,集中式服务器可通过确定相似订阅16的模式、选择接收者20的有利合并、和/或协调接收者20与当前主控接收者20的消息服务器62的转 移来促进该合并过程。本领域普通技术人员可设计配置一个或多个消息服务器62以添加接收者20且同时实现本申请呈现的技术的许多方式。在这些技术的实施例之间(尤其是对于涉及消息服务器组152的相应消息服务器62的配置的实施例)可能有差别的第六方面涉及从消息服务器62之间的各个消息源18接收和交换消息32的方式。当消息服务器62从消息源18接收消息32时(除了根据本申请呈现的技术将消息32传送至订阅消息源18的接收者20之外),消息服务器62还可被配置成将消息32重新发送至其它消息服务器62以传送至被分配给这样的其它消息服务器62的其它接收者20。作为第一示例,消息服务器62可向所有其它消息服务器62广播所有这样的消息32,但随着由消息服务器组152处理的消息32的数量增加,这样的广播可高效地利用连接这样的消息服务器62的网络或总线的可用带宽。作为第二示例,消息服务器62可将消息32仅重新发送至另一消息服务器62,另一消息服务器62可将消息32传送至分配给该另一消息服务器62并且订阅了消息32的消息源18的至少一个接收者20。在一个这样的实施例中,每个消息服务器62可与消息服务器组152的其它消息服务器62共享其订阅过滤器66,并且在更新订阅过滤器66 (例如鉴于接收者20的分配和/或被分配的接收者20对消息源18的订阅16的改变)时,可将经更新的订阅过滤器66发送至其它消息服务器62。每个消息服务器62还可共享其它消息服务器62的订阅过滤器66,并且可参考这样的订阅过滤器66以确定将消息32重新发送至的其它消息服务器62。根据该第六方面的第二示例的对消息32的选择性发送可显著改善消息服务器组152的计算资源的高效利用。附加地,该共享和重新发送可根据许多布局来实现,例如作为完全互连的图表,其中每个消息存储62存储所有其他消息服务器62的订阅过滤器66并将所接收的消息32重新广播至具有至少一个订阅接收者20的所有其它消息服务器62,或者作为包括消息服务器62的较小组的η层网络布局,消息服务器62之间以及与其它组交换订阅过滤器66和/或消息32。根据消息收发场景的各个方面的各种配置可能是比较有利的,例如基于消息服务器62和消息32的数量、消息服务器组152或接收者20对消息源18的订阅16的变化率、以及积极传送消息32和保留网络带宽的相对值。因此,通过按照以下方式配置消息服务器62,可实现该第六方面的第二示例的这些和其它优势。在产生或更新订阅过滤器66时,或在加入消息服务器组152时,消息服务器62可被配置成将订阅过滤器66发送至至少一个其它消息服务器62,并且在一些配置中,将订阅过滤器66发送至消息服务器组152的所有其它消息服务器62。在接收到来自第二消息服务器66的第二订阅过滤器66时,消息服务器62就可被配置成存储第二消息服务器62的第二订阅过滤器66。在接收到来自消息源18的消息32,消息服务器62可检查其它消息服务器62的每个订阅过滤器66,以确定是否有被分配给每个其它消息服务器62的至少一个接收者20订阅消息源18,而且在确定如此时,可将消息32转发至这样的其它消息服务器62。最终,在离开消息服务器组152 (例如在消息服务器62被停止使用的情况下)时,消息服务器62可被配置成将分配给消息服务器62的所有接收者20转移至消息服务器组152的另一消息服务器62,并请求消息服务器组152的其它消息服务器62移除用于消息服务器62的订阅过滤器66。根据该配置,消息服务器62可进行互操作以共享订阅过滤器66,并按照高效的方式交换消息32。可在这样的配置中实现以获得改善的效率的特定特征涉及由受欢迎的消息源18产生的消息32的发送,许多接收者20订阅该受欢迎的消息源18。例如,在社交网络场景下,诸如名人之类的特别受欢迎的消息源18可具有数百万订阅接收者20。对于这样的受欢迎的消息源18,当许多或所有这样的消息服务器62可能具有至少一个这样的接收者20时,如下这样做可能是低效的消息服务器32在从消息源18接收消息32时就检查其它消息服务器62的订阅过滤器66以标识被分配以至少一个订阅接收者20的消息服务器62。替代地,对于这些受欢迎的消息源18,通过将消息32发送至消息服务器组152的所有消息服务器62,可实现更高的效率。因此,一个或多个消息服务器62可被配置成标识由许多接收者20订阅的至少一个受欢迎的消息源18,并在接收来自受欢迎的消息源18的消息32时,将 消息32发送至消息服务器组152的消息服务器62。以此方式,可避免在检查其它消息服务器62的订阅过滤器66时涉及的计算资源,因为其它消息服务器62中的许多或全部可能具有至少一个订阅接收者20。图13呈现了描绘消息服务器组152的示例性场景170,消息服务器组152包括配置成根据该第六方面中呈现的一些变型来交换消息32的消息服务器62。在该示例性场景170中,每个消息服务器62被分配以一组接收者20,并且存储订阅过滤器66,订阅过滤器66标识至少一个被分配的接收者20订阅的消息源。每个消息服务器62被配置成,在产生或更新订阅过滤器66时或在加入消息服务器组152时,将其订阅过滤器66发送至其它消息服务器62,并存储从其它消息服务器62接收的订阅过滤器66。当接收来自消息源20的消息32时,每个消息服务器62被配置成,在确定如何重新发送消息32之前,咨询其它消息服务器62的订阅过滤器66。例如,第二消息源20可向第二消息服务器62发送第一消息32,并且被分配给第二消息服务器62的至少一个接收者20订阅第二消息源20。因此,第二消息服务器62可存储第一消息32以传送至如此分配和订阅的接收者20。此外,第二消息服务器62可检查第一消息服务器62和第三消息服务器62的订阅过滤器66,可确定第三消息服务器62被分配有同样订阅了第二消息源20的至少一个接收者20,但第一消息服务器62没有这样的接收者20,并且可将第一消息32仅转发给第三消息服务器62。附加地,可确定许多接收者20订阅的受欢迎的消息源172,且当从受欢迎的消息源172接收第二消息32时,第二消息服务器62可确定该消息源是受欢迎的,并且可将该第二消息32转发给所有其它消息服务器62,而不咨询其它消息服务器62的订阅过滤器66。以此方式,消息服务器62被配置成进行互操作,以按照高效的方式利用消息服务器组152的计算资源(包括处理、存储容量以及网络带宽)。本领域普通技术人员可设计在消息服务器62之间交换消息32的许多方式,同时实现本申请呈现的技术。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。
如在本申请中所使用的,术语“组件”、“模块”、“系统”、“接口 ”等一般旨在表示计算机相关的实体,该实体可以是硬件、硬件和软件的组合、软件、或者执行中的软件。例如,组件可以是,但不限于是,在处理器上运行的进程、处理器、对象、可执行码、执行线程、程序和/或计算机。作为说明,运行在控制器上的应用程序和控制器都可以是组件。一个或多个组件可以驻留在进程和/或执行线程中,并且组件可以位于一个计算机内和/或分布在两个或更多计算机之间。此外,所要求保护的主题可使用产生控制计算机以实现所公开的主题的软件、固件、硬件、或其任意组合的标准编程和/或工程技术来实现为方法、装置、或制品。如此处所使用的术语“制品”旨在涵盖可从任何计算机可读设备、载体、或介质进行访问的计算机程序。当然,本领域的技术人员应当认识到,在不背离所要求保护的主题的范围或精神的情况下可对该配置作出许多修改。图14和以下讨论提供了对实现本文所阐述的一个或多个原理的实施例的合适计算环境的简要、概括描述。图14的操作环境只是合适的操作环境的一个示例,而不旨在对 该操作环境的使用范围或功能提出任何限制。示例计算设备包括但不限于,个人计算机、月艮务器计算机、手持式或膝上型设备、移动设备(诸如移动电话、个人数字助理(PDA)、媒体播放器等)、多处理器系统、消费电子产品、小型计算机、大型计算机、包括任何以上系统或设备中的任一个的分布式计算环境等。虽然并非必需,但是实施例在由一个或多个计算设备执行的“计算机可读指令”的一般上下文中进行描述。计算机可读指令可经由计算机可读介质来分发(在下文中讨论)。计算机可读指令可被实现为执行特定任务或实现特定抽象数据类型的程序模块,诸如函数、对象、应用程序编程接口(API)、数据结构等。通常,计算机可读指令的功能可按需在各种环境中组合或分布。图14示出包括被配置成实现此处所提供的一个或多个实施例的计算设备182的系统180的示例。在一种配置中,计算设备182包括至少一个处理单元186和存储器188。取决于计算设备的确切配置和类型,存储器188可以是易失性的(例如诸如RAM)、非易失性的(例如诸如ROM、闪存等)、或两者的一些组合。该配置在图14中由虚线184示出。在其他实施例中,设备182可包括附加特征和/或功能。例如,设备182还可包括附加存储(例如,可移动和/或不可移动),包括但不限于磁存储、光存储等。此类附加存储在图14中由存储190示出。在一个实施例中,实现此处所提供的一个或多个实施例的计算机可读指令可位于存储190中。存储190还可储存实现操作系统、应用程序等其他计算机可读指令。可将计算机可读指令加载到存储器188中,以供例如处理单元186执行。如此处所使用的术语“计算机可读介质”包括计算机存储介质。计算机存储介质包括以用于存储诸如计算机可读指令或其他数据之类的信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。存储器188和存储190都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPR0M、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD )或其他光存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或者可用于存储所需信息且可由设备182访问的任何其他介质。任何这样的计算机存储介质都可以是设备182的一部分。设备182还可包括允许该设备182与其他设备进行通信的通信连接196。通信连接196可包括但不限于,调制解调器、网络接口卡(NIC)、集成网络接口、射频发射机/接收者、红外线端口、USB连接、或用于将计算设备182连接到其他计算设备的其他接口。通信连接196可包括有线连接或无线连接。通信连接196可发送和/或接收通信媒体。术语“计算机可读介质”可包括通信介质。通信介质通常以诸如载波或其他传输机制之类的“已调制数据信号”来体现计算机可读指令或其他数据,并且包括任何信息传送介质。术语“已调制数据信号”可包括以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。设备182可包括输入设备194,诸如键盘、鼠标、笔、语音输入设备、触摸输入设备、红外相机、视频输入设备、和/或任何其他输入设备。在设备182中还可包括输出设备192,诸如一个或多个显不器、扬声器、打印机、和/或任何其他输出设备。输入设备194和输出设备192可经由有线连接、无线连接、或其任何组合连接到设备182。在一个实施例中,来自另一计算设备的输入设备或输出设备可用作计算设备182的输入设备194或输出设备192。 计算设备182的组件可通过多种互连来连接,例如总线。这样的互连可以包括诸如PCI Express之类的外围部件互连(PCI)、通用串行总线(USB)、火线(IEEE 1394)、光学总线结构等等。在另一实施例中,计算设备182的组件可通过网络来互连。例如,存储器188可包括位于通过网络互连的不同物理位置的多个物理存储器单元。本领域技术人员应当认识到,用于存储计算机可读指令的存储设备可分布在网络上。例如,可经由网络198访问的计算设备200可存储实现此处所提供的一个或多个实施例的计算机可读指令。计算设备182可访问计算设备200,并且下载部分或全部计算机可读指令以供执行。替换地,计算设备182可按需下载计算机可读指令的片断,或者一些指令可在计算设备182处执行,而一些指令则可在计算设备200处执行。本文提供了各实施例的各种操作。在一个实施例中,所描述的操作中的一个或多个可以组成存储在一个或多个计算机可读介质上的计算机可读指令,这些指令如果由计算设备执行则使得计算设备执行所描述的操作。所描述的一些或所有操作的顺序不应该被解释为暗示这些操作一定是依赖于顺序的。从本说明书获益的本领域技术人员将认识到替换顺序。此外,应该理解,并非所有的操作都一定存在于本文所提供的每一个实施例中。此外,本文中所使用的词语“示例性”意指用作示例、实例或说明。在本文中描述为“示例性”的任何方面或设计并不一定被解释为比其他方面或设计有利。相反,使用词语“示例性”旨在以具体的方式呈现各个概念。如本申请中所使用的,术语“或”意指包括性“或”而非互斥性“或”。即,除非另有指定或从上下文中清晰可见,否则“X使用A或B”意指任何自然的包括性排列。即,如果X使用A ;X使用B ;或X使用A和B两者,则在任何以上情况下,都满足“X使用A或B”。另外,本申请中和所附权利要求书中所使用的冠词“一”和“一个”一般可被解释为意指“一个或多个”,除非另有指定或从上下文中清晰可见是指单数形式。同样,虽然参考一个或多个实现示出并描述了本公开,但本领域技术人员基于对本说明书和附图阅读和理解,可以想到各种等效更改和修改。本发明包括所有这样的修改和更改,并且仅由所附权利要求的范围来限定。特别地,对于由上述组件(例如,元素、资源等)执行的各种功能,除非另外指明,否则用于描述这些组件的术语旨在对应于执行所描述的执行此处在本发明的示例性实现中所示的功能的组件的指定功能(例如,功能上等效)的任何组件,即使这些组件在结构上不等效于所公开的结构。此外,尽管可相对于若干实现中的仅一个实现来公开本公开的一个特定特征,但这一特征可以如对任何给定或特定应用所需且有利地与其他 实现的一个或多个其他特征相组合。此外,就在说明书或权利要求书中使用术语“包含”、“具有”、“含有”和“带有”及其变体而言,此类术语旨在以与术语“包括”相似的方式为包含性的。
权利要求
1.一种对具有处理器和消息存储的消息服务器进行配置以将由消息源产生的消息分别传送至被分配给所述消息服务器的至少一个接收者的方法,各个接收者具有接收者概况,所述接收者概况标识由接收者订阅的消息源,所述方法包括 在所述处理器上执行指令,所述指令被配置成 产生订阅过滤器,所述订阅过滤器指示对于各个消息源是否有至少一个接收者订阅所述消息源; 在接收到来自消息源的消息时 检查所述订阅过滤器以确定是否有至少一个接收者订阅所述消息源,以及 在确定有至少一个接收者订阅所述消息源时 将所述消息存储在所述消息存储中,以及 将订阅所述消息源的接收者与所述消息相关联;以及 在接收到来自接收者的接收消息的接收请求时 从所述消息存储检索与所述接收者相关联的至少零个检索到的消息,以及 将检索到的消息呈现给所述接收者。
2.如权利要求I所述的方法,其特征在于 所述设备包括社交网络中的社交网络服务器; 所述消息源包括编写至少一个消息的社交网络的第一用户;以及所述接收者包括社交网络的第二用户,所述的社交网络的第二用户订阅所述第一用户的消息。
3.如权利要求I所述的方法,其特征在于,所述指令被配置成,在接收来自接收者的订阅消息源的订阅请求时 更新所述接收者的接收者概况,以标识被所述接收者订阅的消息源;以及 更新所述订阅过滤器以指示是否有至少一个接收者订阅所述消息源。
4.如权利要求I所述的方法,其特征在于,所述订阅过滤器包括布隆过滤器,指示是否有至少一个接收者订阅消息源。
5.如权利要求4所述的方法,其特征在于,更新所述订阅过滤器以指示是否有至少一个接收者订阅所述消息源包括向所述布隆过滤器中插入所述消息源,以指示有至少一个接收者订阅所述消息源。
6.如权利要求4所述的方法,其特征在于,所述指令被配置成,在接收来自接收者的取消订阅消息源的取消订阅请求时 更新所述接收者的接收者概况,以标识所述消息源未被所述接收者订阅;以及 基于所述消息服务器的接收者概况,重新产生所述布隆过滤器。
7.如权利要求4所述的方法,其特征在于,所述指令被配置成,在接收从消息服务器移除接收者的移除请求时 移除所述接收者的接收者概况,以及 基于所述消息服务器的接收者概况,重新产生所述布隆过滤器。
8.如权利要求I所述的方法,其特征在于 所述消息服务器被包括在消息服务器组中; 各个接收者被分配给所述消息服务器组中的消息服务器;以及所述消息服务器组的消息服务器共享分配映射,指示各个接收者向所述消息服务器组中的消息服务器的分配。
9.如权利要求8所述的方法,其特征在于,所述指令被配置成,在接收来自接收者的接收消息的接收请求时 使用所述分配映射,标识所述接收者被分配至的接收者消息服务器; 如果所述接收者消息服务器包括所述消息服务器,则 从所述消息存储检索与所述接收者相关联的至少零个检索到的消息,以及 将检索到的消息呈现给所述接收者;以及 如果所述接收者消息服务器不包括所述消息服务器,则将所述接收请求转发给所述接收者消息服务器。
10.如权利要求8所述的方法,其特征在于,所述指令被配置成,在接收将新接收者添加至所述消息服务器的添加请求时 产生新接收者概况,所述新接收者概况标识由所述新接收者订阅的消息源;以及 更新所述分配映射,指示所述新接收者分配至所述消息服务器。
11.如权利要求10所述的方法,其特征在于 基于预测的由接收者订阅的消息源的共享组,各个接收者被分配给所述消息服务器组的消息服务器;以及 所述指令被配置成,在接收将新接收者添加至消息服务器的添加请求时 标识接收者消息服务器,所述新接收者可与被分配给所述接收者消息服务器的接收者共享预测的消息源的共享组; 如果所述接收者消息服务器包括所述消息服务器,则 产生新接收者概况,所述新接收者概况标识由所述新接收者订阅的消息源,以及更新所述分配映射,指示所述新接收者分配至所述消息服务器;以及如果所述接收者消息服务器不包括所述消息服务器,则将所述添加请求转发给所述接收者消息服务器。
12.如权利要求11所述的方法,其特征在于,预测所预测的由被分配给消息服务器组的所述接收者订阅的消息源的共享组包括 对于各个接收者,确定至少一个人口学统计学特征,所述人口学统计学特征预测可由所述接收者订阅的消息源;以及 将共享至少一个人口学统计学特征的接收者分配给消息服务器。
13.如权利要求8所述的方法,其特征在于,所述指令被配置为 在接收来自第二消息服务器的第二订阅过滤器时,存储所述第二消息服务器的第二订阅过滤器;以及 在接收来自消息源的消息时,对于各个第二订阅过滤器 检查所述第二订阅过滤器以确定是否有被分配给所述第二消息服务器的至少一个接收者订阅所述消息源;以及 在确定有被分配给所述第二消息服务器的至少一个接收者订阅所述消息源时,将所述消息转发至所述第二消息服务器。
14.如权利要求13所述的方法,其特征在于,所述指令被配置成,在产生所述订阅过滤器时,将所述订阅过滤器发送至所述消息服务器组的至少另一个消息服务器。
15.一种配置成将由消息源产生的消息分别传送至被分配给消息服务器的至少一个接收者的系统,各个接收者订阅至少一个消息源,所述系统包括 消息存储,配置成存储消息; 接收者概况存储,配置成存储接收者概况,所述接收者概况标识由各个接收者订阅的消息源; 订阅过滤器,指示对于各个消息源是否有至少一个接收者订阅所述消息源; 消息接收组件,配置成在接收来自消息源的消息时 检查所述订阅过滤器以确定是否有至少一个接收者订阅所述消息源,以及 在确定有至少一个接收者订阅所述消息源时 将所述消息存储在所述消息存储中,以及 将订阅所述消息源的接收者与所述消息相关联;以及 消息呈现组件,配置成在接收来自接收者的接收消息的接收请求时 从所述消息存储检索与所述接收者相关联的至少零个检索到的消息,以及 将检索到的消息呈现给所述接收者。
全文摘要
许多场景涉及基于在多个接收者与消息源之间建立的订阅,将来自多个消息源的消息传送给接收者。接收者可分布式地被分配给一个或多个消息服务器,这一个或多个消息服务器独立地操作或作为互操作的消息服务器组的一部分。各个消息服务器可产生订阅过滤器,指示至少一个被分配的接收者订阅相应的消息源,并且在接收来自消息源的消息时,可利用该订阅过滤器来确定是否丢弃该消息或存储该消息以用于传送。互操作的消息服务器也可交换订阅过滤器,且在接收来自任何消息源的消息时,消息服务器可利用其它消息服务器的订阅过滤器来确定哪些其它消息服务器被分配以至少一个订阅接收者,并且可将该消息仅重新发送至这样的消息服务器。
文档编号G06F9/54GK102947799SQ201180030793
公开日2013年2月27日 申请日期2011年6月20日 优先权日2010年6月23日
发明者S·W·伊克曼, T·M·莱尔德-麦康奈尔 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1