CN103051667A - 向多个目标分发多源推送通知 - Google Patents

向多个目标分发多源推送通知 Download PDF

Info

Publication number
CN103051667A
CN103051667A CN2012103351316A CN201210335131A CN103051667A CN 103051667 A CN103051667 A CN 103051667A CN 2012103351316 A CN2012103351316 A CN 2012103351316A CN 201210335131 A CN201210335131 A CN 201210335131A CN 103051667 A CN103051667 A CN 103051667A
Authority
CN
China
Prior art keywords
event
data
target
source
normalized
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
CN2012103351316A
Other languages
English (en)
Other versions
CN103051667B (zh
Inventor
C·F·瓦斯特斯
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 CN103051667A publication Critical patent/CN103051667A/zh
Application granted granted Critical
Publication of CN103051667B publication Critical patent/CN103051667B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/107Computer-aided management of electronic mailing [e-mailing]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Finance (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Development Economics (AREA)
  • Accounting & Taxation (AREA)
  • General Business, Economics & Management (AREA)
  • Quality & Reliability (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Tourism & Hospitality (AREA)
  • Operations Research (AREA)
  • Data Mining & Analysis (AREA)
  • Game Theory and Decision Science (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明涉及向多个目标分发多源推送通知。将事件递送给消费者。一种方法包括访问专用数据。该方法还包括:将专用数据归一化以创建归一化事件。确定基于订阅将接收该事件的多个最终消费者。将来自归一化事件的数据格式化成对全部所确定的最终消费者合适的多个不同格式。将来自归一化的事件的数据以对最终消费者合适的格式递送给多个最终消费者中的每个。

Description

向多个目标分发多源推送通知
技术领域
本发明涉及推送通知,尤其涉及向多个目标分发多源推送通知。
背景技术
背景和相关技术
计算机和计算系统已经影响了现代生活的几乎每个方面。计算机通常在工作、休闲、保健、运输、娱乐、家政管理等中都有涉猎。
此外,计算系统功能还可以通过计算系统的经由网络连接互连到其他计算系统的能力来增强。网络连接可包括,但不仅限于,经由有线或无线以太网的连接,蜂窝式连接,或者甚至通过串行、并行、USB或其它连接的计算机到计算机的连接。这些连接允许计算系统访问其他计算系统上的服务,并快速且有效地从其他计算系统接收应用数据。
开发者可以在iOS、安卓(Android)、视窗手机(
Figure BDA00002125174700011
Phone)、视窗
Figure BDA00002125174700012
等之上构建移动应用,这些移动应用专注于递送大众感兴趣的新闻、关于世界性事件或足球、橄榄球、曲棍球、棒球联盟或球队的球迷的信息和事实,以使它们保持最新。对于这些应用(以及多种多样的其他应用)中的任何应用而言,在球迷的最喜爱球队得分时或世界上某类新闻事件突发时弹出提醒或祝词(toast)的通知是极大的与众不同者。该与众不同者通常构建和运行服务器基础结构来将这些事件推送到操作系统平台或设备厂商提供的通知渠道中,这超出了专注于优化用户体验的许多移动应用(“app”)开发人员的技能配套。并且如果他们的应用非常成功,则简单的基于服务器的解决方案将迅速触及可伸缩性上限,因为及时地将事件分发给数万或甚至数十万或数百万设备是非常有挑战性的。
另外,大量当代移动应用被编写为通过现有因特网资产的简单体验。例如,新闻应用可以在用户打开应用时即时地显示来自主要新闻提供者的RSS订阅源的最新大标题,而不必导航到网站。独立软件开发者和小的独立软件厂商正在构建大量这样的应用,并且正在以非常低的价格点销售这些应用。对于同样将从推送通知中大大受益的应用而言,不仅事件的分发提出了挑战,而且事件数据的获取也提出挑战,因为获取同样将需要构建和运行非寻常的服务器基础结构。
在此要求保护的主题不限于解决任何缺点或仅在诸如上述环境中操作的各个实施例。相反,提供该背景仅用以示出在其中可实践在此描述的部分实施例的一个示例性技术领域。
发明内容
在此所示的一个实施例包括将事件递送给消费者的方法。该方法包括访问专用数据。该方法还包括:将专用数据归一化以创建归一化事件。确定基于订阅将接收该事件的多个最终消费者。将来自归一化事件的数据格式化成对每个所确定的最终消费者单独合适的多个不同格式。将来自归一化事件的数据以如下格式递送给所述多个最终消费者中的每个:所述格式对各个最终用户合适并且符合由通过其达到消费者的目标基础结构所定义的协议规则。
提供发明内容述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
另外的特征和优点将在以下的描述中阐述,并且部分可从该描述中显而易见,或者可以从此处的教示实践中习得。本发明的特征和优点可以通过在所附权利要求中特别指出的手段和组合来实现并获取。本发明的特征将从以下描述和所附权利要求书中变得完全显而易见,或者可通过如下所述对本发明的实践而获知。
附图说明
为了描述可获得本主题的上述和其它优点和特征的方式,将通过参考附图中示出的本主题的具体实施例来呈现以上简要描述的本主题的更具体描述。应该理解,这些附图仅描绘了各典型实施例,因此其不应被认为是对范围的限制,各实施例将通过使用附图用附加特征和细节来描述并解释,在附图中:
图1示出了一系统的概览,该系统用于收集事件数据、将事件数据映射到通用事件、以及将事件数据分发给各个目标消费者。
图2示出了事件数据获取和分发系统;
图3示出事件数据获取系统的示例;
图4示出事件数据分发系统的示例;
图5示出了事件数据获取和分发系统;
图6示出了徽章计数器功能的实施方式;以及
图7示出了将事件递送给消费者的方法。
具体实施方式
实施例可以将事件获取系统与通知分发系统和用于将事件映射到通知的映射模型相结合。实施例还能够基于订阅者提供的标准对通知进行过滤。另外,实施例可以具有深度能力,比如以有效方式跟踪各个目标的递送计数。
这样的示例在图1中示出。图1示出了来自大量不同源116的信息被递送给大量不同目标102的示例。在一些示例中,来自单个源的信息或从多个源116聚合的信息可被用来创建被递送给大量目标102的单个事件。注意,指示符102可用于共同指代所有目标、或者通常指代单独的目标。具体的各个目标可以由另外的区分符来指示。
图1示出了源116。注意,指示符116可用于共同指代所有源、或者通常指代单独的源。具体的各个源可以由另外的区分符来指示。源116例如可以包括多种多样的公共和专用网络服务,包括:RSS、Atom和OData订阅源;电子邮件邮箱,包括但不限于这样的支持IMAP和POP3协议;社交网络信息源116,比如推特(Twitter)时间线或脸谱(Facebook)墙;以及外部发布/订阅基础结构上的订阅,比如Windows Azure ServiceTM Bus(Windows Azure服务总线)或Amazon’s Simple Queue Service(亚马逊简单队列服务)。
源116可以用于获取事件数据。如下面将更详细地解释那样,源116可以被组织成获取主题,比如获取主题140-1。事件数据可以被映射到在104一般地示出的归一化事件。归一化事件104可以由一个或多个映射模块130映射到针对特定目标102的通知。通知132表示针对目标102的通知。应当理解,单个事件104可以被映射到多个不同的通知,其中所述不同的通知为适于分发给多个不同目标102的不同格式。例如,图1A示出了目标102。目标102支持依赖于目标特性的多个不同的消息格式。例如,一些目标102可以支持中继格式的通知,其他目标102可以支持用于
Figure BDA00002125174700041
7电话的MPNS(推送通知服务)格式,其他目标102可以支持用于iOS设备的APN(Apple推送通知)格式的通知,其他目标102可以支持用于安卓(Android)设备的C2DM(云到设备消息收发)格式的通知,其他目标102可以支持用于设备上的浏览器的JSON(Java脚本对象记法),其他目标102可以支持HTTP(超文本传输协议)的通知,等等。
因此,由映射模块130进行的映射可以把从来自一个或多个数据源116的信息中创建的单个事件104映射到针对不同目标102的多个不同通知。不同的通知132然后可以被递送给各个目标102。
在一些实施例中,这可以使用图2所示的扇出(fan-out)拓扑来实现。图2示出了源116。如本文稍后将讨论的,实施例可以利用获取分区140。获取分区140中的每一个可包括多个源116。可能存在大量且各种各样的源116。源116提供信息。这样的信息例如可以包括、但不限于电子邮件、文本消息、实时股票报价、实时赛事比分、新闻更新,等等。
图2示出了每个分区都包括获取引擎,如说明性的获取引擎118。获取引擎118从源116收集信息,并基于该信息来生成事件。在图2所示的示例中,多个事件被示为由获取引擎使用各个源来生成。使用事件104-1来进行说明。在一些实施例中,事件104-1可如以下解释的那样来归一化。获取引擎118可以是诸如因特网等网络上的从该网络上的源116收集信息的服务。
图2示出了事件104-1被发送给分发主题144。分发主题144将事件扇出给多个分发分区。分发分区120-1被用作所有分发分区的类似物。各分发分区每个都服务于由订阅所表示的多个终端用户或设备。分发分区所服务的订阅的数目可不同于其他分发分区所服务的数目。在一些实施例中,分区所服务的订阅的数目可取决于分发分区的能力。可替代地或附加地,分发分区可基于与终端用户的逻辑或地理接近度被选择以服务于用户。这可允许以更加及时的方式将提醒递送给最终用户。
在所示示例中,分发分区120-1包括分发引擎122-1。分发引擎122-1咨询数据库124-1。数据库124-1包括关于订阅的信息,该信息具有关于相关联的递送目标102的细节。具体而言,该数据库可包括信息,诸如描述目标102的平台的信息、目标102所使用的应用、目标102的网络地址、使用目标102的终端用户的用户偏好,等等。使用数据库124-1中的信息,分发引擎122-1构建束126-1,其中束126-1包括事件104(或至少来自事件104的信息)和从目标102中标识出要将来自事件104-1的信息作为通知发送到的多个目标102的路由名单128-1。束126-1随后被置于队列130-1中。
分发分区120-1可包括多个递送引擎。递送引擎使各个束从队列130-1中出队并将通知递送给目标102。例如,递送引擎108-1可从队列130-1中取出束126-1并将事件104信息发送给路由名单128-1中标识出的目标102。因此,包括事件104-1信息的通知134能以适用于不同目标102并专用于单独目标102的多种不同的格式从各分发分区被发送给目标202。这允许在递送系统的边缘处从共同事件104-1中创建针对各个目标102进行了个别化的个别化通知134,而不是通过该递送系统运送大量个别化的通知。
下面示出可在一些实施例中使用的信息收集和事件分发系统的可替代描述。
作为基础,一个实施例系统正使用可从华盛顿州雷蒙德市的微软公司获得的Windows Azure Service Bus(Windows Azure服务总线)所提供的发布/订阅基础结构,但该基础结构也可以类似的形式存在于各种其他消息收发系统中。该基础结构提供促进所呈现的方法的所述实现的两种能力:主题和队列
队列是用于消息的存储结构,它允许以顺序的次序来添加(入队)消息和以与添加消息相同的次序来移除(出队)消息。可由任何数目的并发客户端添加和移除消息,从而允许平抑入队侧的负载并在出队侧的各接收者的范围内平衡处理负载。队列还允许各实体在使消息出队时获取该消息上的锁,从而允许消费客户端显式地控制:何时将消息从队列中实际删除、或者在对检索到的消息的处理失败的情况下是否可将它恢复回队列中。
主题是具有队列的所有特性的存储结构,但允许多个并发存在的‘订阅’,这些订阅各自允许对入队消息序列的孤立的经过滤的视图。主题上的每个订阅都产生每个入队消息的副本,假定该订阅的相关联的过滤条件肯定地匹配该消息。因此,入队到具有10个订阅(其中每个订阅具有匹配所有消息的简单的‘穿过’条件)的主题的消息将产生总共10个消息,其中每个订阅一个消息。像队列一样,订阅可具有多个并发消费者,从而提供多个接收者范围内的处理负载的平衡。
另一基本概念是‘事件’,它在底层发布/订阅基础结构方面仅仅是消息。在一个实施例的上下文中,事件服从管控消息正文和消息属性的使用的一组简单约束。事件的消息正文一般作为不透明数据块来流动,并且一个实施例所认为的任何事件数据一般在消息属性中流动,它是作为表示该事件的消息的一部分的一组键/值对。
现在参考图3,一个实施例基础结构的目标是大规模地从各种各样的不同源116获取事件数据,并将这些事件转发到发布/订阅基础结构以供进一步处理。处理可包括某种形式的分析、实时搜索、或通过拉或推通知机制将事件重新分发到感兴趣的订阅者。
一个实施例基础结构定义了获取引擎118,用于获取适配器和事件归一化(normalization)的模型,用于保持关于获取源116的元数据的分区存储138,公共分区和调度模型,以及用于在运行时如何使获取源116状态的用户发起的改变流入系统而无需进一步的数据库查找的模型。
在具体实现中,获取可支持具体的获取适配器从各种各样的公共和私有联网服务中获取事件,联网服务包括RSS、Atom和OData订阅源,包括但不限于这种支持IMAP和POP3协议的电子邮件邮箱,像Twitter时间线或Facebook墙的社交网络信息源116,以及对像Windows Azure Service Bus(Windows Azure服务总线)或Amazon’s Simple Queue Service(Amazon简单队列服务)的外部发布/订阅基础结构的订阅。
事件归一化
事件数据被归一化以使事件可以由发布/订阅基础结构上的所述事件被移交到的订阅者来实际消费。归一化在本上下文中是指,事件被映射到具有对信息项的一致表示的共同事件模型上,其中该信息项在所述在各种上下文中可能是广大订阅者所感兴趣的。此处所选择的模型是键/值对的平面列表形式的事件的简单表示,该键/值对可由系统不进一步解释的单个不透明二元数据块伴随。该事件表示在大多数发布/订阅基础结构上是轻松地可表示的,并且还非常清楚地映射到诸如HTTP的常见因特网协议。
为了示出事件归一化,考虑RSS或Atom订阅源入口到事件104的映射(参见图1和2)。RSS和Atom是两个因特网标准,它们通常非常广泛地用于按时间次序发布新闻和其他当前的信息,并且有助于使该信息可用于计算机程序中以结构化方式的处理。RSS和Atom共享非常类似的结构以及一组命名不同但语义相同的数据元素。因此,第一个归一化步骤是为在两个标准中定义的这种语义相同的元素作为键来定义公共名称,像标题或提要。第二,通常用相应的“本机”名称来映射仅出现在一个标准中但未出现在另一个标准中的数据。除此之外,这些种类的订阅源通常带有“扩展”,该扩展是未在核心标准中定义、但使用相应标准中的可扩展性工具来添加额外数据的数据项。
以跨不同事件源116共享的常见方式来映射这些扩展中的一些(包括但不限于用于地理位置的GeoRSS或将结构化数据嵌入到Atom订阅源中的OData),使得向其发射事件的发布/订阅基础结构上的订阅者可按照统一的方式来解释地理位置信息,而不论是否已经从RSS或Atom或Twitter时间线获取了数据。继续GeoRSS示例,表示地理“点”的简单GeoRSS表达式可因此被映射到表示WGS84坐标的一对数字“纬度”/“经度”属性。
带有复杂的结构化数据(诸如OData)的扩展可以实现保留复杂类型结构和数据但不会复杂化基础事件模型的映射模型。一些实施例归一化到正则的紧凑复杂数据(像JSON)表示,并将复杂的数据属性(例如复杂数据类型“人”的OData属性“承租人”)映射到键/值对,其中键是属性名“承租人”,并且值是用姓名、生物信息、和以JSON序列化形式表示的地址信息来描述人的复杂数据。如果数据源是XML文档,像它在RSS或Atom的情形中那样,则可通过将XML数据转录到保留XML所提供的结构的JSON中,但使XML特性(像属性和元素)扁平化来创建值,意味着将同一XML元素节点的下属的XML属性和元素二者映射到JSON属性作为没有进一步区别的“兄弟”。
源和分区
一个实施例基础结构在“源描述”记录中捕捉关于数据源116的元数据,该记录可被存储在源数据库138中。“源描述”可具有一组公共元素和一组数据源专用的元素。公共元素可包括源的名称、源116被认为是有效的期间的时间跨度间隔,人类可读的描述,以及供区别的源116的类型。源专用元素取决于源116的类型并可包括网络地址、凭证或获得对该地址所表示的资源的访问的其他安全关键材料、以及元数据,该元数据指导源获取适配器以特定方式执行数据获取(像提供时间间隔以供检查RSS订阅源)、或以特定方式执行时间转发(诸如,将从当前事件新闻订阅源获取的事件间隔开至少60秒),使得如果这是要构建的端到端的体验,则通知接收者有机会在受限的屏幕表面上观看每个爆炸性新闻条目。
在诸如源数据库138的一个或多个存储中保持源描述。可在这些存储内沿两个不同的轴跨这些存储地以及在这些存储内对源描述进行分区。
第一个轴是系统承租人的区别。系统承租人或“命名空间”是在系统内为实体创建隔离范围的机制。示出一个具体的情形,如果“Fred”是实现一个实施例的系统的用户,则Fred将能够创建为Fred提供隔离的虚拟环境的承租人范围,该虚拟环境可完全独立于系统中其他源116地保持源描述和配置和状态。这个轴可作为区别因素来跨各存储地传播源描述,尤其是在承租人需要隔离(可包括诸如密码的安全敏感数据的)已存储的元数据,或出于技术、管理或商业原因的情形中。系统承租人还可表示与一个特定数据中心的亲合性,在该数据中心中保持源描述,并且在那里执行数据获取。
第二个轴可以是从预定义标识符范围中选择的数字分区标识符的区别。可从源描述包含的不变量中得出分区标识符,诸如源名称和承租人标识符。可使用散列函数(许多候选之一是Jenkins  散列,参见http://www.burtleburtle.net/bob/hash/doobs.html)从这些不变量中得出分区标识符,并且可对散列值使用模函数,来向下计算所得的散列值直到分区标识符范围。将标识符范围选择为比预期存储该系统中曾保持的全部源描述所需要的最大数目的存储分区更大(并且可以是显著地更大)。
引入存储分区通常由容量限制来激励,该容量限制要么立即与底层数据存储上的存储容量配额相关,要么与影响获取引擎118的容量限制(诸如,给定数据中心或数据中心部分的带宽约束)相关,这可导致实施例创建跨不同数据中心或数据中心部门地利用容量以满足入门带宽需求的获取分区140。存储分区拥有整个标识符范围的子集,并且可因此从其分区标识符中直接推断源描述记录与存储分区(和访问该分区所需要的资源)的关联。
除提供存储分区轴以外,分区标识符还用于调度或获取任务,以及清晰地定义获取分区140对给定源描述的所有权关系(可能与对存储分区的关系不同)。
所有权和获取分区
系统中的每个源描述可由特定的获取分区140所拥有。使用清晰且唯一的所有权,因为系统不需要并行地来自多个位置中确切的同一源116的事件,这可能会导致发射双重事件。为了使这点更具体,在承租人范围内定义的一个RSS订阅源由系统中的正好一个获取分区140所有,并且在分区内,在时间的任意给定点上存在在特定订阅源上运行的一个已调度的获取。
获取分区140通过获得分区标识符范围的所有权的方式来获得源描述的所有权。可以使用可具有故障转移功能并可分配主/备份所有者的外部专用分区系统,或使用分区标识符范围在担任获取引擎角色的不同计算实例的数目之间均匀分散的更简单的机制,来为获取分区140分配标识符范围。在具有外部分区系统的更高级的实现中,如果系统从“冷”状态启动,意味着该分区尚没有前一个所有者,则分区的所选的主所有者负责播种对任务的调度。在较简单的场景中,拥有分区的计算实例拥有对调度的播种。
调度
获取任务的调度需求取决于具体源的性质,但通常存在两种类型的获取模型,该获取模型在一些所描述的实施例中实现。
在第一个模型中,所有者在源的网络服务上启动某种形式的连接或长期运行的网络请求,并在该连接上等待数据报或流形式的数据被返回。在通常也被称为长期轮询的长期运行的请求的情形中,源网络服务将保存该请求直到发生超时或直到数据变为可用—进而,获取适配器将等待用或不用负载结果来完成该请求,并随后重发该请求。因此,该获取调度模型具有“紧”循环的形式,该循环在源116的所有者得知源的时候得以初始化,并且其中在当前连接或请求完成或被临时中断时,新的请求或连接立即被初始化。由于所有者直接控制紧循环,因此该循环可在所有者正在运行时可靠地保持存活。如果所有者停止并重新启动,则该循环也重新启动。如果所有者改变,则循环停止,并且新的所有者启动该循环。
在第二个模型中,源的网络服务不支持长期运行的请求或在数据变为可用时产生该数据的连接,但是是无论何时查询都立即返回的常规的请求/响应服务。在这些服务中,这一点应用于许多web资源,以持续的紧循环来请求数据导致源116上的巨大量的负载,并且也导致显著的网络流量,该网络流量要么仅指示源116尚未改变,要么在最糟的情形中反复地携带相同的数据。为了平衡及时的事件获取的需求并且不用无效的查询流量使源116过载,获取引擎118将由此在“定时的”循环中执行请求,其中基于间隔周期性地执行源116上的请求,该间隔平衡那些考虑并且还考虑了来自源116的提示。“定时的”循环在源116的所有者得知源的时候被初始化。
存在定时循环的两个值得注意的实现变型。第一个变型用于低规模、最大努力场景,并使用本地、存储器内的定时对象来调度,这使规模、控制和重新启动特性与紧循环的那些特性相类似。该循环被初始化,并立即调度使获取任务的第一次迭代运行的定时器回调。当该任务完成(即使有错误)并且确定该循环将继续执行时,在接下来即将执行任务的瞬间调度另一个定时器回调。
第二个变型使用‘经调度的消息’,这是包括Windows AzureTM Service Bus的若干发布/订阅系统的一个特征。该变型以稍高的复杂度为代价提供显著更高的获取比例。调度循环由所有者来初始化,并且将消息置于获取分区的调度队列中。该消息包括源描述。它接下来由执行获取任务的工人拾取,并随后将所得的事件入队到目标发布/订阅系统中。最后,它还将新的“经调度的”消息入队到调度队列中。该消息被称为“经调度的”,因为它是用它变为可用于供调度队列上的任何消费者检索的时间瞬间来标记的。
在该模型中,获取分区140可通过具有一个主要播种调度并且可与执行实际获取任务的任意数目的“工人”角色配对的“所有者”角色而被扩展。
源更新
在系统运行时,获取分区140需要能够得知要观察的新的源116以及将不再观察哪个源116。除了(下面描述的)由于检测到的不可恢复的或临时的错误而将源116列入黑名单的情形以外,关于这一点的决定通常在于用户,并且是与管理服务142交互的结果。为了传递这种改变,获取系统在底层发布/订阅基础结构中维护“源更新”主题。每个获取分区140具有针对该主题的专用订阅,该订阅具有过滤条件,该过滤条件将适合的消息约束为携带获取分区所拥有的范围内的分区标识符的那些消息。这使管理服务142能够设置关于新的或已引退的源116的更新,并将它们发送到正确的分区140,而不需要分区所有权分布的知识。
管理服务142将更新命令提交到包括源描述、分区标识符(出于前述的过滤目的)、和操作标识符的主题,该操作标识符指示是否要添加源116或者是否从系统中移除源116。
一旦获取分区140所有者已检索到命令消息,则要么它将为新的源116调度新的获取循环,要么它将中断并挂起、或甚至使现有的获取循环引退。
列入黑名单
可将数据获取失败的源116临时地或永久地列入黑名单。当源116网络资源不可用或返回与所发起的获取请求不直接相关的错误时,执行临时列入黑名单。临时列入黑名单的持续时间取决于错误的性质。通过中断常规的调度循环(紧或定时)并在期望另一方解决错误条件的时间瞬间调度循环的下一次迭代(经由回调或经调度的消息),来执行临时列入黑名单。
当确定错误是获取请求的直接结果时执行永久列入黑名单,意味着该请求正导致认证或授权错误、或远程的源116指示某个其他请求错误。如果将资源永久列入黑名单,则在分区存储中将源116标记为已列入黑名单,并立即中止获取循环。恢复永久列入黑名单的源116需要移除存储中的黑名单标记,可能还有引起请求的行为改变的配置改变,并且经由源更新主题来重新启动获取循环。
通知分发
各实施例可被配置成将来自给定输入事件的信息的副本分发给与特定范围相关联的大量“目标102”中的每一个,并且对于每一目标102在最小的时间中这样做。目标102可包括耦合到适配器的标识符的设备或应用的地址和用于访问该通知系统或基础结构的辅助数据,其中该适配器到某第三方通知系统或某网络可访问的外部基础结构。
一些实施例可包括被分成三个不同的处理角色的体系结构,这些角色在下文中详细描述并且可参考图4来理解。如图4中由‘1’、省略号、以及‘n’所示,处理角色中的每一个可具有该处理角色的一个或多个实例。注意,在应用于处理角色时,在每一情况下使用‘n’应被认为是与另一情况不同,这意味着处理角色中的每一个不必具有相同数目的实例。‘分发引擎’112角色接受事件并将它们与包含各组目标102的路由名单(参见例如图2中的路由名单128-1)绑定。‘递送引擎’108接受这些绑定并处理路由名单以递送给由目标102所表示的各网络位置。由管理服务142所示出的‘管理角色’提供管理目标102的外部API,并且还负责接受来自递送引擎108的统计数据和出错数据并负责处理/存储该数据。
数据流锚定在‘分发主题144’上,各事件被提交到该主题以供分发。所提交的事件是使用消息属性来用它们相关联的范围进行标记的,这可以是将事件与原始消息进行区分的上述约束之一。
在所示示例中,分发主题144对于每一‘分发分区120’具有一个穿过(未过滤)订阅。‘分发分区’是负责向给定范围的目标102的子集分发并递送通知的被隔离的资源集合。发送到分发主题中的每一事件的副本对所有并发地配置的分发分区而言通过它们相关联的订阅实际上是同时可用的,从而允许分发工作的并行化。
通过划分分区(partitioning)来达到的并行化帮助实现及时的分发。为理解这一点,考虑具有一千万个目标102的范围。如果目标的数据被保持在未经分区的存储中,则该系统将必须顺序地遍历单个的大型数据库结果集,或者如果结果集是使用对同一存储进行的分区查询来获得的,则用于获取目标数据的吞吐量将至少被给定存储的前向(fronting)网络网关基础结构的吞吐量上限所扼制,结果,将通知递送给其描述记录在给定结果集中发生得非常晚的目标102的递送等待时间将可能是不令人满意的。
相反,如果一千万个目标102分散在1000个存储上,每一存储保持10000个目标记录,并且这些存储与像在此描述的那样以分区的形式执行查询并处理结果的专用计算基础结构(本文描述的‘分发引擎122’和‘递送引擎108’)配对,则对目标描述的获取可以在很大一组计算和网络资源上并行化,从而显著地降低分发所有事件时从所分发的第一到最后事件所测量到的时间差。
分发分区的实际数目在技术上没有限制。它的范围可以从单个分区到大于一的任何数目的分区。
在所示示例中,一旦分发分区120的‘分发引擎122’获得了事件104,它首先计算事件数据的大小并随后计算路由名单128的大小,这可基于事件大小与底层消息收发系统的可允许的最大消息大小和绝对大小上限中的较小者之间的增量来计算。以如下方式来限制事件的大小:有某一最小的头上空间来容纳‘路由名单’数据。
路由名单128是包含目标102描述的列表。路由名单由分发引擎122通过对分区的存储124中保持的目标102执行匹配该事件的范围的查找查询来创建,从而返回与该事件的范围和基于事件数据的过滤条件来缩小选择的一组进一步条件相匹配的所有目标102。各实施例可包括将结果限制为在当前时刻被认为有效的目标102的时间窗口条件,这意味着当前UTC时间处于目标描述记录中包含的开始/结束有效时间窗口内,以及其他过滤条件。这一设施被用于黑名单,这在本文中稍后描述。在遍历查找结果时,该引擎创建事件104的副本,用从存储124中检索到的目标描述将路由名单128填充到最大大小,并随后将所得的事件束和路由名单排入该分区的‘递送队列130’中。
路由名单技术确保从分发引擎122到递送引擎108的事件的事件流速高于底层基础结构上的实际消息流速,意味着例如在30个目标描述可连同事件数据一起打包到路由名单128中的情况下,事件/目标对的流速是事件/目标对被直接编组到消息中的情况的30倍。
递送引擎108是来自递送队列130的事件/路由名单绑定126的消费者。递送引擎108的角色要使这些绑定出队,并将事件104递送给路由名单128中列出的所有目的地。递送通常通过将事件消息格式化成相应目标基础结构所理解的通知消息的适配器来发生。例如,通知消息可按MPNS格式来递送给
Figure BDA00002125174700141
7电话、按APN(Apple Push Notification(Apple推送通知))格式递送给iOS设备、按C2DM(Cloud To Device Messaging(云到设备消息收发))格式递送给安卓设备、按JSON(Java Script Object Notation(Java脚本对象记法))格式递送给设备上的浏览器、按HTTP(超文本传输协议)来递送,等等。
递送引擎108通常使递送在各独立的目标102上并行化,并且使递送在共享由目标基础结构所实施的范围的各目标102上串行化。后一情况的示例是递送引擎中的特定适配器可选择通过单个网络连接发送以特定通知平台上的特定目标应用为目标的所有事件。
使用递送队列130将分发引擎122和递送引擎108解除耦合,以允许递送引擎108的独立伸缩并避免递送减速倒退回并阻塞分发查询/打包阶段。
每一分发分区120可具有并发地观察递送队列130的任何数目的递送引擎实例。递送队列130的长度可被用来确定多少递送引擎是并发地活动的。如果队列长度超过特定阈值,则可向分区120添加新递送引擎实例以增加发送吞吐量。
分发分区120和相关联的分发和递送引擎实例能以实际上无限的方式来伸缩,以达到大规模的最优并行化。如果目标基础结构能够接收并以并行的方式向各设备转发一百万个事件请求,则所描述的系统能够跨其递送基础结构来分发事件——可能利用跨各数据中心的网络基础结构和带宽——以用事件提交来使目标基础结构饱和以供像目标基础结构在负载不足且在给定的任何授予的递送限额之下所允许的那样及时地递送给所有所需目标102的方式。
在经由其相应基础结构适配器将消息递送给目标102时,在一些实施例中,该系统记录一些统计信息条目。这些统计信息条目包括接收到递送绑定与递送出任何单独消息之间的持续时间的测量到的时间段以及实际发送操作的持续时间的测量到的时间段。统计信息的另一部分是递送是成功还是失败的指示符。这一信息被收集在递送引擎108内并在逐个范围的基础上和逐个目标-应用的基础上积累成平均值。‘目标应用’是所引入的用于统计信息累积的具体目的的编组标识符。计算得到的平均值以所定义的时间间隔被发送到递送状态队列146。该队列由管理服务142中的一(组)工作者来排空,它出于各种目的来将事件数据提交给数据仓库。这些目的可包括,除操作监控以外,对向其递送事件的承租人记账和/或将统计信息公开给承租人以供第三方自己记账。
在检测到递送错误时,这些错误被分类成临时和永久错误状况。临时错误状况可包括例如不准许该系统达到目标基础结构的递送点的网络故障或目标基础结构报告已经临时达到了递送限额。永久错误状况可包括例如目标基础结构上的认证/授权错误或不能在没有手动干预的情况下复原的其他错误以及其中目标基础结构报告该目标不再可用或该目标想要在永久的基础上接受消息的错误状况。一旦被分类,错误报告就被提交到递送故障队列148。对于临时错误状况,该错误还可包括绝对UTC时间戳,直至该错误状况预期要被解决为止。同时,对于这一递送引擎实例所进行的任何进一步本地递送,该目标被目标适配器在本地列入黑名单。该黑名单也可包括时间戳。
递送故障队列148由管理角色中的一(组)工作者来排空。永久错误可使得相应目标从管理角色能访问的其相应分发分区存储124中立即删除。‘删除’意味着该记录确实被移除或者另选地通过将该记录的有效性时间段的‘结束’时间戳设置成该错误的时间戳来使该记录仅仅被移出查找查询的视线。临时错误状况可使得目标在该错误所指示的时间段期间被停用。可以通过将目标的有效性时间段的开始上移到该错误所指示的时间戳来完成停用,在该所指示的时间戳处预期该错误状况将复原。
图5示出通过分发主题144将获取分区140耦合到分发分区120的系统概览图示。
如上所述,在一些实施例中,可以从来自源116的信息中创建通用事件104。通用事件可以以通用格式来生成,使得在以后,数据可以被生成并置于平台专用的格式。现在在下面示出可以把在一个实施例中实现的通用事件属性映射到特定平台通知的表达的多个示例。
$(name)或者(name)或者>(name)对具有给定名称(name)的事件属性的引用。属性名称不是大小写敏感的。如果所引用的属性的至包含JSON串表达形式的复杂类型数据,则属性名称可以是“点”表达(例如属性.项目)。该表达解析成属性的文本值或者在属性不存在示解析成空串。该值可以根据目标字段的目标大小约束而被修剪。
$(name,n)像上面那样,但是文本在n字符处被显式地修剪,例如$(title,20)将标题属性的内容修剪在20个字符。
.(name,n)像上面那样,但是文本被加上三个点的后缀,因为其被修剪。经修剪的串和后缀的总大小将不超过n个字符。具有“这是标题行”的输入属性的.(title,20)产生‘这是标题…’。
%(name)像$(name)那样,只是输出是经加密的URI。
$/body是指事件的实体本体。实体本体(entity body)不是可修剪的,因为其可能包含包括二进制数据在内的任意数据并且穿过现有的系统。如果$body被映射到目标上的文本属性,则在一些实施例中该映射仅当该本体包含文本内容时才会成功。如果实体本体为空,则表达解析成空串。
$count是指从给定源递送的事件的每目标的计数。该表达解析成由系统计算出的数字,该数字表示相应目标自从上次请求对该计数器进行复位以来已经从该源116接收了多少消息。在一些示例性实施例中,该数字具有从0至99的范围。已经计数器达到了99,则其不再递增。该值通常被用于徽章和标题计数器。
‘[..text...]’或“[..text...]”是文字。文字包含被封装在单引号或双引号中的任意文本。文本可以包含根据转义规则的转义形式的特殊字符。(参见ECMA-262,7.8.4)expr1+expr2是将两个表达加入单个串的串接运算符。所述表达可以是以上任何表达。
expr1??expr2是条件运算符,其在expr1不为0或0长度串的情况下对expr1求值并且在其他情况下对expr2求值。??运算符比+运算符具有更高优先级、即表达‘p’+$(a)??$(b)将产生以文字‘p’为前缀的a或b的值。
实施例可以使用映射语言来从事件104取得属性,并且将它们映射到正确的位置以用于目标102上的通知:
Figure BDA00002125174700161
Figure BDA00002125174700171
针对Windows电话的标题通知还可以利用自动跟踪计数的$count属性。
Figure BDA00002125174700172
针对iPad应用,实施例可以将其映射到如下所示的提醒:
Figure BDA00002125174700173
Figure BDA00002125174700181
或者仅仅应用图表上的徽章(计数器):
在一些实施例中,这些映射的缺省是:每个目标属性都被映射到具有相同名称的输入属性。因此,实施例可以如下简洁地为Windows电话指定目标:
Figure BDA00002125174700183
并且Text1、Text2、和Param将自动从具有输入事件上的相同名称的消息属性中映射-并且将在这样的属性不存在的情况下保持为空(它们将不被发送)。这允许对源116何时处于开发者控制下进行完全源侧的属性控制-就像Windows AzureTM服务总线队列和主题订阅通常那样。
针对谷歌安卓(Google Android),该映射有一定程度的不同,因为C2DM服务不定义通知的固定格式,并且不具有到安卓用户界面shell中的立即绑定,使得映射采取自由形式属性袋(bag),其中目标属性作为键并且表达作为值。如果PropertyMap被省略,则所有输入属性都被直通地映射到C2DM端点。
Figure BDA00002125174700184
选择性通知分发
在此所述的实施例可以实现允许广播系统中的通知目标102订阅任何提供如下标准的事件流的功能:所述标准允许基于地理、人口统计或其他标准选择性地将事件从该事件流分发给该目标。
具体而言,事件数据可以具有各种分类数据。例如,事件可以是被加上地理标签的。可替代地,可以由源比如通过包括事件的类别串来将事件分类。
再次参考图1并且如上面参考各个附图所述,事件104可以包括各种类型的分类数据。例如,事件可以包括地理标签,其中地理坐标被包括在提醒中。分发引擎122-1可以检查事件以找出加上地理标签的数据。分发引擎122-1还可以检查数据库124-1以确定对具有该地理标签的数据感兴趣的目标102。例如,用户可以指定他们的位置,或者大致位置。用户可以指定:与他们的位置相关的或者距他们的位置在5英里内的任何提醒都应当递送给该用户。分发引擎122-1可以确定:该数据中的地理标签是否落入该指定。如果是这样,则分发引擎122-1可以将该特定用户包括在事件104的路由名单128-1中。否则,该用户可以从路由名单中被排除,并且将不接收具有提醒104的通知。
对于加上地理标签的数据,用户(或者控制对用户的通知和事件递送的其他实体)可以指定多个不同边界中的任何边界。例如,指定距给定位置在5英里内的任何位置基本上指定了某个点以及围绕该点的某个圆。然而,其他实施例可以包括指定:地缘政治边界、比如城市、州、国家或大陆;建筑物或综合性建筑的形状等等。来自华盛顿州雷蒙德市微软公司的SQL服务器
Figure BDA00002125174700201
具有地理空间功能,该功能可用作分发分区120-1的一部分以确定要递送事件的目标102。
一般而言,事件数据可以包括分类信息。例如,事件中包括的串可以对事件数据进行分类。将目标包括在路由名单128-1中可以基于选择参加类别或选择退出类别的用户。例如,目标102-1可以选择参加类别,并且分类串可以关于事件104-1进行比较。如果事件104-1包括指示选择参加的类型的串,则目标102-1将被包括在束126-1的路由名单128-1中,使得具有来自事件104-1的数据的通知将被递送给目标102-1。
徽章计数器
所描述的某些实施例允许在事件广播系统中跟踪各个计数器,而无需对每个终端用户的计数器进行单独的跟踪。这可由接收一系列事件的服务器来完成,其中该系列中的每个事件都与时间戳列表相关联。每个事件的时间戳列表都包括该事件的时间戳和该系列中所有先前事件的时间戳。
用户将时间戳发送给服务器。时间戳是用户在用户设备处何时执行过某些用户交互的指示符。例如,时间戳可以是用户何时在设备上打开过一应用的指示。服务器将用户所发送的时间戳与快要发送给用户的事件的时间戳列表作比较。服务器在时间戳列表中对用户发送时间戳之后发生的、快要发送给用户的事件的时间戳数量进行计数,并且发送这一计数作为徽章计数器。
所附图6中示出一示例。图6示出目标102。目标102-1从递送引擎108-1接收事件104和徽章计数器106。目标102-1将时间戳110发送给递送引擎108-1。目标102-1向递送引擎108-1发送的时间戳110可基于目标102-1处的某一动作。例如,用户可打开与递送引擎108-1向目标102-1发送的事件104和徽章计数器106相关联的应用。打开应用可导致时间戳110从目标102-1被发送到递送引擎108-1,指示何打开过应用。
递送引擎108-1接收一系列112事件(如104-1、104-2、104-3和104-n所示)。该系列112事件中的每一事件分别与时间戳的列表114-1、114-2、114-3或114-n相关联。时间戳的每一列表包括当前事件的时间戳、以及该系列中当前事件之前的每一事件的时间戳。在所示示例中,事件104-1是向递送引擎108-1发送的供递送给目标102的第一事件。由此,与事件104-1相关联列表114-1包括与事件104-1被发送到递送引擎108-1的时间相对应的单个条目T1。在事件104-1之后将事件104-2发送到递送引擎108-1,并且由此事件104-2与包括对应于事件104-1和104-2何时被分别发送到递送引擎108-1的时间戳T1和T2的列表114-2相关联。在事件104-2之后将事件104-3发送到递送引擎108-1,并且由此事件104-3与包括对应于事件104-1、104-2和104-3何时被分别发送到递送引擎108-1的时间戳T1、T2和T3的列表114-3相关联。在事件104-3(且可能如列表114-n中省略号所指示的多个其他事件)之后将事件104-n发送到递送引擎108-1,并且由此事件104-n与包括对应于事件104-1、104-2、104-3至104-n何时被分别发送到递送引擎108-1的时间戳T1、T2、T3至Tn的列表114-n相关联。
假设目标102-1没有将任何时间戳110发送到递送引擎108-1。当递送引擎发送事件104-1时,它也会发送对应于T1的值为1的徽章计数器。当递送引擎发送事件104-2时,它也会发送对应于两个时间戳T1和T2的计数的值为2的徽章计数器。当递送引擎发送事件104-3时,它也会发送对应于两个时间戳T1、T2和T3的计数的值为3的徽章计数器。当递送引擎发送事件104-n时,它也会发送对应于n个时间戳T1至Tn的计数的值为n的徽章计数器。
现在假设目标发送带有发生在时间T2和T3之间的绝对时间的时间戳110。在这一点处有可能事件104-1和104-2已经被递送到目标102-1。当事件104-3被发送到目标时,递送引擎108-1在确定徽章计数器的值时,仅对发生在时间戳110之后的时间戳进行计数。由此,在这一场景中递送引擎108-1将对应于T3(因为事件T1和T2发送在时间戳110之前)的值为1的徽章计数器连同事件104-3一起发送。这一过程可使用从目标102-1接收到的被用来确定徽章计数器值的最新近的时间戳110来重复。
以下讨论现涉及可以执行的多种方法以及方法动作。虽然用特定次序讨论或用以特定次序发生的流程图示出了各个方法动作,但除非明确规定否则不需要特定次序,或因为一动作依赖于另一动作在执行该动作之前完成而需要特定次序。
现在参考图7,示出了方法700。该方法包括将事件递送给消费者的动作。方法700包括访问专用数据(动作702)。例如,源116中的每个都可以以对于不同的源116特有的专用格式来提供数据。
方法700还包括:将专用数据归一化以创建归一化事件(动作704)。例如,如上所示,事件104可以按照来自不同源116的归一化性的专用数据被归一化。
方法700还包括:确定基于订阅将接收该事件的多个最终消费者(动作706)。例如,如图2所示,分发引擎122-1可以询问数据库124-1以确定目标102处的什么用户已经订阅。
方法700还包括:将来自归一化事件的数据格式化成对全部所确定的最终消费者合适的多个不同格式(动作708)。例如,如图1所示,归一化事件可以专门被格式化成对各个目标合适的格式。
方法700还包括:将来自归一化事件的数据以对最终消费者合适的格式递送给多个最终消费者中的每个(动作710)。
此外,各种方法可由包括一个或多个处理器和诸如计算机存储器等计算机可读介质的计算机系统来实施。具体而言,计算机存储器可存储计算机可执行指令,这些指令在由一个或多个处理器执行时使得诸如各实施例中所述的各个动作等各种功能被执行。
本发明的各实施例可以包括或利用包含计算机硬件的专用或通用计算机,这将在下文中更详细地讨论。本发明范围内的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种显著不同的计算机可读介质:物理计算机可读存储介质和传输计算机可读介质。
物理计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储(如CD、DVD等)、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。
“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的网络和/或数据链路。以上介质的组合也被包括在计算机可读介质的范围内。
此外,在到达各种计算机系统组件时,以计算机可执行的指令或数据结构的形式存在的程序代码装置可以自动地从传输计算机可读介质传输到物理计算机可读存储介质(或者反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传送到计算机系统RAM和/或计算机系统处的较不易失性的计算机可读物理存储介质。因此,计算机可读物理存储介质可被包括在同样(或甚至主要)利用传输介质的计算机系统组件中。
计算机可执行指令包括,例如使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。
本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备二者中。
本发明可具体化为其他具体形式而不背离其精神或特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变被权利要求书的范围所涵盖。

Claims (7)

1.一种将事件(104)传递给消费者的方法,该方法包括:
访问专用数据(702);
将所述专用数据归一化以创建归一化的事件(104)(704);
确定基于订阅将接收事件(104)的多个最终消费者(706);
将来自归一化的事件(104)的数据格式化成对全部所确定的最终消费者合适的多个不同格式(708);以及
将来自归一化的事件(104)的数据以对所述最终消费者合适的格式递送给所述多个最终消费者中的每个(710)。
2.如权利要求1所述的方法,其特征在于,访问专用数据包括:从多个源访问数据。
3.如权利要求1所述的方法,其特征在于,将来自归一化的事件的数据以对所述最终消费者合适的格式递送给所述多个最终消费者中的每个包括:首先以所述归一化的格式扇出来自所述事件的数据。
4.如权利要求1所述的方法,其特征在于,将来自归一化的事件的数据以对所述最终消费者合适的格式递送给所述多个最终消费者中的每个包括:将所述事件打包到多个束中,其中所述束中的每个都包括所述归一化的格式的所述事件以及路由名单,所述路由名单标识多个最终消费者,包括为所述路由名单中所标识的最终用户标识格式。
5.如权利要求4所述的方法,其特征在于,将所述事件打包到多个束中包括:询问数据库,以通过参考所述数据库中的最终消费者偏好来确定:哪些最终用户被包括在所述路由名单中。
6.如权利要求1所述的方法,其特征在于,将所述专用数据归一化以创建归一化的事件包括:将所述数据表示成键值对,所述对由单个不透明二元数据块伴随,事件归一化系统不进一步解释所述单个不透明二元数据块。
7.如权利要求1所述的方法,其特征在于,将来自归一化的事件的数据格式化成对全部所确定的最终消费者合适的多个不同格式包括:通过映射具有相同名称的消息属性来将来自所述归一化的事件的一个或多个属性映射到格式。
CN201210335131.6A 2011-09-12 2012-09-11 向多个目标分发多源推送通知 Expired - Fee Related CN103051667B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201161533669P 2011-09-12 2011-09-12
US61/533,669 2011-09-12
US13/278,415 2011-10-21
US13/278,415 US20130067024A1 (en) 2011-09-12 2011-10-21 Distributing multi-source push notifications to multiple targets

Publications (2)

Publication Number Publication Date
CN103051667A true CN103051667A (zh) 2013-04-17
CN103051667B CN103051667B (zh) 2017-04-19

Family

ID=47830824

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210335131.6A Expired - Fee Related CN103051667B (zh) 2011-09-12 2012-09-11 向多个目标分发多源推送通知

Country Status (6)

Country Link
US (1) US20130067024A1 (zh)
EP (1) EP2756475A4 (zh)
JP (1) JP2014528126A (zh)
KR (1) KR20140072044A (zh)
CN (1) CN103051667B (zh)
WO (1) WO2013039798A2 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104244201A (zh) * 2013-06-07 2014-12-24 三竹资讯股份有限公司 经由双重路线传递移动通知的装置与方法
CN104615702A (zh) * 2015-01-30 2015-05-13 五八有限公司 一种信息推送方法及装置
CN106375977A (zh) * 2016-09-18 2017-02-01 中国联合网络通信集团有限公司 一种通信小区收入的计算方法和装置及服务器
CN110971643A (zh) * 2018-09-30 2020-04-07 北京国双科技有限公司 消息推送方法和装置、存储介质和处理器

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8595322B2 (en) 2011-09-12 2013-11-26 Microsoft Corporation Target subscription for a notification distribution system
US20130091197A1 (en) 2011-10-11 2013-04-11 Microsoft Corporation Mobile device as a local server
US8949307B2 (en) * 2011-11-15 2015-02-03 Google Inc. Cloud-to-device messaging for application activation and reporting
US10353684B2 (en) * 2012-02-08 2019-07-16 Flytxt BV Method to launch an application on a mobile device using short code
CN106974688B (zh) 2012-10-31 2022-02-01 奇普林医药公司 外科切口和闭合设备
US20140304787A1 (en) * 2013-04-05 2014-10-09 Microsoft Corporation Badge notification subscriptions
US20140324503A1 (en) * 2013-04-30 2014-10-30 Microsoft Corporation Multi-source data subscriptions
US10248474B2 (en) * 2014-01-29 2019-04-02 Microsoft Technology Licensing, Llc Application event distribution system
US9847918B2 (en) * 2014-08-12 2017-12-19 Microsoft Technology Licensing, Llc Distributed workload reassignment following communication failure
US11916727B2 (en) 2015-01-23 2024-02-27 Ebay Inc. Processing high volume network data
US10425341B2 (en) 2015-01-23 2019-09-24 Ebay Inc. Processing high volume network data
US9830603B2 (en) 2015-03-20 2017-11-28 Microsoft Technology Licensing, Llc Digital identity and authorization for machines with replaceable parts
US9929989B2 (en) 2015-09-01 2018-03-27 Microsoft Technology Licensing, Llc Interoperability with legacy clients
US9882854B2 (en) 2015-09-01 2018-01-30 Microsoft Technology Licensing, Llc Email parking lot
US9979682B2 (en) 2015-09-01 2018-05-22 Microsoft Technology Licensing, Llc Command propagation optimization
US10163076B2 (en) 2015-09-01 2018-12-25 Microsoft Technology Licensing, Llc Consensus scheduling for business calendar
US9977666B2 (en) 2015-09-01 2018-05-22 Microsoft Technology Licensing, Llc Add a new instance to a series
KR101889159B1 (ko) * 2015-10-21 2018-08-17 주식회사 포스코 철강 공정 미들웨어의 이벤트 서비스 방법 및 프레임워크 시스템
US9813781B2 (en) * 2015-10-27 2017-11-07 Sorenson Media, Inc. Media content matching and indexing
CN107665225B (zh) * 2016-07-29 2022-01-28 北京京东尚科信息技术有限公司 信息推送方法和装置
US10628237B2 (en) * 2016-09-16 2020-04-21 Oracle International Corporation Cloud service integration flow
US10375191B2 (en) * 2017-11-29 2019-08-06 Microsoft Technology Licensing, Llc Notifications on an online social networking system
US11057442B2 (en) * 2018-01-27 2021-07-06 Vmware, Inc. System and method for workspace sharing
WO2019164807A1 (en) * 2018-02-20 2019-08-29 Veniam, Inc. Systems and methods for real-time handling and processing of data in a network of moving things
US10681164B2 (en) * 2018-05-03 2020-06-09 Microsoft Technology Licensing, Llc Input and output schema mappings
US11169855B2 (en) * 2019-12-03 2021-11-09 Sap Se Resource allocation using application-generated notifications
US10719517B1 (en) * 2019-12-18 2020-07-21 Snowflake Inc. Distributed metadata-based cluster computing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100083124A1 (en) * 2008-09-26 2010-04-01 Fwix, Inc. System and method for aggregating web feeds relevant to a geographical locale from multiple sources
US20100114857A1 (en) * 2008-10-17 2010-05-06 John Edwards User interface with available multimedia content from multiple multimedia websites

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2361861A1 (en) * 2001-11-13 2003-05-13 Ibm Canada Limited-Ibm Canada Limitee Wireless messaging services using publish/subscribe systems
US7143118B2 (en) * 2003-06-13 2006-11-28 Yahoo! Inc. Method and system for alert delivery architecture
US7743137B2 (en) * 2005-02-07 2010-06-22 Microsoft Corporation Automatically targeting notifications about events on a network to appropriate persons
US8588578B2 (en) * 2006-03-29 2013-11-19 Transpacific Digidata, Llc Conversion of video data to playable format
US20070260674A1 (en) * 2006-05-02 2007-11-08 Research In Motion Limited Push framework for delivery of dynamic mobile content
US20090187593A1 (en) * 2008-01-17 2009-07-23 Qualcomm Incorporated Methods and Apparatus for Targeted Media Content Delivery and Acquisition in a Wireless Communication Network
US8819258B2 (en) * 2009-05-07 2014-08-26 International Business Machines Corporation Architecture for building multi-media streaming applications
KR20110071828A (ko) * 2009-12-21 2011-06-29 한국전자통신연구원 콘텐츠 변환 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100083124A1 (en) * 2008-09-26 2010-04-01 Fwix, Inc. System and method for aggregating web feeds relevant to a geographical locale from multiple sources
US20100114857A1 (en) * 2008-10-17 2010-05-06 John Edwards User interface with available multimedia content from multiple multimedia websites

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104244201A (zh) * 2013-06-07 2014-12-24 三竹资讯股份有限公司 经由双重路线传递移动通知的装置与方法
CN104244201B (zh) * 2013-06-07 2017-11-10 三竹资讯股份有限公司 经由双重路线传递移动通知的装置与方法
CN104615702A (zh) * 2015-01-30 2015-05-13 五八有限公司 一种信息推送方法及装置
CN104615702B (zh) * 2015-01-30 2020-05-15 五八有限公司 一种信息推送方法及装置
CN106375977A (zh) * 2016-09-18 2017-02-01 中国联合网络通信集团有限公司 一种通信小区收入的计算方法和装置及服务器
CN110971643A (zh) * 2018-09-30 2020-04-07 北京国双科技有限公司 消息推送方法和装置、存储介质和处理器
CN110971643B (zh) * 2018-09-30 2022-07-29 北京国双科技有限公司 消息推送方法和装置、存储介质和处理器

Also Published As

Publication number Publication date
WO2013039798A3 (en) 2013-05-10
KR20140072044A (ko) 2014-06-12
EP2756475A4 (en) 2015-04-22
WO2013039798A2 (en) 2013-03-21
JP2014528126A (ja) 2014-10-23
CN103051667B (zh) 2017-04-19
EP2756475A2 (en) 2014-07-23
US20130067024A1 (en) 2013-03-14

Similar Documents

Publication Publication Date Title
CN103051667A (zh) 向多个目标分发多源推送通知
US10791423B2 (en) Passive check-in
US20170277802A1 (en) Generating logical expressions for search queries
JP6126099B2 (ja) タイムリーイベントデータ分配用マーケットプレイス
CN107431664B (zh) 消息传递系统和方法
US10460353B2 (en) Real-time cross-device user category synchronization in an advertising campaign
US9178951B2 (en) Hot within my communities
Perera et al. Twitter analytics: Architecture, tools and analysis
US8706673B2 (en) Dynamic playbook: experimentation platform for social networks
US10313482B2 (en) Method, device and system for providing services based on location information and terminal device thereon
JP2014239967A (ja) フレンド登録方法、プログラムおよびゲームサービスプラットフォームサーバ
CN106471539A (zh) 用于混淆受众测量的系统和方法
US9628355B1 (en) System for validating site configuration based on real-time analytics data
KR101282292B1 (ko) 증강현실을 이용한 광고 서비스 시스템 및 그 방법
KR20100022871A (ko) 커뮤니케이션 제공 시스템 및 커뮤니케이션 서비스 제공 방법
CN102354284A (zh) 即时通信中用以设置地理对应信息的方法及系统
CN106126519A (zh) 媒体信息的展示方法及服务器
US20180376311A1 (en) Systems and methods for communicating with a unique identifier
CN103051465A (zh) 对广播系统徽章计数器的计数和重置
CN103067349A (zh) 将事件分发给大量设备
CN103049863A (zh) 用于及时的事件数据分发的市场
CN103051666B (zh) 横向扩展系统以获取事件数据
US10402842B2 (en) Updating costs for assets via a messaging system
Groh et al. State of the art in mobile social networking on the web

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1181579

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150728

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

Effective date of registration: 20150728

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170419

Termination date: 20180911

CF01 Termination of patent right due to non-payment of annual fee
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1181579

Country of ref document: HK