CN102413067A - 用于为实时事件的大量订户提供支持的技术 - Google Patents

用于为实时事件的大量订户提供支持的技术 Download PDF

Info

Publication number
CN102413067A
CN102413067A CN2011102952138A CN201110295213A CN102413067A CN 102413067 A CN102413067 A CN 102413067A CN 2011102952138 A CN2011102952138 A CN 2011102952138A CN 201110295213 A CN201110295213 A CN 201110295213A CN 102413067 A CN102413067 A CN 102413067A
Authority
CN
China
Prior art keywords
bucket
groove
real
subscriber
speed
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
Application number
CN2011102952138A
Other languages
English (en)
Other versions
CN102413067B (zh
Inventor
C.W.W.刘
R.彻鲁库里
S.戈登
O.贝克施茨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102413067A publication Critical patent/CN102413067A/zh
Application granted granted Critical
Publication of CN102413067B publication Critical patent/CN102413067B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1859Arrangements for providing special services to substations for broadcast or conference, e.g. multicast adapted to provide push services, e.g. data channels
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/214Monitoring or handling of messages using selective forwarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/335Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • G06F16/353Clustering; Classification into predefined classes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computational Linguistics (AREA)
  • Information Transfer Between Computers (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

所描述的是用于管理实时事件的大量订户的技术。各实施例可以将订户动态地过滤到桶中,其中发布内容仅仅会被发布给与发布者处于相同的桶的订户。所述桶可被动态创建和移除,以便将订户的发布速率降低或提高至可接受的等级。这里的实施例可以使用一种双层桶装算法来执行过滤,该算法的存储器和CPU效率很高,并且会随着的订阅的庞大数量而缩放。在有必要创建新桶以及在这些桶之间分发用户时,该技术还可以减小订户的上下文损失。各实施例可以向外扩展到多个服务器,以便适应数量庞大的订户和发布内容。还描述并且要求保护了其他实施例。

Description

用于为实时事件的大量订户提供支持的技术
背景技术
在即时聊天这类具有大量订户和发布者的实时事件中,流经该事件的实时数据量有可能会使使用人员、订阅设备以及分发服务器不堪重负。对于诸如数以千计乃至更多的大量订户来说,由于每一次的发布内容都会分发给每个订户,因此,即使每秒的发布数量很小,也有可能耗费大量的带宽和处理能力。针对这些以及其他考虑因素,有必要进行当前改进。
发明内容
本概述是为了以简化形式介绍精选概念而被提供的,在以下的详细描述中将会进一步描述这些概念。本概述的目的既不是确定所要求保护主题的关键特征或必要特征,也不是帮助确定描述所要求保护的主题的范围。这里的不同实施例主要涉及的是为实时事件的大量订户提供支持的技术。特别地,一些实施例涉及的是将订户分配给桶槽系统,以便管理大量用户及其产生的网络业务量的技术。举个例子,在一个实施例中,一种技术可以包括将实时事件订户分配给桶(bucket)和所述桶内部的槽(slot)。该技术还可以包括监视实时事件的发布速率,并且在发布速率超出第一阈值或是低于第二阈值的时候添加或移除桶。更进一步,所述技术还可以包括:只向那些与第一订户分配到相同的桶的其他订户发布第一订户发布内容。此外,在这里还描述并且要求保护其他实施例。
通过阅读后续的详细描述以及回顾相关的附图,可以清楚了解这些以及其他特征和优点。应该理解的是,以上的概括性描述和后续的详细描述都是说明性的,其并未限制所要保护的方面。
附图说明
图1示出的是用于管理实时事件的系统的一个实施例。
图2示出的是桶装系统的一个实施例。
图3示出的是第二桶装系统的一个实施例。
图4示出的是用于管理实时事件的分布式系统的一个实施例。
图5示出的是一个逻辑流程的实施例。
图6示出的是一个逻辑流程的实施例。
图7示出的是计算架构的一个实施例。
图8示出的是通信架构的一个实施例。
具体实施方式
各实施例涉及的是为实时事件的大量订户提供支持的技术和系统。这些实施例可以动态地将订户过滤到桶中,其中发布内容只被分发给与发布者处于相同的桶的订户。所述桶可被动态创建和移除,以便将订户的发布率降低或提高至可接受的等级。各实施例可以使用一种双层桶装(bucketing)算法来执行过滤,该算法的存储器和CPU效率很高,并且会随着的订阅的庞大数量而缩放。在有必要创建新桶以及在这些桶之间分发用户时,该技术还可以减小订户的上下文损失。各实施例可以向外扩展到多个服务器,以便适应数量庞大的订户和发布内容。由此,这些实施例可以改进运营商、设备或网络的负担能力、可扩展性、模块性、可扩充性或互操作性。
下文给出的是常规实时事件中可能存在的数据流问题的一个示例。对于具有例如一百万名订户的实时聊天事件来说,如果有百分之五的订户在指定的一秒中发布评论,那么分发给每个订户的评论数量将会是50,000条。如果每条评论的大小是200字节,那么每个订户消耗的带宽将会是10MB/s。在数据未被完全消耗时,这种处理不但是效率低下的,而且还有可能导致网络饱和,并且需要耗费大量的处理器资源来进行处理。诸如智能电话之类的设备有可能会不堪重负。分发服务器必须将50,000条评论分发给一百万名订户,而这有可能需要很高的处理成本,如果每条评论有200个字节,那么这将会耗费10TB/s。更进一步,所发布的评论的上下文有可能会在大量的发布内容中丢失,由此会使任何指定订户都很难跟进。并且这有可能会使无法每秒消耗50,000条评论的订户感到不知所措。
图1示出的是为实时事件的大量订户提供支持的系统100的框图。举个例子,在一个实施例中,系统100可以包括一个由计算机实施的系统100,该系统具有多个组件,例如订户110、实时事件主机120以及订户130。这里使用的术语“系统”和“组件”指的是与计算机相关的实体,包括硬件、软硬件组合、软件或是运行中的软件。例如,组件可以作为在处理器上运行的进程、处理器、硬盘驱动器、多个存储驱动器(光学和/或磁存储介质)、对象、可执行文件、运行线程、程序和/或计算机来实施。作为例证,在服务器上运行的应用和服务器都可以是一个组件。一个或多个组件可以驻留在运行线程和/或进程内部,并且组件可以定位在一台计算机上,和/或根据指定实施方式的需要而在两台或更多计算机之间分布。这里的实施例并不受限于本上下文。
在图1所示的例证实施例中,系统100的组件可以作为电子设备的一部分来实施。关于电子设备的示例可以包括但不局限于:移动设备、个人数字助理、移动计算设备、智能电话、蜂窝电话、手持机、单向寻呼机、双向寻呼机、消息传递设备、计算机、个人计算机(PC)、台式计算机、膝上型计算机、笔记本计算机、手持式计算机、服务器、服务器阵列或服务器群、web服务器、网络服务器、因特网服务器、工作站、微型计算机、大型计算机、超级计算机、网络设备、web设备、分布式计算系统、多处理器系统、基于处理器的系统、消费电子设备、可编程消费电子设备、电视、数字电视、机顶盒、无线接入点、基站、订户站、移动订户中心、无线电网络控制器、路由器、集线器、网关、网桥、交换机、机器或是其组合。虽然图1所示的系统100只具有采用某种拓扑结构且数量有限的设备,但是应该预料到的是,系统100可以根据指定实施方式的需要而包括更多或更少采用替换拓扑结构的部件。
系统100的组件可通信地经由不同类型的通信媒体相耦合。这些组件可以协调彼此之间的操作。所述协调可以包括单向或双向信息交换。例如,组件可以采用经由通信媒体传递的信号的形式来传递信息。该信息可以作为分配给不同信号线路的信号来实施。在这种分配中,每个消息都是一个信号。但是,其他实施例也可以改用数据消息。该数据消息可以在不同的连接上发送。例示的连接包括并行接口、串行接口和总线接口。
在不同的实施例中,系统100可以包括订户110、130。这里的实施例通常涉及大量订户,例如数以百计、数以千计或数以百万计的订户。为了简单起见,在这里显示了两个订户。订户110、130可以是如上所述的电子设备。出于论述目的,使用订户110或130的人员或用户也可以被称为订户,并且应该理解的是,人们是借助订户110、130来订阅实时事件以及向实时事件发布内容。订户110、130可以接收和显示发布内容,例如发布至实时事件的文本、图像、视频或其他内容。订户110、130可以允许用户输入发布内容,例如在键盘上键入的内容,来自相机的视频或照片,来自麦克风的音频等等。然后,订户110、130可以将输入的发布内容以如下所述的方式发布到实时事件。
在不同的实施例中,系统100可以包括实时事件主机120。实时事件主机120可以管理订户以及将内容发布给订户的处理。实时事件主机120可以保持一个双层桶装系统,其中第一层是由槽构成的,第二层则是由桶构成的。槽包含的是一组订户,桶包含的则是一组槽。在加入实时事件时,可以按照判定算法把订户放在一个槽中。当订户发布时,与发布者属于同一个桶的槽组中的所有订户都可以接收该发布内容。分配给不同的桶的订户也许不接收该发布内容。桶的数量可以根据判据动态调整,例如每个桶的发布速率或是订户的数量。将槽分组到桶的处理可以基于一些判定算法,例如聚类算法。通过创建新桶,可以减少桶中的槽的数量,由此减少每一个桶的发布内容的数量。同样,通过移除桶,可以在桶中分配更多的槽,由此增加每个桶的发布内容的数量。以这种方式实施的桶装处理为分配给同一个桶的订户集合保持内容上下文。
实时事件主机120可以对跨越一组服务器的订阅实施负载平衡。通过使用某一判定算法,可以将订户分配给指定的服务器。每一个服务器都可以保持如上所述的相同的两级桶装系统。每一个发布内容都可以被发送到该组中的所有服务器,并且每一个服务器都可以使用两级桶装系统来向发布内容所属的桶发布所述发布内容。实际上,跨越接收发布内容的服务器的桶的集合也处于相同的逻辑桶之下。
图2示出的是可以由系统100实施并被划分成三个不同阶段的双层桶装系统200的一个实施例。桶装系统200可以具有编号为0到N-1的N个槽。在阶段A,所有的N个槽都被分配给一个桶:桶202。举例来说,通过散列订户名、会话ID或其他标识符,可以将订户分配到一个槽。其他分配方法也可用于实现基本均匀的分布。在一个实施例中,所述槽保持有序的方式。
在阶段B,槽204被添加到系统200中。在一个实施例中,槽0到N-1是在两个桶之间划分的。在这里可以保持编号顺序,以使槽0到floor(N/2)属于桶202,而编号为floor(N/2)+1到N-1的槽则属于桶204。通过使用这种连续分段方法,可以尽可能多地保持相邻分配,由此增加订户在桶增大之后保持在相同的桶中的可能性。
在阶段C,在系统200中添加了第三个桶206。槽0到N-1会在三个桶之间再次重新分发。槽0到floor(n/3)属于桶202,槽floor(N/3)+1到floor(2N/3)被分配给新的桶206,而槽floor(2N/3)+1到N-1则属于桶204。
系统200可以为所有的桶监视随着时间的推移的每一个桶的平均发布速率。如果发布速率超出第一阈值(上限),则可以添加桶,这样做可以减小每一个桶的发布速率。所述桶可以一直添加,直至发布速率降至上限阈值以下,或者直至桶的数量与槽的数量相同。如果发布速率低于第二阈值(下限),则可以移除桶,这样做可以提升每一个桶的发布速率。所述桶可以一直被移除,直至发布速率升至下限阈值以上或是只剩一个桶。为了避免桶的增加与减少之间发生冲突,在这里可以使用多个时段的移动的平均发布速率。也就是说,所述发布速率可以是每一个桶的移动的平均发布速率。
图3示出的是在双层桶装系统300中分两个不同阶段将槽分配给桶以及添加桶的实施例。系统300可以由系统100实施。在阶段A,桶装系统300可以始于分配给一个桶302的一定数量的有序槽。系统100可以监视桶302的发布速率。当发布速率低于第一阈值发布速率(上限)时,系统100可以在桶302中添加槽,直至所添加的槽N导致桶302的发布速率上升并超过第一阈值发布速率。
在阶段B,第二个桶304将被添加。然后,始于槽N的其他有序的槽将被分配给桶304,直至桶304的发布速率超出第一阈值发布速率或是达到槽的最大数量。
在一个实施例中,当系统300中的桶的发布速率低于第二阈值发布速率(下限)时,所创建的最后一个桶可被移除,并且它的槽可以被重新分配给先前的桶。
在一个实施例中(未显示),系统100可以监视每一个桶在每一个时段的发布速率。通过使用如上所述的相同的上限和下限阈值原理,可以基于阈值来拆分和合并桶。以一个保持了所有的槽的桶为开始,当发布速率超出第一阈值时,这时可以将这个桶分成名为桶A和桶B的两个桶。当桶A的发布速率超出第一阈值时,这时可以将桶A拆分成两个桶,而桶B则不受影响。单独的桶可被一直拆分,直至所有的桶全都介于第一与第二阈值之间。
在这个实施例中,当桶的发布速率低于下限时,这时可以考虑将该桶合并。在一个实施例中,所述将要合并的桶可以被并入第二个桶,由此所述组合不会超出上限。
图4示出的是可以实施实时事件主机120的系统400的框图。系统400可以包括一个或多个服务器,例如服务器402、404和406。系统400还可以包括服务器402、404、406托管(host)的实时事件的众多订户,表示为订户410。服务器402、404、405使用网络408而在彼此之间以及与订户410传递信息。
网络408可以实施任何众所周知的通信技术,例如适合与分组交换网络(例如因特网之类的公共网络,企业内联网之类的私有网络等等)、电路交换网络(例如公共交换电话网络)或是分组交换网络与电路交换网络的组合(具有适当的网关和翻译器)一起使用的技术。
服务器402、404、406以及订户410可以包括被设计成能与网络408共同操作的不同类型的标准通信部件,例如一个或多个通信接口、网络接口、网络接口卡(NIC)、无线电、无线发射机/接收机(收发信机)、有线和/或无线通信媒体、物理连接器等等。作为示例而不是限制,通信媒体包括有线通信媒体和无线通信媒体。关于有线通信媒体的示例可以包括线路、电缆、金属导线、印刷电路板(PCB)、背板、开关面料、半导体材料、双绞线、同轴电缆、光纤、可传播信号等等。关于无线通信媒体的示例可以包括声学、射频(RF)频谱、红外以及其他无线媒体。可以在服务器402、404、406以及订户410之间进行的一种可能的通信可以采用被适配成在两个或多个计算机进程之间传送的数据分组的形式。举例来说,所述数据分组可以包括cookie和/或相关联的上下文信息。
每一个服务器都可以保持它自己的桶装系统。例如,服务器402可以具有桶装系统410;服务器404可以具有桶装系统420;服务器406则可以具有桶装系统430。每一个服务器都可以具有自己的槽集合,例如用于服务器402的槽412。每一个服务器上的桶都可以对应于每一个其他服务器上的相同编号的桶。例如,服务器402上的B1中的槽可以对应于服务器404上的桶B1以及服务器406上的桶B1。来自分配给服务器402(例如处于槽414中)的订户的发布内容可被发布到所有服务器上的所有的桶B1,但是不会发布给桶B2或B3。
在一个实施例中,诸如订户410之类的订户可以通过任何方法而被分配给特定服务器,而这通常会导致在服务器之间具有基本均匀的分布。在一个实施例中,服务器可被排序,并且订户名称或会话ID可被散列,以便确定应该将订户分配给哪一个被排序的服务器。
在一个实施例中,每一个服务器402、404、406都可以建立并保持自己的槽和桶的集合。由于每一个发布内容都被广播到所有服务器上的相同的桶,因此,每一个服务器系统的随时间变化的发布速率将会会聚,并且每一个服务器系统都会具有相同数量的桶。
在另一个实施例中,其中一个服务器将被选定成是主服务器。主服务器确定应该保持多少个桶,然后,系统400中的每一个服务器将会映射该数字。主服务器还可以确定应该如何将槽映射到桶。
通过参考一个或多个逻辑流程,可以进一步描述用于上述实施例的操作。可以预料到的是,除非以别的方式加以指示,否则典型的逻辑流程不必按照所给出的顺序或是任何特定的顺序执行。此外,参考这些逻辑流程描述的不同活动可以采用串行或并行的方式执行。这些逻辑流程可以根据指定设计和性能约束条件集合的需要而使用所描述实施例或替换实施例中的一个或多个硬件部件和/或软件部件实施。例如,这些逻辑流程可以作为逻辑设备(例如通用或专用计算机)执行的逻辑(例如计算机程序指令)来实施。
图5示出的是逻辑流500的一个实施例。该逻辑流500可以代表由这里描述的一个或多个实施例执行的一些或所有操作。
在图5所示的例证实施例中,在方框502,逻辑流500可以将实时事件订户分配给桶以及所述桶内部的槽。例如,实时事件主机120可以散列订户的名称、会话ID或其他标识符,以便确定应该将订户分配给哪一个槽。用于实现基本均匀的初始分布的其他方法也是可以使用的。举例来说,如图2或3所示,槽可以被指定给桶。
在方框504,逻辑流程500可以监视实时事件的发布速率。例如,实时事件主机120可以为所有的桶监视随时间变化的每一个桶的平均发布速率。作为补充或替换,实时事件主机120还可以监视随时间变化的每一个桶或每一个槽的发布速率。
在方框506,当发布速率超出第一阈值(上限)时,逻辑流程500可以添加桶。例如,实时事件主机120可以像图2、图3中描述的那样添加桶,或者可以采用如上所述的方式来拆分桶。在一个实施例中,所述桶可以一直添加,直至发布速率介于第一与第二阈值之间。
在方框508,当发布速率低于第二阈值(下限)时,逻辑流程500可以移除桶。例如,实时事件主机120可以移除桶,以及将所述桶的槽重新分配给另一个桶,或者可以将桶并入另一个桶,以使发布速率升至第二阈值以上。
在方框510,逻辑流程510可以仅仅将订户发布内容发布给那些与发布订户被分配到相同的桶的其他订户。如先前所述,来自某一个桶、假设是桶A中的订户的发布内容仅仅会被发布给桶A中的其他订户。这样做减少了订户需要查看的发布内容的数量,并且其不会将发布内容稀释在大量的发布内容中,由此有助于保留上下文。当在多个服务器上分发桶时,每一个桶都充当了逻辑桶,并且发布内容可以被广播到多个服务器,但是只会发布给处于相同的逻辑桶的订户。
图6示出的是逻辑流程600的一个实施例。该逻辑流程600可以代表由这里描述的一个或多个实施例执行的一些或所有操作。
在图6所示的例证实施例中,在方框602,逻辑流程600可以保持一个用于托管实时事件的有序服务器集合。例如,实时事件主机120可以作为服务器集合来实施。在需要时,服务器可以根据网络和事件状况而被添加或移除。
在方框604,逻辑流程可以在每一个服务器上保持至少一个桶。服务器上的每一个桶都可以具有处于每一个其他服务器上的相应的桶,由此创建逻辑桶。每一个桶都可以具有处于其内部的至少一个槽。
在方框606,逻辑流程600可以将订户分配到服务器。例如,通过散列订户的名称或会话ID,可以确定将订户分配到哪一个服务器。
在方框608,逻辑流程600可以将订户分配到服务器上的桶和槽。方框608与图5的方框502是类似的。
在方框610,逻辑流程600可以监视实时事件的发布速率。例如,集合中的每一个服务器可以为服务器上的所有的桶监视每一个桶在时间上的平均发布速率。作为补充或替换,每一个服务器还可以监视每一个桶或每一个槽随着时间变化的发布速率。在一个实施例中,主服务器可以监视所有服务器上的发布速率。
在方框612,逻辑流程600可以将订户发布内容广播给所有服务器。例如,当分配给特定服务器的订户发布评论时,这时可以将该评论发送给集合中的所有服务器。
在方框614,逻辑流程600可以将订户发布内容仅仅发布给其他那些被分配到相同的逻辑桶的订户。也就是说,所述发布内容可以被广播给集合中的所有服务器,但是仅仅发布给每一个服务器上与所述发布内容源自的桶相对应的桶。
图7示出的是适合实施先前描述的不同实施例的例示计算架构700的一个实施例。该计算架构700包括不同的通用计算部件,例如一个或多个处理器、协处理器、记忆单元、芯片组、控制器、外设、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(I/O)组件等等。但是,这些实施例并不局限于由计算架构700实现的实施方式。
如图7所示,计算架构700包括处理单元704、系统存储器706以及系统总线708。处理单元704可以是不同商用处理器中的任何一种。双处理器和其他多处理器架构也可用作处理单元704。系统总线708为系统组件提供了一个对接到处理单元704的接口,其中所述系统组件包括但不局限于系统存储器706。系统总线708可以是若干种类型的总线架构中的任何一种,并且它还可以使用多种商用总线架构中的任何一种连接到存储器总线(具有或不具有存储器控制器),外设总线以及本地总线。
系统存储器706可以包括不同类型的存储单元,例如只读存储器(ROM)、随机存取存储器(RAM)、动态RAM(DRAM)、双数据速率DRAM(DDRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、可编程ROM(PROM)、可擦写可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)、闪存、聚合物存储器,例如铁电聚合物存储器、奥氏存储器、相位变化或铁电存储器、硅氧化氮氧化硅(SONOS)存储器、磁卡或光卡、或是适合存储信息的其他任何类型的媒体。在图7所示的例证实施例中,系统存储器706可以包括非易失存储器710和/或易失存储器712。基本输入/输出系统(BIOS)可以保存在非易失存储710中。
计算机702可以包含不同类型的计算机可读存储媒体,其中包括内部硬盘驱动器(HDD)714、读写可移除磁盘718的磁软盘驱动器(FDD)716,以及读写可移除光盘722(例如CD-ROM或DVD)的光盘驱动器720。HDD 714、FDD 716以及光盘驱动器720可以分别通过HDD接口724、FDD接口726以及光盘驱动器接口728连接到系统总线708。用于外部驱动器实施方式的HDD接口724可以包括通用串行总线(USB)和IEEE 1394接口技术中的至少一个。
驱动器以及相关联的计算机可读媒体提供了数据、数据结构、计算机可执行指令等等的易失和/或非易失存储。例如,在驱动器和存储单元710、712中可以保存多个程序模块,这其中包括操作系统730,一个或多个应用程序732,其他程序模块734以及程序数据736。
用户可以通过一个或多个有线/无线输入设备来将命令和信息输入计算机702,例如键盘738和鼠标740之类的指示设备。其他输入设备可以包括麦克风、红外(IR)遥控器、摇杆、游戏杆、指示笔、触摸屏等等。这些以及其他输入设备通常是通过输入设备接口742连接到处理单元704的,其中所述输入接口与系统总线708相耦合,但是也可以通过其他接口来连接,例如并行端口、IEEE 1394串行端口、游戏端口、USB端口、IR接口等等。
监视器744或其他类型的显示设备同样经由接口连接到系统总线708,例如视频适配器746。除了监视器744之外,计算机通常还包括其他周边输出设备,例如扬声器、打印机等等。
计算机702可以借助与一个或多个远端计算机(例如远端计算机748)的有线和/或无线通信而在使用逻辑连接的联网环境中工作。远端计算机748可以是工作站、服务器计算机、路由器、个人计算机、便携计算机、基于微处理器的娱乐装置、对等设备或其他公共网络节点,并且通常包括结合计算机702描述的很多或所有部件,但是出于简明的目的,在这里仅仅示出了记忆/存储设备750。所描述的逻辑连接包括与局域网(LAN)752和/或诸如广域网(WAN)754之类的更大网络相连的有线/无线连接。这种LAN和WAN联网环境在办公室和公司是很普遍的,并且其促成了企业级计算机网络,例如内联网,其中所有这些网络都可以连接到一个全球通信网络,例如因特网。
当在LAN联网环境中使用时,计算机702通过有线和/或无线通信网络接口或适配器756与LAN 752相连。该适配器756可以促成与LAN 752的有线和/或无线通信,其中所述LAN还可以包括部署在其上且与适配器756的无线功能进行通信的无线接入点。
当在WAN联网环境中使用时,计算机702可以包括调制解调器758,或者与WAN 754上的通信服务器相连,抑或是具有用于在WAN 754上建立通信的其他装置,例如经由因特网。调制解调器758可以是内部或外部以及有线和/或无线设备,其经由输入设备接口742与系统总线708相连。在联网环境中,结合计算机702描述的程序模块或是其某些部分可以保存在远端记忆/存储设备750中。应该预料到的是,所显示的网络连接是例示性的,并且用于在计算机之间建立通信链路的其他装置也是可以使用的。
计算机702可以通过操作并通过使用IEEE 802标准族来与有线和无线设备或实体进行通信,例如被可操作地部署成与打印机、扫描仪、台式和/或便携计算机、个人数字助理(PDA)、通信卫星、任何关联于可无线检测的标签的设备或位置(例如信息亭、书报亭、休息室)以及电话进行无线通信(例如IEEE 802.7空中调制技术)的无线设备。所述技术至少包括Wi-Fi(或无线高保真)、WiMax以及Bluetooth?无线技术。因此,所述通信可以是与常规网络一样的预定结构,或者仅仅是至少两个设备之间的自组织通信。Wi-Fi网络使用了名为IEEE 802.7x(a、b、g等等)的无线电技术来提供安全、可靠、快速的无线连接。Wi-Fi网络可以用于将计算机彼此相连,连接到因特网以及连接到有线网络(所述网络使用的是与IEEE 802.3相关的媒体和功能)。
图8示出的是适合实施先前描述的不同实施例的例示通信架构800的框图。该通信架构800包括不同的常见通信部件,例如发射机、接收机、收发信机、无线电设备、网络接口、基带处理器、天线、放大器、滤波器等等。但是,这些实施例并不局限于通信架构800实现的实施方式。
如图8所示,通信架构800包括一个或多个客户机802和服务器804。客户机802可以实现订户客户机110、130。服务器804可以实现实时事件主机120和/或服务器402、404、406。客户机802和服务器804可操作地连接到一个或多个相应的客户机数据存储器808以及服务器数据存储器810,这些服务器可以用于存储相应客户机802和服务器804的本地信息,例如cookie和/或相关联的上下文信息。
客户机802和服务器804可以使用通信框架806而在彼此之间传递信息,其中所述通信框架可以实施如上所述的网络408。
不同的实施例可以使用硬件部件、软件部件或是这二者的组合来实施。关于硬件部件的示例可以包括设备、组件、处理器、微处理器、电路、电路部件(例如晶体管、电阻器、电容器、电感器等等)、集成电路、专用集成电路(ASIC)、可编程逻辑设备(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、记忆单元、逻辑门、寄存器、半导体设备、芯片、微芯片、芯片组等等。关于软件部件的示例可以包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用编程接口(API)、指令集、计算代码、计算机代码、代码片段、计算机代码片段、码字、值、符号或是其任何组合。确定是使用硬件部件和/或软件部件来实施某个实施例的处理可以根据任意数量的因素而改变,例如预期的计算速率、功率电平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及指定实施方式所需要的其他设计或性能约束条件。
一些模式示例可以包括制品。制品可以包括用于存储逻辑的存储介质。关于存储介质的示例可以包括能够存储电子数据的一种或多种计算机可读存储媒体,这其中包括易失存储器或非易失存储器,可拆卸或不可拆卸存储器,可擦写或不可擦写存储器,可写入或可重写存储器等等。关于逻辑的示例可以包括不同的软件部件,例如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、应用编程接口(API)、指令集、计算代码、计算机代码、代码片段、计算机代码片段、码字、值、符号或是其任何组合。在一个实施例中,举例来说,制品可以存储可执行计算机程序指令,当被计算机运行时,所述指令将会促使计算机执行根据所描述的实施例的方法和/或操作。可执行计算机程序指令可以包括任何适当类型的代码,例如源代码、编译代码、解释代码、可执行代码、静态代码、动态代码等等。可执行计算机程序指令可以根据预定的计算机语言、方式或语法来实施,指示计算机执行某种功能。这些功能可以使用任何适当的高级、低级、面向对象的、可视、编译和/或解释编程语言来实施。
在这里可以使用“一个实施例”或“某个实施例”这样的表述及其衍生物来描述一些实施例。这些术语指的是在至少一个实施例中包含了结合实施例描述的特定特征、结构或特性。短语“在一个实施例”在说明书中不同位置的出现未必是指同一个实施例。
在这里可以使用“耦合”和“连接”这样的表述及其衍生物来描述一些实施例。这些实施例彼此未必是同义的。例如,一些实施例可以使用术语“连接”和/或“耦合”来描述,以便表明两个或更多部件彼此是直接物理或电接触的。但是,术语“耦合”也可以是指两个或更多部件彼此并未直接接触,但是仍旧可以彼此协作或交互。
应该强调的是,在这里提供公开摘要是为了符合需要允许读者快速确定技术公开特性的摘要的37 C.F.R Section1.72(b)。应该理解的是,所提供的摘要不用于解释和限制权利要求的范围或意义。此外,在以上的详细描述中可以看出,为了简化本公开,在单个实施例中将不同的特征组合到了一起。这种公开方法不应该被解释成是反映了所要保护的实施例所需要的特征多于每一个权利要求中明确记载的特征的意图。相反,如后续权利要求所反映的那样,本发明的主题并不是单个公开实施例中的所有特征。因此,后续权利要求将被引入到详细描述中,其中每一个权利要求自身都是一个独立的实施例。在附加权利要求中,术语“包括”以及“在其中”是作为相应术语“包含”和“其中”的简明英语等价物使用的。此外,术语“第一”、“第二”、“第三”等等仅仅是作为标签使用的,其并不是为了向其对象施加数值要求。
虽然本主题是用特定于结构特征和/或方法操作的语言描述的,但是应该理解,附加权利要求中定义的主题未必局限于上述特定特征或操作。相反,上述特定特征和操作是作为实施权利要求的例示形式公开的。

Claims (15)

1.一种计算机实施的方法,包括:
将实时事件订户分配(502)给桶以及桶内部的槽,所述桶具有至少一个槽;
监视(504)实时事件的发布速率;
当发布速率超出第一阈值时,添加(506)桶;
当发布速率低于第二阈值时,移除(508)桶;以及
将第一订户发布内容仅仅发布(510)给那些与第一订户分配到相同的桶的其他订户。
2.权利要求1的方法,还包括:
通过将订户标识符散列成槽编号来将订户分配给桶中的槽。
3.权利要求1的方法,还包括:
排序用于实时事件的整个数量的槽;
通过在用于实时事件的桶之间均匀划分槽来将槽分配给桶;以及
当添加桶时,在保持槽的顺序的同时在桶之间重新分配槽。
4.权利要求1的方法,其中监视发布速率包括:
在多个预定时段上监视每一个桶的移动的平均发布速率。
5.权利要求1的方法,还包括:
监视每一个槽的发布速率;
当发布速率介于第二阈值与第一阈值之间时,将有序的槽添加到桶中;
当添加槽导致发布速率超出第一阈值时,添加桶以及将槽分配给所添加的桶;
当添加桶导致发布速率低于第二阈值时,移除所添加的桶,以及将所移除的桶中的槽分配给先前的桶。
6.权利要求5的方法,还包括:
当不再添加桶时,采用循环方式将新槽分配给已有的桶。
7.权利要求1的方法,还包括:
监视每一个桶的发布速率;
将一个发布速率超出第一阈值的桶划分成两个桶,直至每一个桶的发布速率都降至第二与第一阈值之间;以及
将一个发布速率低于第二阈值的桶并入另一个桶,直至每一个桶的发布速率都升至第二与第一阈值之间。
8.权利要求7的方法,其中合并桶包括:
选择第二个桶来进行合并,通过选择该第二个桶以使合并之后的桶发布速率不超出第一阈值。
9.一种包含计算机可读存储介质的制品,其中该介质包含了在被执行时能使系统(100)实施权利要求1到8中任一权利要求的方法的指令。
10.一种设备,包括:
处理器(704);以及
在处理器上工作的实时事件主机模块(120),用于
将实时事件订户分配(502)给桶以及桶内部的槽,所述桶具有至少一个槽;
监视(504)实时事件的发布速率;
当发布速率超出第一阈值时,添加(506)桶;
当发布速率低于第二阈值时,移除(508)桶;以及
将第一订户发布内容仅仅发布(510)给那些与第一订户分配到相同的桶的其他订户。
11.权利要求10的设备,该实时事件主机模块还用于:
排序用于实时事件的整个数量的槽;
通过在用于实时事件的桶之间均匀划分槽来将槽分配给桶;以及
当添加桶时,在保持槽的顺序的同时在桶之间重新分配槽。
12.权利要求10的设备,该实时事件主机模块还用于:
监视每一个槽的发布速率;
当发布速率介于第二阈值与第一阈值之间时,将有序的槽添加到桶中;
当添加槽导致发布速率超出第一阈值时,添加桶以及将槽分配给所添加的桶;
当添加桶导致发布速率低于第二阈值时,移除所添加的桶,以及将所移除的桶中的槽分配给先前的桶。
13.权利要求10的设备,该实时事件主机模块还用于:
监视每一个桶的发布速率;
将一个发布速率超出第一阈值的桶划分成两个桶,直至每一个桶的发布速率都降至第二与第一阈值之间;以及
将一个发布速率低于第二阈值的桶并入另一个桶,直至每一个桶的发布速率都升至第二与第一阈值之间。
14.权利要求13的设备,该实时事件主机模块还用于选择用于合并的第二个桶来合并一个桶,以使合并之后的桶发布速率不超出第一阈值。
15.权利要求10的设备,其中:
该设备是一组服务器(402,404,406)中的一个服务器;
设备上的每一个桶都与(604)该集合中的每一个其他服务器上的桶对应;以及
第一订户发布内容仅仅被发布给(614)与第一订户分配到相同的桶的其他订户,以及与集合中的每一个服务器上的相同的桶相对应的桶。
CN201110295213.8A 2010-09-28 2011-09-28 用于为实时事件的大量订户提供支持的方法和设备 Active CN102413067B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/892649 2010-09-28
US12/892,649 US8379525B2 (en) 2010-09-28 2010-09-28 Techniques to support large numbers of subscribers to a real-time event

Publications (2)

Publication Number Publication Date
CN102413067A true CN102413067A (zh) 2012-04-11
CN102413067B CN102413067B (zh) 2014-11-12

Family

ID=45870560

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110295213.8A Active CN102413067B (zh) 2010-09-28 2011-09-28 用于为实时事件的大量订户提供支持的方法和设备

Country Status (4)

Country Link
US (1) US8379525B2 (zh)
EP (1) EP2622499B1 (zh)
CN (1) CN102413067B (zh)
WO (1) WO2012047448A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113590381A (zh) * 2021-06-30 2021-11-02 北京旷视科技有限公司 特征分发方法、装置、电子设备及计算机可读存储介质

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107548567B (zh) 2015-05-21 2020-10-27 安德鲁无线系统有限公司 在电信系统中同步多输入/多输出信号
US11533265B2 (en) 2020-07-23 2022-12-20 Vmware, Inc. Alleviating flow congestion at forwarding elements
US11165676B1 (en) * 2020-11-11 2021-11-02 Vmware, Inc. Generating network flow profiles for computing entities

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5960434A (en) * 1997-09-26 1999-09-28 Silicon Graphics, Inc. System method and computer program product for dynamically sizing hash tables
US20030084158A1 (en) * 2001-10-31 2003-05-01 Hiroyuki Saito Communication band control system
US20060036685A1 (en) * 2004-07-30 2006-02-16 Microsoft Corporation Suggesting a discussion group based on indexing of the posts within that discussion group
CN101047956A (zh) * 2006-03-30 2007-10-03 华为技术有限公司 一种多媒体广播业务系统及方法
US7702806B2 (en) * 2000-09-07 2010-04-20 Riverbed Technology, Inc. Statistics collection for network traffic
CN101782922A (zh) * 2009-12-29 2010-07-21 山东山大鸥玛软件有限公司 一种面向海量数据检索的多级桶哈希索引方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100397899C (zh) 2000-10-11 2008-06-25 联合视频制品公司 提供数据存储到点播媒体传递系统中服务器上的系统和方法
CA2335395A1 (en) * 2001-02-09 2002-08-09 Opengraphics Corporation Controlled access system for online communities
GB0123403D0 (en) 2001-09-28 2001-11-21 Tamesis Ltd Publish subscribe system
US20030135556A1 (en) 2001-12-14 2003-07-17 International Business Machines Corporation Selection of communication strategies for message brokers or publish/subscribe communications
US7653753B2 (en) 2002-03-28 2010-01-26 Precache Inc. Method and apparatus for content-based packet routing using compact filter storage and off-line pre-computation
US7720910B2 (en) 2002-07-26 2010-05-18 International Business Machines Corporation Interactive filtering electronic messages received from a publication/subscription service
US7200675B2 (en) 2003-03-13 2007-04-03 Microsoft Corporation Summary-based routing for content-based event distribution networks
US7305398B2 (en) * 2003-06-15 2007-12-04 Mordechai Teicher Apparatus and method for managing social games
US8161110B2 (en) * 2003-09-25 2012-04-17 Synthetron Nv Method and apparatus for scalable meetings in a discussion synthesis environment
JP2006101004A (ja) 2004-09-28 2006-04-13 Fujitsu Ltd 伝送装置及びリーキバケット帯域制御方法
US20060120385A1 (en) * 2004-12-02 2006-06-08 Atchison Darrell T Method and system for creating and managing multiple subscribers of a content delivery network
EP1849093A2 (en) 2005-01-06 2007-10-31 Tervela Inc. Hardware-based messaging appliance
US7631202B2 (en) 2005-03-29 2009-12-08 Microsoft Corporation Power management of wireless local area network interface devices
US7664816B2 (en) * 2005-06-10 2010-02-16 Microsoft Corporation Multi-participant online activities
US7801912B2 (en) * 2005-12-29 2010-09-21 Amazon Technologies, Inc. Method and apparatus for a searchable data service
JP2009016907A (ja) * 2007-06-29 2009-01-22 Toshiba Corp 会議システム
US7904515B2 (en) * 2007-10-09 2011-03-08 International Business Machines Corporation Solution for managing multiple related discussion threads in an online collaboration environment
US20080071901A1 (en) * 2007-11-28 2008-03-20 The Go Daddy Group, Inc. Online business community
US20100070607A1 (en) 2008-09-16 2010-03-18 Ingboo Inc. Scalable Method for Contextual Information Updates and Notification
US8868651B2 (en) * 2010-08-16 2014-10-21 Avon Products, Inc. Web community pre-population method and system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5960434A (en) * 1997-09-26 1999-09-28 Silicon Graphics, Inc. System method and computer program product for dynamically sizing hash tables
US7702806B2 (en) * 2000-09-07 2010-04-20 Riverbed Technology, Inc. Statistics collection for network traffic
US20030084158A1 (en) * 2001-10-31 2003-05-01 Hiroyuki Saito Communication band control system
US20060036685A1 (en) * 2004-07-30 2006-02-16 Microsoft Corporation Suggesting a discussion group based on indexing of the posts within that discussion group
CN101047956A (zh) * 2006-03-30 2007-10-03 华为技术有限公司 一种多媒体广播业务系统及方法
CN101782922A (zh) * 2009-12-29 2010-07-21 山东山大鸥玛软件有限公司 一种面向海量数据检索的多级桶哈希索引方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113590381A (zh) * 2021-06-30 2021-11-02 北京旷视科技有限公司 特征分发方法、装置、电子设备及计算机可读存储介质

Also Published As

Publication number Publication date
WO2012047448A3 (en) 2012-07-19
EP2622499B1 (en) 2018-10-24
CN102413067B (zh) 2014-11-12
EP2622499A4 (en) 2016-10-12
WO2012047448A2 (en) 2012-04-12
US20120075996A1 (en) 2012-03-29
US8379525B2 (en) 2013-02-19
EP2622499A2 (en) 2013-08-07

Similar Documents

Publication Publication Date Title
Mineraud et al. A gap analysis of Internet-of-Things platforms
US8996647B2 (en) Optimizing storage between mobile devices and cloud storage providers
CN102622397B (zh) 微博基础结构中的散列标签管理
CN104050248B (zh) 一种文件存储系统及存储方法
CN103763343A (zh) 一种业务访问处理方法及装置
US11595473B2 (en) Ad hoc decentralized cloud infrastructure
CN102685573A (zh) 经由多个设备的因特网内容订阅服务
CN105404506A (zh) 一种云计算镜像文件的构建方法及系统
CN102413067B (zh) 用于为实时事件的大量订户提供支持的方法和设备
CN110266505A (zh) 一种管理会话群的方法与设备
CN103152390A (zh) 分布式存储系统的节点配置方法、装置、节点及系统
US20110231229A1 (en) Hybrid Software Component and Service Catalog
CN103685576A (zh) 一种cdn节点的交互方法及cdn管理系统
Law et al. IEEE 802.3 industry connections Ethernet bandwidth assessment
US20150089062A1 (en) Methods and systems for dynamically specializing and re-purposing computer servers in an elastically scaling cloud computing infrastructure
CN104506630B (zh) 基于用户角色的权限数据生成方法、服务器及系统
CN111600942B (zh) 报表处理方法、装置及设备
CN104166581A (zh) 一种面向增量制造设备的虚拟化方法
CN103310304A (zh) 流程模型的管理方法和装置
CN102521155A (zh) 实现表项在物理存储器上动态分配的方法和装置
CN106330492A (zh) 一种配置用户设备转发表的方法、装置及系统
Wu et al. Design and implementation of business-driven BI platform based on cloud computing
CN109446158A (zh) 一种数据管理的方法、装置以及存储介质
KR20190083089A (ko) 가상 데스크탑 서비스 제공 시스템 및 가상 데스크탑 서비스 제공 방법
Sharma et al. A highly reliable and cost-effective service model for finite population clouds: Analysis and implementation

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150424

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150424

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.