CN102782681B - 用于支持用户内容馈送的机制 - Google Patents

用于支持用户内容馈送的机制 Download PDF

Info

Publication number
CN102782681B
CN102782681B CN201180011238.9A CN201180011238A CN102782681B CN 102782681 B CN102782681 B CN 102782681B CN 201180011238 A CN201180011238 A CN 201180011238A CN 102782681 B CN102782681 B CN 102782681B
Authority
CN
China
Prior art keywords
content
consumer
producer
strategy
originator
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.)
Active
Application number
CN201180011238.9A
Other languages
English (en)
Other versions
CN102782681A (zh
Inventor
亚当·艾丽·希尔博斯坦
布莱恩·弗兰克·库伯
拉嘎胡娜斯·拉马克里施那
杰弗里·特雷西
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.)
R2 Solutions Ltd.
Original Assignee
Yahoo Inc
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 Yahoo Inc filed Critical Yahoo Inc
Publication of CN102782681A publication Critical patent/CN102782681A/zh
Application granted granted Critical
Publication of CN102782681B publication Critical patent/CN102782681B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/535Tracking the activity of the user
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Data Mining & Analysis (AREA)
  • Marketing (AREA)
  • Health & Medical Sciences (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Software Systems (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

在一个实施例中,对于一个或多个内容产生者中的每一个,访问该内容产生者产生一个或多个内容项的内容产生速率;并且对于一个或多个内容消耗者中的每一个,访问该内容消耗者消耗一个或多个内容项的内容消耗速率。对于多个消耗者-产生者对中的每一对,基于内容消耗者的内容消耗速率和内容产生者的内容产生速率,在推送策略和拉取策略之间作出选择来用于将一个或多个内容项从内容产生者递送到内容消耗者,其中消耗者-产生者对包括内容消耗者之一和内容产生者之一并且该内容消耗者追随该内容产生者。

Description

用于支持用户内容馈送的机制
相关申请
这是要求2010年3月1日提交的12/714,876号美国非临时专利申请的优先权的PCT申请,这里通过引用将该美国申请全部并入。
技术领域
本公开概括而言涉及构造多个内容产生者和多个内容消耗者之间的多个内容馈送(content feed),更具体而言涉及分析每个内容馈送以在推送(push)策略和拉取(pull)策略之间为该内容馈送作出选择。
背景技术
因特网用户想要保持跟进最新资讯。为此,诸如Twitter和Facebook之类的社交联网站点向用户提供由用户的朋友生成的状态更新、发布照片、电影评论等等的馈送。诸如My Yahoo和iGoogle之类的内容汇总者提供汇总来自多个RSS来源的馈送的定制网页。类似地,诸如Digg和Reddit之类的新闻汇总者提供关于像“娱乐”和“技术”之类的主题的最新报道的馈送,而诸如CNN.com之类的新闻站点则提供追随像“医疗保健争论”这样的细粒度主题的能力。
近实时的内容馈送正变成许多流行的web应用的关键特征。示例包括Twitter和Facebook上的用户生成事件,以及iGoogle和My Yahoo上的关于特定主题的新闻报道。因此,能够高效地构造示出来自用户的馈送的最新内容的网页,对于这些web应用来说是越来越重要的。构造这样的馈送必须是快速的,以便网页迅速加载。然而,内容的宽扇出(fan-out)(例如一些来源具有许多追随者)和高偏差(skew)(例如扇出和速率在大范围中变化)使得难以缩放这种应用。
发明内容
本公开概括而言涉及构造多个内容产生者和多个内容消耗者之间的多个内容馈送,更具体而言涉及分析每个内容馈送以在推送策略和拉取策略之间为该内容馈送作出选择。
在特定实施例中,对于一个或多个内容产生者中的每一个,访问该内容产生者产生一个或多个内容项的内容产生速率;并且对于一个或多个内容消耗者中的每一个,访问该内容消耗者消耗一个或多个内容项的内容消耗速率。对于多个消耗者-产生者对中的每一对,基于内容消耗者的内容消耗速率和内容产生者的内容产生速率,在推送策略和拉取策略之间作出选择来用于将一个或多个内容项从内容产生者递送到内容消耗者,其中消耗者-产生者对包括内容消耗者之一和内容产生者之一并且该内容消耗者关注该内容产生者。根据推送策略,内容项中的每一项是在该内容项由内容产生者产生时被从内容产生者递送到内容消耗者的。根据拉取策略,内容项中的每一项是在该内容项被内容消耗者消耗时被从内容产生者递送到内容消耗者的。
下面在具体实施方式部分中结合接下来的附图更详细描述本公开的这些和其他特征、方面和优点。
附图说明
图1图示了用于为各个内容馈送确定策略的示例方法。
图2图示了示例连接网络。
图3图示了用于为各个内容馈送确定策略的示例系统体系结构。
图4图示了示例网络环境。
图5图示了示例计算机系统。
具体实施方式
现在参考如附图中图示的本公开的几个实施例来详细描述本公开。在以下描述中,阐述了许多具体细节以提供对本公开的透彻理解。然而,本领域的技术人员很清楚,没有这些具体细节中的一些或全部,也可实现本公开。在其他场合中,没有详细描述公知的过程步骤和/或结构,以免不必要地模糊本公开。此外,虽然是结合特定实施例来描述本公开的,但应当理解这里的描述并不想要将本公开限于所描述的实施例。相反,描述想要覆盖包括在如所附权利要求限定的本公开的精神和范围内的替换、修改和等同。
内容馈送也称为web馈送或者简称为“馈送”,是一种用于在网络用户之间递送内容尤其是频繁更新的内容的机制。内容馈送可采取各种格式。例如,RSS(最常见的全称是“Really Simple Syndication”(真正简单整合))是广泛用于递送内容的web馈送格式族。类似地,经由内容馈送递送的内容可以是各种格式的,例如但不限于博客条目、新闻头条、事件、音频和视频。本公开设想到了任何可应用的内容馈送和内容。内容馈送概念上在各端连接内容产生者和内容消耗者。在特定实施例中,内容产生者或简称为产生者是产生可被一个或多个内容消耗者消耗的内容的实体。另一方面,内容消耗者或简称为消耗者是消耗由一个或多个内容产生者产生的内容的实体。在这个意义上,可以说消耗者“追随”(follow)由一个或多个产生者产生的内容或者是这些内容的追随者。内容可经由连接产生者和消耗者的馈送被从产生者递送到消耗者。注意,实体可以既是产生者也是消耗者,因为该实体可在某一时间产生内容供他人消耗,并且在另一时间消耗由他人产生的内容。从而,对于一实体为另一实体产生内容的馈送,该实体被称为产生者;而对于同一实体消耗来自另一实体的内容的另一馈送,该实体被称为消耗者。有时,两个实体,实体A和实体B,可以是彼此相互的产生者和消耗者。也就是说,在一些情况下,实体A可产生内容供实体B消耗;而在其他情况下,实体B可产生内容供实体A消耗。从而,可以有两个分开的馈送,两者都连接实体A和实体B。对于一个馈送,实体A是产生者并且实体B是消耗者;而对于另一馈送,实体B是产生者并且实体A是消耗者。此外,产生者可以是或不是其产生的内容的原始创建者。例如,产生者可产生原本由其他新闻记者撰写的新闻报道或者原本由其他摄影师拍摄的数字照片或者由该产生者自己记录的视频剪辑。
在特定实施例中,追随应用(follows application)使得用户能够追随一个或多个兴趣(interest),其中兴趣可以例如是但不限于是另一用户或内容类别或主题。这里,追随兴趣的用户是消耗者。追随应用的目标是为追随兴趣的用户(即消耗者)产生馈送,该馈送是跨用户正追随的所有产生者的最近或最新内容的组合列表。例如,馈送可组合来自用户在社交站点上的所有朋友的最近状态更新,或者关于用户在内容汇总站点上的所有主题的最近报道。在一些情况下,用户可能偏好组合馈送,其既包括社交更新也包括主题更新。在特定实施例中,结合追随应用,产生者可为特定的可追随兴趣生成一系列按时间排序的、人类可读的内容。从而,对于用户(即消耗者),产生者可以是朋友、网站或从多个来源收集的关于特定主题的内容的汇总者。
众所周知,追随应用是难以缩放的。该应用必须持续跟上高吞吐量的内容。例如,Twitter工程师著名地描述了多次重架构(re-architect)Twitter的后端以跟上随着系统变得更流行而发生的吞吐量迅速增大。同时,追随兴趣的用户期望其馈送页面迅速加载,这意味着必须严格限制延迟。这经常导致广泛的具体化(materialization)和缓存,相关联的有高资金和运营花费。例如,Digg选择了对大量数据进行去正规化(de-normalize)和具体化,以为其“绿色徽章应用”(例如追随我的朋友发掘了什么报道)减小延迟,这导致存储的数据从数十G字节到三T字节的爆增。
这种追随应用难以缩放的原因有若干个。首先,内容扇出,导致了系统中的负荷上的倍增效应。例如,每当Ashton Kutcher“发微博(tweet)”时,他的状态更新就被传播到超过380万个追随者。即使是更温和的普通扇出也会引起缩放问题。第二,扇出具有高偏差,这使得难以选择适当的策略。例如,Facebook据报道对于像乐队和政治人物之类的宽扇出用户采用与具有窄得多的扇出的大多数用户相比不同的馈送具体化策略。
为了解决例如追随应用所面对的问题中的至少一些并且改善应用性能,特定实施例选择性地具体化每个消耗者的馈送。在特定实施例中,来自高速率产生者的内容在查询时被取回(即,拉取策略),而来自较低速率产生者的内容则被预先具体化(即,推送策略)。另外,对问题的形式分析暗示着适当的策略取决于给定产生者的内容产生速率与给定消耗者的内容消耗速率(例如页面查看速率)之间的比率。从而,一些产生者对于一些消耗者可被具体化,而对于其他消耗者则不;并且消耗者的馈送的一些部分可被具体化,而其他部分则不。利用真实web数据库基础设施的实验结果表明,此混合策略在多种工作负荷下引起最低的系统负荷,因此改善了可缩放性。
如上所述,产生者可产生被一个或多个消耗者消耗的内容;并且消耗者可消耗由一个或多个产生者产生的内容。另外,内容经由连接产生者和消耗者的馈送被从产生者递送到消耗者。理论上,给定的内容可在该内容由产生者产生的时间和该内容被消耗者消耗的时间之间的任何时间被从产生者递送到消耗者。对于内容,其由产生者产生的时间可被称为“具体化”时间(即,内容具体化),其被消耗者消耗的时间可被称为“查询”时间(即,消耗者查询或请求内容以便消耗)。
在特定实施例中,存在用于在产生者和消耗者之间管理内容的两个策略:推送和拉取。在特定实施例中,对于推送策略,内容在产生者产生该内容时被递送(即,推送)到追随该内容的每个消耗者;从而,推送策略利用传统数据库术语也可被称为“具体化”策略。与之不同,对于拉取策略,消耗者所追随的内容是在消耗者请求消耗内容时从产生内容的每个产生者取回(即,拉取)的;从而,再次利用传统数据库术语,拉取策略也可被称为“查询”策略。有时,推送是更好的策略,使得当消耗者准备好消耗其追随的内容(例如利用追随应用查询内容)时,其馈送已被预计算,这样减小了系统负荷和延迟。与之不同,如果与产生者产生内容的速率相比,消耗者不那么频繁地消耗内容,则拉取策略可能更好。由于通常只需要显示最近的N个内容,所以在消耗者有机会消耗(例如查看或下载)内容之前,推送并具体化以后会被更新的内容取代的大量内容,是浪费的。
特定实施例的方法是基于如下见解的:即使在同一应用内,有时是推送更好,而其他时候则是拉取更好。实际上,在特定实施例中,特定消耗者的馈送可以是推送和拉取两者的组合。这是因为内容产生速率的偏差。例如,每小时一次请求内容的特定消耗者可比一个产生者的内容产生速率更频繁地消耗内容(也就是说,该消耗者的内容消耗速率高于一个产生者的内容产生速率,因此推送更好),并且与另一产生者的内容产生速率相比不那么频繁地消耗内容(也就是说,该消耗者的内容消耗速率低于另一产生者的内容产生速率,因此拉取更好)。特定实施例以每(p,c)的方式作出推送/拉取决定,其中p表示产生者,并且c表示消耗者。关于实际追随应用的实验和经验表明,此方法比纯推送或纯拉取系统缩放得更好。当然,基于产生者和消耗者各自的相对内容产生和内容消耗速率以每(p,c)的方式作出推送/拉取决定的概念除了追随应用以外还可被扩展应用到任何消耗者-产生者类型的应用。
追随问题与先前探索的数据库系统中的问题是类似的。例如,“具体化与否”的问题在索引和视图选择的上下文中经常被探索。然而,在追随问题的上下文中,问题不是创建哪些视图,而是具体化单个“馈送”视图的多少。特定实施例可从关于部分具体化的视图和索引的工作借用一些概念(例如具体化频繁访问的数据)。但与先前的工作不同,不可能对于给定的基元组作出单个“具体化与否”决定;而是需要对于每个消耗者-产生者对基于其相对内容产生和内容消耗速率作出决定。
图1图示了用于为各个内容馈送确定策略的示例方法。简言之,特定实施例计算将内容从产生者递送到消耗者的推送成本和拉取成本(步骤110)并且为该消耗者-产生者对选择具有较低递送成本的推送策略或拉取策略(步骤120)。可为产生者和消耗者的每个唯一对重复这两个步骤。
以下表1示出了本公开中使用的符号。各个概念在下文中更详细描述。
表1:符号
在特定实施例中,存在追随由一组产生者生成的内容流的一组消耗者(例如追随应用的用户)。每个消耗者可选择其希望追随的产生者。在特定实施例中,如果消耗者选择追随特定产生者,则该产生者产生的内容在适当的时间被递送到消耗者。在特定实施例中,产生者可生成人类可读的带时间戳的内容的命名序列。产生者的示例可包括“Ashton Kutcher的微博”或者“关于全球变暖的新闻报道”。产生者可以是人(例如追随应用的用户)、网站(例如新闻站点或博客)或者来自多个来源的内容的汇总者。在论述图1的步骤时,特定实施例将每个可追随的“主题”(例如“全球变暖”或“医疗保健争论”)视为一单独的产生者,即使不同主题的内容来自同一网站或数据来源(即同一实体)。也就是说,如果单个产生者产生多个内容流,则每个内容流被单独分析。在特定实施例中,内容按创建时间被排序,但替换实施例可使用其他排序方案。
特定实施例可将连接网络定义为有向图G(V,F),其中V是顶点的集合并且F是追随边缘的集合。在特定实施例中,每个顶点vi∈V表示消耗者或产生者,并且如果ci追随pj(例如ci消耗由pj产生的内容),则在产生者顶点pj到消耗者顶点ci之间存在追随边缘fi,j∈F。图2图示了具有若干个产生者顶点和若干个消耗者顶点的连接网络200。当然,连接网络可包括任意数目的产生者和消耗者,并且在各个产生者和消耗者之间可以有任意数目的连接(即追随边缘)。社交网络是一类连接网络的一个示例,但任何消耗者-产生者图都可以是连接网络,并且本公开设想到了任何可应用的连接网络。特定实施例可将连接网络视为关系ConnectionNetwork(Producer,Consumer)。
在特定实施例中,连接网络可被以支持产生者、消耗者或两者进行的高效查找的方式显式存储。例如,为了将内容从产生者pj推送到一个或多个有兴趣的消耗者,特定实施例可在连接网络中查找pj并取回追随该内容的消耗者的集合,这被表示为{ci:fi,j∈F}。与之不同,为了从一个或多个产生者为消耗者ci拉取内容,特定实施例可在连接网络中查找ci并取回该消耗者追随的产生者的集合,这被表示为{pj:fi,j∈F}。在后一种情况下,特定实施例可实际将该关系定义为ConnectionNetwork(Consumer,Producer)以支持按消耗者的聚类。为了支持经由产生者和经由消耗者这两个访问路径,特定实施例除了ConnectionNetwork关系以外还可构建索引。
在特定实施例中,内容自身在逻辑上形成如Content(ContentID,Producer,Timestamp,Payload)的关系。为了效率,特定实施例可按以下方式中的一种或两种来存储内容:(1)以产生者为轴心:在关系ProducerPivoted(Producer,ContentID,Timestamp,Payload)中按产生者聚类内容;以及(2)以消耗者为轴心:在关系ConsumerPivoted(Consumer,Producer,ContentID,Timestamp,Payload)中对于每个消耗者复制和聚类内容。
以产生者为轴心的模型支持拉取策略。为了取回一组内容以示出给消耗者,特定实施例(例如从ConnectionNetwork)取回该消耗者所追随的相应的一组产生者,然后在ProducerPivoted表格中查找每个产生者以取回最近的内容(例如联接ConnectionNetwork JOIN ProducerPivoted)。与之不同,以消耗者为轴心的模型支持推送策略。对于推送,特定实施例通过为追随内容的产生者的每个消耗者插入元组来将内容具体化为ConsumerPivoted关系。实际上,特定实施例不需要显式存储内容;特定实施例而是可以存储并查询ProducerPivoted并且可将ConsumerPivoted具体化为联接ConnectionNetwork JOIN ProducerPivoted上的视图。
如上所述,特定实施例对于指示出哪个消耗者追随哪个产生者产生的内容的每个追随边缘,分别在推送策略和拉取策略之间作出选择。换言之,特定实施例探索混合方法,其中一些内容被具体化成ConsumerPivoted,而其他内容只是被存储在ProducerPivoted中并在必要时被拉取。再一次,此决定是对连接网络中的每个消耗者-产生者对作出的。
每当内容(例如经由消耗者使用的网络设备)被递送或显示给消耗者时,特定实施例就可以说该消耗者取回了其内容馈送(或简称为馈送)。内容取回可由多种原因触发,例如消耗者登录到网站中或刷新网站上的页面。在特定实施例中,消耗者的经更新的馈送可被自动取回,例如利用Ajax、Flash或任何其他适当的技术。在特定实施例中,馈送自身显示来自消耗者所追随的产生者中的一个或多个产生者的内容的有序集合。馈送通常只示出N个最近的内容,虽然消耗者可请求更先前的内容(例如通过点击“下一页”)。
特定实施例可定义捕捉消耗者对于其馈送的期望的若干个属性。首先,馈送应当是按时间排序的;也就是说,馈送中的内容被按时间戳顺序显示,使得对于馈送中的任何两个内容ct1和ct2,如果Timestamp(ct1)<Timestamp(ct2),那么如果内容被按顺时间顺序显示,则ct1在馈送中先于ct2被显示,而如果内容被按逆时间顺序显示,则ct2在馈送中先于ct1被显示。例如,如果在网页中显示内容,则更早显示的内容比更晚显示的内容更靠近网页的顶部。第二,馈送中的内容应当是无间隙的;也就是说,来自特定产生者的内容被没有间隙地显示,使得如果有来自产生者p的两个内容ct1和ct2,在馈送中ct1在ct2之前,并且在馈送中没有来自p的在ct1之后但在ct2之前的内容,则不存在由p产生的具有大于ct1但小于ct2的时间戳的内容(在顺时间显示顺序的情况下)。第三,在馈送中应当没有内容的重复;也就是说,没有内容ctk在馈送中出现多于一次。
当消耗者两次取回其馈送时,其可能有关于在第一次取回和第二次取回之间馈送如何变化的一些期望。例如,如果消耗者从第一次取回中按特定顺序看到了一些内容,则消耗者通常期望从第二次取回中按相同顺序再次看到这些内容。例如,考虑包含N=5个内容的示例馈送。在2:00pm取回的消耗者的馈送可包括:
  事件   时间   产生者   文本
  ct5   1:59   Alice   Alice吃了午饭
  ct4   1:58   Chad   Chad累了
  ct3   1:57   Alice   Alice饿了
  ct2   1:56   Bob   Bob在工作
  ct1   1:55   Alice   Alice醒了
表2:第一示例馈送
在2:02pm,消耗者可刷新其网页,使得新版本的馈送被取回。假定在2:00pm到2:02pm之间,从Alice生成了两个新的内容:
  事件   时间   产生者   文本
  ct7   2:01   Alice   Alice在工作
  ct6   2:00   Alice   Alice在开车
  ct5   1:59   Alice   Alice吃了午饭
  ct4   1:58   Chad   Chad累了
  ct3   1:57   Alice   Alice饿了
表3:第二示例馈送(具有全局连贯性)
在第二示例馈送中,由Alice产生的两个新内容ct6和ct7导致两个最旧的内容ct1和ct2从馈送中消失,同时保持了跨消耗者的产生者的所有内容的全局排序。此属性(即保持所有内容的全局排序)可被称为“全局连贯性”:馈送中的内容的次序匹配来自消耗者的产生者的所有内容的潜在时间戳顺序,并且从馈送的一个视图到下一视图,内容顺序不被打乱。此模型是以时间顺序示出邮件的大多数电子邮件阅读器所常见的,并且被用在像Twitter这样的追随应用中。
然而,在一些情况下,全局连贯性可能是不合需要的。考虑表3中的示例馈送。有许多Alice内容但没有Bob内容。这种就不同产生者产生的内容而言的多样性的缺乏可在一些产生者临时性地或持续性地具有比其他产生者更高的内容速率时发生。在下文中更详细描述馈送多样性。为了保持多样性,消耗者可偏好“按产生者连贯性”:来自给定产生者的内容的排序被保持,但对于不同产生者之间的内容的相对排序不作保证。在按产生者连贯性下,当消耗者在2:02pm刷新其馈送时,消耗者可看到:
  事件   时间   产生者   文本
  ct7   2:01   Alice   Alice在工作
  ct6   2:00   Alice   Alice在开车
  ct5   1:59   Alice   Alice吃了午饭
  ct4   1:58   Chad   Chad累了
  ct2   1:56   Bob   Bob在工作
表4:第三示例馈送(具有按产生者连贯性)
第三示例馈送保持了多样性,因为额外的Alice内容ct6和ct7不会导致Bob内容ct2从第三示例馈送中消失。然而,尽管在第二示例馈送中,在Bob内容ct2和Chad内容ct4之间有Alice内容ct3,但在第三示例馈送中则没有。此内容“消失”在全局连贯性下是不可能的,但在按产生者连贯性下被允许,以帮助保持多样性。
因为许多消耗者-产生者应用(例如追随应用)中固有的内容产生或内容消耗速率上的偏差,特定实施例可能需要采取明确的步骤来保持多样性。例如考虑用户(“用户”指的是消耗者-产生者应用的用户并且可以是产生者或消耗者或者这两者)David,其每天一次地登录到应用中。他的父亲(例如第二用户)Bob可能只是每天一次地生成内容,而他的妹妹(例如第三用户)Alice每小时一次地生成新内容。当David登录时,他会想要看到其父亲Bob的最新内容,尽管可能有许多来自Alice的更新近的内容,
在特定实施例中,定义多样性的最简单方式是规定消耗者的馈送必须包含来自该消耗者追随的每个产生者的至少一个或多个内容,概括来说是至少k个内容。然而,消耗者可追随比馈送中的位置更多的产生者,导致不可能示出来自每一个产生者的至少k个内容。另外,特定实施例不一定想要就为了满足该约束而示出极其老的内容。例如,如果Bob的最新内容是一年前的,则特定实施例可能不想要将其包括在针对David的馈送中,即使这意味着示出零个Bob内容,因为极其老的内容对于消耗者来说往往是过时的或无意义的。
因此,特定实施例定义k,t多样性的概念。非正式地使用上述示例,在特定实施例中,k,t多样性规定,如果在最近的t个时间单位中有来自Bob的内容,那么除非在馈送中示出Bob内容,否则在馈送应当示出不多于k个来自Alice的内容。更正式地说,考虑两个产生者pi和pj被消耗者c追随。特定实施例定义Candidate(p,t)为来自产生者p的不老于t秒的内容的数目,并且Count(p)为来自产生者p的在c的馈送中示出的内容的数目。于是,k,t多样性可被定义为:如果Candidate(pi,t)>0并且Count(pi)=0,则Count(pj)≤k。
再次考虑第一、第二和第三示例馈送。假定已规定t=600秒并且k=1。于是,第二示例馈送(在表3中例示)是不被许可的,因为Candidate(Bob,600sec)=1并且Count(Bob)=0,而Count(Alice)>1。然而,第三示例馈送是被许可的。注意,在一些情况下,可偏好更强的多样性概念。例如,如果实际上有许多Bob内容,则可能不会想要在馈送中示出十个Alice内容而只示出一个Bob内容。因此,特定实施例可希望在其示出的内容中最大化一些“熵”的概念。然而,对于本公开而言,k,t多样性捕捉了最低限度的多样性概念,并且例示了即使是最低限度的多样性概念也与全局连贯性保证相冲突。
生成馈送需要系统处理。例如,对于拉取在查询时完成工作,而对于推送则在内容生成时完成工作。此处理对系统施加的工作负荷的类型(即所需的系统资源的量)取决于体系结构。例如,如果在盘上具体化数据,则主要成本很可能是由于从存储器读取数据和向存储器写入数据而导致的输入/输出(I/O)成本。另一方面,在许多消耗者-产生者应用(例如追随应用)中,为了性能,只在随机访问存储器(RAM)中具体化数据。在此情况下,主要成本很可能是处理器(例如CPU)成本。
特定实施例正式地定义Cost()为系统的瓶颈资源(例如I/O或CPU)的总使用量。此使用量既可包括在生成时处理内容,也可包括在查询时生成馈送。于是,在特定实施例中,消耗者-产生者应用的一般优化问题可被定义为最小化Cost(),同时:(1)提供按时间排序的、无间隙且无重复的馈送;(2)尊重所选的连贯性水平(例如全局或按产生者);以及(3)如果使用按产生者连贯性,则还确保k,t多样性。此外,特定实施例在优化消耗者-产生者应用时还可考虑到延迟(例如作为额外的约束),在此情况下一些额外的系统成本可被牺牲以便减小延迟。消耗者-产生者应用的受延迟约束的优化问题可被定义为最小化Cost(),同时:(1)提供按时间排序的、无间隙且无重复的馈送;(2)尊重所选的连贯性水平(例如全局或按产生者);(3)如果使用按产生者连贯性,则还确保k,t多样性;以及(4)确保第N百分位的延迟不小于L。一个示例情况可规定第99百分位的延迟不长于50毫秒。此约束可使得作出关于推送或拉取内容的不同决定(例如,推送更多内容以便查询时间延迟符合该约束)。
产生者可以是原子实体(例如应用用户或新闻网站)或者可以是多个其他站点的汇总者。汇总者对于一些消耗者-产生者应用是重要的,因为它们可以产生来自多个来源的关于给定主题的内容的单个流。另外,汇总者可从通常不会推送新内容的来源提取信息。特定实施例同等对待原子和汇总产生者,并且只考虑其内容产生速率和扇出。然而,在特定实施例中,更一般的问题可能是考查汇总者必须作出的决定:对于给定的上游来源,汇总者应当使用推送还是拉取?虽然此决定可类似于特定实施例在对于消耗者-产生者对决定推送或拉取时作出的决定,但有额外的复杂性(例如,拉取的频率如何,以及如何应对具有不同推送或拉取成本的上游来源)。
如上所述,特定实施例可考虑推送和拉取这两个策略来处理内容。在特定实施例中,方法是在这些策略之间以细粒度作出选择。对于给定的消耗者,特定实施例可对于相对较低频率(就内容产生而言)的产生者选择推送,并且对于相对较高频率(就内容产生而言)的产生者选择拉取。对于具有不同的内容消耗或内容查询频率但具有相同产生者的消耗者,可作出不同的决定。特定实施例可对于给定的(消耗者,产生者)对,考查产生者的内容产生频率与消耗者的内容消耗频率之间的比率。取决于此比率的值是否满足阈值要求,特定实施例可为此特定(消耗者,产生者)对选择推送或拉取策略。在特定实施例中,对于该比率的阈值要求可基于实验来确定。例如,在一种实现方式中,基于实验结果,对于(消耗者,产生者)对,如果内容产生频率与内容消耗频率之间比率大于大约3,则选择推送策略;否则选择拉取策略。
有时,特定的消耗者或产生者就其在一段时间中(例如每天或每星期)的内容消耗或内容产生活动而言可表现出不同但可预测的行为模式。特定实施例在对每个(消耗者,产生者)对在推送和拉取策略之间作出选择时可考虑到这种行为模式。更具体而言,特定实施例可基于时间以及内容产生频率或内容消耗频率在推送和拉取之间作出决定,或者可基于时间而不基于内容产生频率或内容消耗频率在推送和拉取之间作出决定。例如,假定消耗者通常频繁地消耗内容;从而,相对较高的内容消耗频率暗示着对于此消耗者,一般应当使用推送策略。然而,该消耗者的行为模式可表明,该消耗者在每天的午夜与7:00am之间不请求(即消耗)任何内容。从而,如果在午夜与7:00am之间产生任何内容,则可使用拉取策略来递送该内容。另外,对于消耗者在7:00am之后作出的第一个请求,也可使用拉取策略。
产生者可按一定内容产生频率的速率产生一个或多个内容(例如每天产生nj个内容),并且消耗者可按一定内容消耗频率的速率消耗一个或多个内容(不一定由同一产生者产生)(例如每天消耗ni个内容)。当然,现实中,产生者和消耗者不一定遵循这样的一贯惯例,并且每个实体产生或消耗的内容的实际数目在天与天之间可以是不同的。从而,特定实施例可使用对于每个产生者和消耗者表示一段时间中的统计值的平均或均值内容产生或内容消耗频率。
在特定实施例中,通过为每个(消耗者,产生者)对指派推送或拉取决定,可为按产生者连贯性和全局连贯性这两种情况解决如上定义的“最小化Cost()”问题。在特定实施例中,随后可添加查询延迟作为约束并且最小化符合此约束所需的额外成本。最后,特定实施例可考虑针对使“实体”既充当上游和产生者的消耗者又对下游消耗者充当产生者的消耗者-产生者应用的优化问题的更一般表述。
在特定实施例中,连接网络G(V,F)是从产生者到消耗者的二部图(bi-partite graph)。当消耗者ci执行对内容的查询时,需要为ci的馈送提供数个内容。对于此场景考虑上述两种连贯性情况。在全局连贯性情况下,特定实施例提供跨Fi(即ci追随的产生者的集合)中的所有产生者的最新近的πg个内容。在按产生者连贯性情况下,特定实施例为Fi中的每个产生者提供最新近的πp个内容。
任何系统都带有其自己的推送和拉取成本,这取决于针对ProducerPivoted内容存储和ConsumerPivoted馈送视图存储的存储决定。令Hi表示向ci的馈送推送内容的成本,并且Lj表示从产生者pj拉取恒定数目的内容的成本。在大多数情况下,特定实施例可假设πg和πp都足够小到Lj对于每一个将是相同的。特定实施例还可假设利用拉取可从单个产生者取回多个内容。这假设了内容是按产生者聚类的;单个远程过程调用可取回多个内容;并且取回内容的盘成本(如果有的话)对于少量内容是恒定的(例如,因为成本中占主导的是盘寻道(disk seek))。
特定实施例可假设内容各自到达系统的简单模型,而不考虑摄取内容和将它们写入到ProducerPivoted表格的成本,此成本对于所考虑的所有策略可以是相同的。从而,可作出推送-拉取决定的粒度是每内容、每消耗者,并且特定实施例可为每个这样的对独立选择推送或拉取。也可按此粒度分析系统成本。
另外,特定实施例可假设Hi和Lj成本是恒定的,即使当系统中负荷增大时也是如此。然而,如果系统瓶颈随着内容速率或产生者扇出的增大而变化,则此假设可能不成立。例如,特定实施例可决定具体化存储器中的数据。另一方面,如果主存储器的量有限并且ConsumerPivoted的总大小增长到超出系统的总RAM,则其可溢出到盘,将推送和拉取成本改为包括盘访问。通常在实践中,消耗者-产生者应用可供给足够的资源(例如存储器、带宽、CPU等等)以避免这些瓶颈变化并且保持Hi和Lj恒定。在特定实施例中,分析不假设数据完全在存储器中,但确实假设在系统缩放时成本是恒定的。
首先,更详细描述针对按产生者连贯性的成本优化。对于消耗者ci、产生者pj和内容ctj,k,特定实施例推导出将ctj,k递送给ci的寿命成本。在特定实施例中,ctj,k的寿命是从其创建时到pj产生了πp个后续内容时。
特定实施例作出以下观测结论:
观测结论1.假设拉取成本被分摊在利用一次拉取获取的所有内容上,并且推送和拉取成本是恒定。对于ci,由pj产生的内容的推送和拉取寿命成本取决于消耗者的内容查询速率和产生者的内容产生速率
Push=Hi
Pull = L j ( φ c i / φ p j )
可如下证明观测结论1。推送成本与内容寿命无关;对于特定内容,只支付Hi一次。另一方面,拉取策略确实取决于内容寿命。内容ctj,k具有寿命在此寿命期间,ci看到ctj,k的次数是拉取ctj,k的成本是Ljp(Lj被分摊在每个拉取的内容上)。从而,ctj,k的寿命成本是 L j ( φ c i / φ p j ) = ( L j / π p ) φ c i ( π p / φ p j ) .
然后,特定实施例可得出结论,即,对于给定的(产生者,消耗者)对,如果推送成本低于拉取成本,则应当推送内容;否则如果拉取成本低于推送成本,则应当拉取内容。特定实施例可如下从所得到的不等式推导出最优决定规则:
引理1.
如果则对于由pj产生的所有内容,推送。
如果则对于由pj产生的所有内容,拉取。这里,推送与拉取的决定是从观测结论1中的成本直接得出的。
第二,更详细描述针对全局连贯性的成本优化。根据全局连贯性要求,消耗者Ci的馈送包含跨Fi(即,ci追随的所有产生者的集合)中的所有产生者的πg个最新近的内容。
特定实施例作出以下观测结论:
观测结论2.假设推送和拉取成本是恒定的。
Push=Hi
Pull = L j φ c i / Σ p j ∈ F i φ p j
可以与按产生者情况类似地证明观测结论2,但有几个关键差别。产生者的内容产生频率是Fi的全部的汇总:内容ctj,k具有寿命并且其分摊拉取成本是Ljg。这些术语可被代入到按产生者分析中以得出全局连贯性的推送和拉取成本。
特定实施例随后可如下为全局连贯性情况下的(消耗者,产生者)对推导出最优决定规则:
引理2.
如果则对于由pj产生的所有内容,推送。
如果则对于由pj产生的所有内容,拉取。这里,推送与拉取的决定是从观测结论2中的成本直接得出的。
从引理1和2中的主要发现可被总结如下。在按产生者连贯性下,将内容递送到特定消耗者的寿命成本既依从于消耗者的内容消耗频率,也依从于内容的产生者的内容产生频率。在全局连贯性下,将内容递送到消耗者的寿命成本既依从于消耗者的内容消耗频率,也依从于该消耗者追随的产生者的总内容产生频率。因此,特定实施例提出以下两个定理。
定理1.对于按产生者连贯性,通过为每个(产生者,消耗者)对单独选择推送或拉取来推导出最小化系统成本的全局最优计划,其中每个(产生者,消耗者)对的推送与拉取由引理1确定。
对于按产生者连贯性,特定实施例通过最小化为每个内容支付的成本来最小化全局成本。类似地,特定实施例通过最小化对于每个消耗者为该内容支付的成本来最小化内容的成本。引理1指派每个边缘以最小化为在消耗者与产生者之间的边缘上的单个内容支付的成本。另外,在任何一个边缘上作出的指派不会在可对任何其他边缘作出的指派上施加任何限制。因此,对于每一个消耗者和内容最小化成本则最小化了全局成本。
定理2.对于全局连贯性,通过为每个消耗者单独选择推送或拉取来推导出最小化系统成本的全局最优计划,其中每个消耗者的推送与拉取由引理2确定。
对于全局连贯性,引理1为所有边缘指派推送或拉取。再一次,没有边缘指派会限制任何其他边缘指派。因此,对于每一个消耗者和内容最小化成本则最小化了全局成本。以下,令MinCost表示最小成本。
定理1和2具有重要的实际推论。任何系统可经历不同的内容查询和内容产生速率,以及控制哪些消耗者或产生者对这些速率贡献最大的偏差。在实践中,为了优化系统成本,不需要提取或理解这些模式。反而,为了最优地作出推送与拉取决定,特定实施例只需要单独测量消耗者的内容查询速率并且将其与该消耗者追随的产生者的内容产生速率单独或汇总地相比较。
第三,在查询延迟的额外约束下分析成本优化问题(即,不但最小化成本,而且优化查询延迟),这可被表示为满足延迟服务水平协定(SLA)。在计算机网络的上下文中,SLA可用于控制对各个网络实体或组件的计算资源分配或者各个网络实体或组件对计算资源的使用。例如,特定的追随应用可强制95%的馈送查询在小于100ms中执行。有可能在一些情况下最小推送成本与拉取成本策略也符合该SLA。但在其他情况下,可能不符合;如果不,则特定实施例可能够用拉取换取推送(回忆起推送在内容查询时做的工作更少),从而提高系统成本但降低延迟。在某些情况下,特定实施例可转到仅推送策略,而仍不符合很严格的SLA。以下,令LatencyConstrainedMinCost表示也满足查询延迟约束的最小成本。
以下分析针对中间情况,其中推送可以有帮助,但是有成本的。在实践中,难以为给定系统事先预测出其要花多少的额外推送来符合SLA。特定实施例因此可采用贪婪算法,其中额外推送的量可被递增地调整,直到结果收敛在SLA上为止。虽然不是最优的,但其对于许多实际设置是合理的。在以下分析中,特定实施例假设有关于推送的目标量的知识。
假定MinCost产生λm的延迟。分析的前提是如下假设:为了符合SLA,需要推送所有被查询的(消耗者,产生者)对的某个比例λl,并且最小成本解答推送比例λo的对,其中λo≤λl。特定实施例定义ε为就当将(消耗者,产生者)对从拉取转移到推送时支付的成本而言的惩罚。形式上,对于按产生者连贯性,这是为了进行推送而不是拉取对于每个内容支付的额外成本乘以pj的内容产生速率。
将消耗者-产生者边缘fi,j从拉取转移到推送的益处来自于减短在内容查询时(即在消耗者消耗内容时)获取内容所花的时间,并且取决于对于整个内容查询速率贡献的查询的比例。直觉上,与低内容查询频率消耗者相比,对于高内容查询频率消耗者,从推送可获得更大收益。注意,这意味着λl的值不是预先知道的,因为λl的大小取决于哪些边缘最终被转换成推送。
在特定实施例中,问题在于选择将哪个(消耗者,产生者)对从拉取转移到推送。特定实施例可将此缩减为“背包问题”(knapsack problem)的一个实例。背包问题的目标通常是用对象填充背包,其中每个对象贡献一定的“得分”。每个对象具有“重量”,并且目的是最大化得分的总和,同时不超过权重限制。特定实施例将(消耗者,产生者)对抽象为“对象”(即,每个(消耗者,产生者)对被认为是一个对象)。对象ok具有得分φk和重量εk,其中φk相当于消耗者的内容查询速率,并且εk相当于惩罚(例如,由于从拉取转移到推送而导致的额外成本)。目标是将足够的对象从拉取转移到推送,使得所有对象的λl比例被推送。因此,在最优解中拉取的对象之中,特定实施例需要将具有总得分λlo的对象转移到推送。
考虑以MinCost拉取的边缘的集合。为了找出LatencyConstrainedMinCost,问题在于选择这些边缘的子集S来转移到推送,使得并且被最小化。直接求解S的问题与背包问题类似,但有细微的不同。没有“容量”约束。虽然延迟需要被减小λml,但可以将延迟减小得甚至更多。该问题与背包问题类似。
还剩下两个实际问题要考虑。第一,背包问题是NP困难的(NP-hard)。第二,虽然在理论上,σi,j被定义为由于将fi,j转移到推送而带来的延迟的减小,但在实践中,很难准确预测通过将一边缘转移到推送而获得的收益。特定实施例可利用适应性算法来解决这两个问题。虽然难以知道由将边缘转移到推送带来的确切延迟减小,但直觉暗示着选择具有更高内容消耗频率的消耗者应当引起更大的减小,因为这会为更多的馈送取回减小延迟。于是,作为代理,特定实施例设置作为使用此代理的结果,虽然边缘的相对收益是已知的,但如果边缘的候选集合S将延迟减小λml,则其不是直接已知的。从而,特定实施例从估计确实将延迟减小开始并且求解S,然后在实践中测量S是否给出LatencyConstrainedMinCost解答(即,恰好符合SLA)。如果延迟仍太高,则需要求解更大的而如果延迟低于SLA,则需要求解更小的从而,不太可能立即产生正确的解答。
特定实施例寻找在目标被调整时只引发递增成本的解答。另外,背包问题是NP困难的,因此解答需要提供最优解答的适当近似。为了解决这两个顾虑,特定实施例使用产生最优解答的贪婪近似的适应性算法。预期这种贪婪近似在实践中是有效的。特定实施例可按的降序对拉取边缘排序,然后将某个数目的排名靠前的边缘转移到推送。如果延迟高于SLA,则可递增地将排名靠前的拉取边缘转移到推送。如果延迟低于SLA,则可递增地将排名最低的推送边缘转移到拉取。注意,如果边缘在MinCost中被指派为推送,则特定实施例永不将这些边缘转移到拉取。
适应性算法可以以MinCost作为起点运行。特定实施例还周期性地重运行该算法以确保获得LatencyConstrainedMinCost解答。例如,假定数个消耗者添加了新兴趣(例如新的(消耗者,产生者)对),并且针对MinCost优化的系统为它们选择了拉取策略。这些新的(产生者,消耗者)对可导致延迟增大,尽管对于现有的(产生者,消耗者)对,推送/拉取策略没有变化。从而,适应性算法需要重运行以将更多边缘转移到推送以便再次将系统转移到LatencyConstrainedMinCost。
虽然此算法不是始终找到最优解答,但其在实践中很有可能是足够的,并且实际得多。在特定实施例中,推送与拉取决定被嵌入在系统中。贪婪解答具有其高效地适应于不同的目标延迟的优点。为了符合SLA,系统可就简单地向S添加对象,直到达到期望的延迟为止。
还要注意,贪婪算法找到的解答是依连接网络的特定实例而定的。特别地,在针对延迟执行了优化之后,消耗者可声明新的兴趣(例如,建立新的消耗者-产生者对),并且系统可基于推送与拉取决定标准为这些对选择拉取策略。在这种情况下,这些新的消耗者-产生者对可导致平均或第95百分位的延迟增大,尽管推送/拉取决定对于现有的消耗者-产生者对没有变化。从而,特定实施例可周期性地重运行贪婪算法以确保即使在连接网络变化时也符合延迟SLA。
在特定实施例中,代替将各个(消耗者,产生者)对从拉取转移到推送,消耗者可作为块被从拉取转到推送。也就是说,当将(消耗者,产生者)对从拉取转到推送时,特定实施例选择具有一些将(消耗者,产生者)对的消耗者,并且将它们全部一次从拉取转到推送。更具体而言,由于消耗者可消耗由多个产生者产生的内容,对于该消耗者追随的每个产生者,存在一(消耗者,产生者)对。从而,对于特定消耗者,其(消耗者,产生者)对中的一些可被确定为具有拉取策略,并且其(消耗者,产生者)对中的另一些可被确定为具有推送策略。特定实施例可选择这样的消耗者并将其所有(消耗者,产生者)对都转到推送。直觉是为了执行具有低延迟的单个消耗者内容查询,需要将该消耗者的所有产生者转到推送;否则,从即使是一个产生者拉取的时间也将占该消耗者的内容查询时间的主导地位。在此情况下,特定实施例将整个消耗者ci的ε计算为另外,λl从是所有被查询的(消耗者,产生者)对的比例转移到是所有消耗者查询的比例。有了这些变化,背包缩减是相同的。
成批转移消耗者具有不会为每个消耗者在查询时留下几个“长杆(long pole)”的益处。然而,其弱点在于可能更难优化延迟,因为自由度降低了。特别地,在一些情况下,可能想要将特定的(产生者,消耗者)对转到推送,但可能无法做到,因为转移整个消耗者会过度增大系统成本。注意,策略的差别来自于特定实施例是将消耗者追随的产生者分解成分开的对象还是将它们作为块来对待。从而,问题仅存在于按产生者连贯性中。在全局连贯性中,由于内容寿命是消耗者的所有产生者的内容产生频率的函数,所以消耗者的所有产生者具有相同的收益(即,消耗者的内容消耗频率)和相同的惩罚(即,拉取的产生者的总内容产生频率)。从而,对于全局连贯性,特定实施例将对象定义为(消耗者,产生者)对还是消耗者块,是无关紧要的。
最后,简要论述实体既是消耗者(例如相对于上游产生者)又是产生者(例如相对于下游消耗者)的情形。到现在为止的分析主要集中于简单连接网络,其中每个节点是产生者或者消耗者。也就是说,网络是二部图。优化的基础是此图中的每个边缘可被分别优化,进而实现全局优化。改为假定有一合成连接网络,其中一些节点可以既是相对于上游内容来源(即上游产生者)的消耗者,又是相对于下游消耗者的产生者。例如,图中可有一节点汇总来自若干个来源的“麦当娜”内容,然后使它们对于下游消耗者可用。在特定实施例中,优化问题仍是向边缘指派推送或拉取以最小化系统成本。然而,有这样的风险,即推送与拉取决定可能不是对每个边缘独立确定的。
为了表征此风险,考虑“网络可行性”的属性。在特定实施例中,当且仅当对于每个被指派了推送的边缘,每个相邻上游边缘也被指派推送时,网络是可行的。作为不可行网络的示例,考虑一对边缘,其中推送边缘具有上游拉取边缘。推送边缘期望在内容被生成时从其相关联的产生者到其相关联的消耗者发送内容,而上游拉取边缘则不在内容被生成时递送内容。
在特定实施例中,可添加额外的约束以应对该网络,使得或者求解推送和拉取成本以及内容产生和内容消耗频率也保证可行的解答,或者找到对于最小成本可行解答的近似。
图3图示了适用于实现本公开的实施例的示例系统体系结构300。在特定实施例中,系统300包括视图维护机构(例如视图维护器)310和web服务数据库330。在特定实施例中,具体化决定被封装视图维护机构310中,并且web服务数据库330处理其他任务,例如处理更新和馈送视图。
在特定实施例中,web服务数据库330是可弹性缩放的并且可包括任意数目的存储服务器。当产生者生成内容时,其被存储在推送策略中,按产生者聚类。产生者例如可以是应用层(例如如果用户直接生成内容的话)或者是网络爬虫/摄取层(例如来从外部来源取回内容)。当内容进入系统300时,其可向视图维护器310发送通知。视图维护器310通过决定是否将新内容推送到一个或多个消耗者馈送记录来响应此通知。在特定实施例中,因为该决定取决于产生者的内容产生速率和消耗者的内容查询速率,所以视图维护器310可从web服务数据库330读取此信息。如果内容被推送,则其被写回到推送策略,这次被写入到按消耗者聚类的馈送视图中。
特定实施例使用“通知”机制,其类似于简单的触发器(因为其在每次更新被提交时就发动),主要来驱动索引和视图维护。替换实施例可使用其他机制来更改视图维护器310,例如作为原始更新事务的一部分更新视图,嗅探数据库日志,等等。通知具有异步完成视图维护的优点,使得特定实施例能够执行可能昂贵的具体化,包括读取产生者和消耗者速率,而不向原始更新事务增加延迟。通知方法的缺点可能是具体化的视图与基本内容存储相比可略微陈旧;然而,在web应用(包括追随应用)中微小程度的陈旧通常是可接受的。
在特定实施例中,当消耗者取回其视图(例如当用户登录或刷新其页面)时,这引起到查询处理器320的查询。查询处理器320从ConsumerPivoted读取消耗者的记录,以便:(1)取回已经具体化(推送)的内容;以及(2)确定需要从哪些产生者拉取内容。然后,可对ProducerPivoted进行并行读取以拉取这些内容。在特定实施例中,消耗者的馈送视图记录既包括具体化的内容,又包括消耗者追随的未具体化的产生者的列表。
特定实施例可将基本内容存储(按产生者聚类)和具体化馈送视图(按消耗者聚类)存储在同一数据库基础设施中。或者,特定实施例可将ProducerPivoted存储在一个数据库中,并将ConsumerPivoted存储在另一数据库中。
在特定实施例中,web服务数据库330被设计为提供各个记录的低延迟读取和写入。经由“向外扩展”,也就是通过向系统添加更多服务器,来增大(处理许多这样的读取和写入操作的)吞吐量。在特定实施例中,系统300提供记录的有序存储,使得可以高效取回小范围的记录。范围扫描对于高效推送和拉取操作可能是尤其重要的。特定实施例可选择供给足够的主存储器以存储相关数据以便确保低延迟,虽然数据也被持久存储到盘以便从故障中存活。
在特定实施例中,当产生者生成内容时,其需要被写入到ProducerPivoted表格中。在一些情况下,产生者可将内容直接写入到存储层中。在其他情况下,产生者可以是上游内容的汇总者。上游来源可将内容推送到汇总者,或者汇总者可必须拉取内容,在任一情况下都使用例如适当的应用编程接口(API)。
在特定实施例中,当产生者生成新内容时,由视图维护器310负责决定是否通过将该内容具体化在一个或多个消耗者记录中来推送该内容。从而,视图维护器310封装引理1和引理2的决定规则。在特定实施例中,视图维护器310预订来自数据库330的表格上的更新并且在必要时将记录写回到数据库330。
特定实施例可将相关数据(例如ConnectionNetwork、ProducerPivoted或ConsumerPivoted)存储在适当的数据结构中,例如但不限于表格。例如,ConnectionNetwork表格可用于存储消耗者和产生者之间的连接图。表格的键是合成物(产生者,优先级,消耗者)。优先级是根据引理1和2从消耗者的内容查询速率和产生者的内容产生速率计算的。ConnectionNetwork表格可被按产生者排序,然后按优先级排序,以简化关于是否推送内容的决定的作出。当新内容到达时,特定实施例在以该内容的产生者为前缀的记录上进行范围查询,开始于优先级R,其中R是推导出的最优阈值(例如Hi/Lj)。这允许了迅速仅取回具有大于R的优先级的(消耗者,产生者)对,这些(消耗者,产生者)对是应当对其具体化内容的消耗者的集合。
作为另一示例,内容可被存储在ContentsByProducer表格中。此表格的键是(产生者,时间戳),使得内容被按产生者聚类,并且按产生者内的产生时间排序。这种排序促进了从给定的产生者高效取回最新的内容。此取回可由具有关于要取回的内容的数目的指定限度的范围扫描实现(因为馈送通常只示出最新近的N个内容)。
作为又一示例,每个消耗者的具体化馈送记录可被存储在Feed表格中。此表格的键是(消耗者,产生者),使得对于消耗者追随的每个产生者有一单独的记录。如果消耗者决定追随新的产生者,则新的Feed记录被插入,最初没有内容。当视图维护器310被通知以新内容时,其在ConnectionNetwork表格上执行范围扫描以找出向其推送内容的消耗者的列表,并且为每个消耗者更新适当的Feed记录。结果是一些馈送记录具有具体化的内容,而其他的为空。Feed记录还可包括(消耗者,产生者)对的优先级,其与存储在ConnectionNetwork表格中的优先级相同。如果Feed记录没有内容(例如为空),则特定实施例只需要从ContentsByProducer拉取,如果优先级低于阈值Hi/Lj的话。具有高于阈值的优先级的空记录表明内容将被推送,但产生者尚未生成任何内容。此外,在Feed表格中为“内容”保留的列中存储可能为多个的内容,并且可为多个消耗者存储相同内容,这是由于产生者扇出引起的。
随着产生者内容产生速率和消耗者内容查询速率变化,特定实施例可为(消耗者,产生者)对适应性地改变优先级。关于每个产生者的速率的统计值可被维护在其相应的ContentsByProducer记录中,并且关于每个消耗者的速率的统计值可被维护在其相应的Feed记录中。一个观测结论是在更新统计值和优先级方面要懒惰。为了减少用于更新统计值的写入的数目,特定实施例可维护近似统计值并且仅用关于每个内容或查询的某种概率来更新它们。为了减少用于更新优先级的写入的数目,特定实施例可以仅在旧的和新的优先级位于推送阈值的相反侧的情况下才执行更新。
特定实施例可被实现在网络环境中。图4图示了适用于提供软件验证作为服务的示例网络环境400。网络环境400包括将一个或多个服务器420和一个或多个客户端430相互耦合的网络410。在特定实施例中,网络410是内联网、外联网、虚拟专用网(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、城域网(MAN)、因特网的一部分或者另一个网络410或者两个或更多个这样的网络410的组合。本公开设想到了任何适当的网络410。
一个或多个链路450将服务器420或客户端430耦合到网络410。在特定实施例中,一个或多个链路450中的每一个包括一个或多个有线、无线或光链路450。在特定实施例中,一个或多个链路450中的每一个包括内联网、外联网、VPN、LAN、WLAN、WAN、MAN、因特网的一部分或者另外的链路450或者两个或更多个这样的链路450的组合。本公开设想到了将服务器420和客户端430耦合到网络410的任何适当的链路450。
在特定实施例中,每个服务器420可以是单一服务器或者可以是跨越多个计算机或多个数据中心的分布式服务器。服务器420可以各种类型的,例如但不限于web服务器、新闻服务器、邮件服务器、消息服务器、广告服务器、文件服务器、应用服务器、交换服务器、数据库服务器或代理服务器。在特定实施例中,每个服务器420可包括硬件、软件或嵌入式逻辑组件或者两个或更多个这样的组件的组合,用于执行服务器420所实现或支持的适当功能。例如,web服务器一般能够容宿包含网页或网页的特定元素的网站。更具体而言,web服务器可容宿HTML文件或其他文件类型,或者可根据请求动态地创建或构成文件,并且响应于来自客户端430的HTTP或其他请求将它们传输到客户端430。邮件服务器一般能够向各种客户端430提供电子邮件服务。数据库服务器一般能够提供用于管理一个或多个数据存储库中存储的数据的接口。
在特定实施例中,一个或多个数据存储装置440可经由一个或多个链路450通信地链接到一个或多个服务器420。在特定实施例中,数据存储装置440可用于存储各种类型的信息。在特定实施例中,可根据特定数据结构来组织数据存储装置440中存储的信息。在特定实施例中,每个数据存储装置440可以是关系数据库。特定实施例可提供使得服务器420或客户端430能够管理(例如取回、修改、添加或删除)数据存储装置440中存储的信息的接口。
在特定实施例中,每个客户端430可以是电子设备,其包括硬件、软件或嵌入式逻辑组件或者两个或更多个这样的组件的组合并且能够执行客户端430所实现或支持的适当功能。作为示例而非限制,客户端430可以是桌面计算机系统、笔记本计算机系统、上网本计算机系统、手持式电子设备或者移动电话。本公开设想到了任何适当的客户端430。客户端430可使得客户端430处的网络用户能够访问客户端430。客户端430可使得其用户能够与其他客户端430处的其他用户通信。
客户端430可具有web浏览器432,例如MICROSOFT INTERNETEXPLORER、GOOGLE CHROME或者MOZILLA FIREFOX,并且可具有一个或多个附加元件、插件或其他扩展,例如TOOLBAR或YAHOOTOOLBAR。客户端430处的用户可输入将客户端430指引到服务器420的统一资源定位符(URL)或其他地址,并且web浏览器432可生成超文本传送协议(HTTP)请求并将HTTP请求传输到服务器420。服务器420可接受HTTP请求并且响应于该HTTP请求而向客户端430传输一个或多个超文本标记语言(HTML)文件。客户端430可基于来自服务器420的HTML文件而渲染网页,以便呈现给用户。本公开设想到了任何适当的网页文件。作为示例而非限制,网页根据具体需要可从HTML文件、可扩展超文本标记语言(XHTML)文件或可扩展标记语言(XML)文件渲染。这种页面还可执行脚本,例如但不限于以JAVASCRIPT、JAVA、MICROSOFT SILVERLIGHT编写的脚本、例如AJAX(异步JAVASCRIPT和XML)这样的标记语言和脚本的组合,等等。这里,适当时,提及网页则涵盖了(浏览器可用来渲染该网页的)一个或多个相应的网页文件,反之亦然。
特定实施例可实现在一个或多个计算机系统上。图5图示了示例计算机系统500。在特定实施例中,一个或多个计算机系统500执行这里描述或图示的一个或多个方法的一个或多个步骤。在特定实施例中,一个或多个计算机系统500提供这里描述或图示的功能。在特定实施例中,在一个或多个计算机系统500上运行的软件执行这里描述或图示的一个或多个方法的一个或多个步骤或者提供这里描述或图示的功能。特定实施例包括一个或多个计算机系统500的一个或多个部分。
本公开设想到了任何适当数目的计算机系统500。本公开设想到了采用任何适当物理形式的计算机系统500。作为示例而非限制,计算机系统500可以是嵌入式计算机系统、片上系统(SOC)、单板计算机系统(SBC)(例如模块上计算机(COM)或模块上系统(SOM))、桌面计算机系统、膝上或笔记本计算机系统、交互式自助服务机、大型机、计算机系统的网格、移动电话、个人数字助理(PDA)、服务器或者其中的两个或更多个的组合。在适当情况下,计算机系统500可包括一个或多个计算机系统500;是单一的或分布的;跨越多个位置;跨越多个机器;或者存在于云中,云可包括一个或多个网络中的一个或多个云组件。在适当情况下,一个或多个计算机系统500可没有实质性的空间或时间限制地执行这里描述或图示的一个或多个方法的一个或多个步骤。在适当情况下,一个或多个计算机系统500可在不同的时间或在不同的位置执行这里描述或图示的一个或多个方法的一个或多个步骤。
在特定实施例中,计算机系统500包括处理器502、存储器504、存储装置506、输入/输出(I/O)接口508、通信接口510以及总线512。虽然本公开描述和图示了具有采取特定布置的特定数目的特定组件的特定计算机系统,但本公开设想到了具有采取任何适当布置的任何适当数目的任何适当组件的任何适当计算机系统。
在特定实施例中,处理器502包括用于执行指令例如构成计算机程序的指令的硬件。作为示例而非限制,为了执行指令,处理器502可从内部寄存器、内部缓存、存储器504或存储装置506取回(或取得)指令;解码并执行它们;然后将一个或多个结果写入到内部寄存器、内部缓存、存储器504或存储装置506。在特定实施例中,处理器502可包括用于数据、指令或地址的一个或多个内部缓存。本公开设想到了处理器502在适当情况下包括任何适当数目的任何适当内部缓存。作为示例而非限制,处理器502可包括一个或多个指令缓存、一个或多个数据缓存和一个或多个转化后备缓冲器(TLB)。指令缓存中的指令可以是存储器504或存储装置506中的指令的拷贝,并且指令缓存可加速处理器502对那些指令的取回。数据缓存中的数据可以是存储器504或存储装置506中的数据的拷贝,供在处理器502处执行的指令进行操作;在处理器502处执行的先前指令的结果,供在处理器502处执行的后续指令访问或写入到存储器504或存储装置506;或者其他适当数据。数据缓存可加速处理器502的读取或写入操作。TLB可加速处理器502的虚拟地址转化。在特定实施例中,处理器502可包括用于数据、指令或地址的一个或多个内部寄存器。本公开设想到了处理器502在适当情况下包括任何适当数目的任何适当内部寄存器。在适当情况下,处理器502可包括一个或多个算术逻辑单元(ALU);可以是多核处理器;或者可以包括一个或多个处理器502。虽然本公开描述和图示了特定处理器,但本公开设想到了任何适当的处理器。
在特定实施例中,存储器504包括主存储器,用于存储供处理器502执行的指令或者供处理器502操作的数据。作为示例而非限制,计算机系统500可将指令从存储装置506或另外的来源(例如另一计算机系统500)加载到存储器504。处理器502随后可将指令从存储器504加载到内部寄存器或内部缓存。为了执行指令,处理器502可从内部寄存器或内部缓存取回指令并执行它们。在指令执行期间或之后,处理器502可将一个或多个结果(其可以是中间或最终结果)写入到内部寄存器或内部缓存。处理器502随后可将这些结果中的一个或多个写入到存储器504。在特定实施例中,处理器502只执行一个或多个内部寄存器或内部缓存中或存储器504中(而不是存储装置506或别处)的指令,并且只对一个或多个内部寄存器或内部缓存中或存储器504中(而不是存储装置506或别处)的数据进行操作。一个或多个存储器总线(其中每一个可包括地址总线和数据总线)可将处理器502耦合到存储器504。总线512可包括一个或多个存储器总线,如下所述。在特定实施例中,一个或多个存储器管理单元(MMU)存在于处理器502和存储器504之间并且促进处理器502所请求的对存储器504的访问。在特定实施例中,存储器504包括随机访问存储器(RAM)。此RAM在适当情况下可以是易失性存储器。在适当情况下,此RAM可以是动态RAM(DRAM)或静态RAM(SRAM)。另外,在适当情况下,此RAM可以是单端口或多端口RAM。本公开设想到了任何适当的RAM。在适当情况下,存储器504可包括一个或多个存储器504。虽然本公开描述和图示了特定的存储器,但本公开设想到了任何适当的存储器。
在特定实施例中,存储装置506包括用于数据或指令的大容量存储装置。作为示例而非限制,存储装置506可包括HDD、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(USB)驱动器或者其中的两个或更多个的组合。在适当情况下,存储装置506可包括可移除或不可移除(或固定)的介质。在适当情况下,存储装置506可在计算机系统500内部或外部。在特定实施例中,存储装置506是非易失性的固态存储器。在特定实施例中,存储装置506包括只读存储器(ROM)。在适当情况下,此ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可更改ROM(EAROM)或闪存或者其中的两个或更多个的组合。本公开设想到了大容量存储装置506采取任何适当的物理形式。在适当情况下,存储装置506可包括促进处理器502与存储装置506之间的通信的一个或多个存储控制单元。在适当情况下,存储装置506可包括一个或多个存储装置506。虽然本公开描述和图示了特定的存储装置,但本公开设想到了任何适当的存储装置。
在特定实施例中,I/O接口508包括提供用于计算机系统500与一个或多个I/O设备之间的通信的一个或多个接口的硬件、软件或两者。在适当情况下,计算机系统500可包括这些I/O设备中的一个或多个。这些I/O设备中的一个或多个可使能人与计算机系统500之间的通信。作为示例而非限制,I/O设备可包括键盘、小键盘、麦克风、监视器、鼠标、打印机、扫描仪、扬声器、静止相机、触笔、平板电脑、触摸屏、轨迹球、视频相机、另一适当I/O设备或者其中的两个或更多个的组合。I/O设备可包括一个或多个传感器。本公开设想到了任何适当I/O设备和用于它们的任何适当的I/O接口508。在适当情况下,I/O接口508可包括使得处理器502能够驱动这些I/O设备中的一个或多个的一个或多个设备或软件驱动器。在适当情况下,I/O接口508可包括一个或多个I/O接口508。虽然本公开描述和图示了特定的I/O接口,但本公开设想到了任何适当的I/O接口。
在特定实施例中,通信接口510包括提供用于计算机系统500与一个或多个其他计算机系统500或一个或多个网络之间的通信(例如基于分组的通信)的一个或多个接口的硬件、软件或两者。作为示例而非限制,通信接口510可包括用于与以太网或其他基于有线的网络通信的网络接口控制器(NIC)或网络适配器或者用于与诸如WI-FI网络之类的无线网络通信的无线NIC(WNIC)或无线适配器。本公开设想到了任何适当的网络和用于它的任何适当的通信接口510。作为示例而非限制,计算机系统500可与自组织网络、个人区域网络(PAN)、局域网(LAN)、广域网(WAN)、城域网(MAN)或者因特网的一个或多个部分或者其中的两个或更多个的组合通信。这些网络中的一个或多个网络的一个或多个部分可以是有线的或无线的。作为示例,计算机系统500可与无线PAN(WPAN)(例如BLUETOOTH WPAN)、WI-FI网络、WI-MAX网络、蜂窝电话网络(例如全球移动通信系统(GSM)网络)或者其他适当的无线网络或者其中的两个或更多个的组合通信。在适当情况下,计算机系统500可包括用于这些网络中的任何网络的任何适当的通信接口510。在适当情况下,通信接口510可包括一个或多个通信接口510。虽然本公开描述和图示了特定的通信接口,但本公开设想到了任何适当的通信接口。
在特定实施例中,总线512包括将计算机系统500的组件相互耦合的硬件、软件或两者。作为示例而非限制,总线512可包括加速图形端口(AGP)或其他图形总线、增强工业标准体系结构(EISA)总线、前端总线(FSB)、HYPERTRANSPORT(HT)互连、工业标准体系结构(ISA)总线、INFINIBAND互连、低引脚数(LPC)总线、存储器总线、微信道体系结构(MCA)总线、外围组件互连(PCI)总线、快速PCI(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准联盟局部(VLB)总线或者其他适当的总线或者其中的两个或更多个的组合。在适当情况下,总线512可包括一个或多个总线512。虽然本公开描述和图示了特定的总线,但本公开设想到了任何适当的总线或互连。
这里,提及计算机可读存储介质则涵盖了一个或多个非暂态有形计算机可读存储介质处理结构。作为示例而非限制,在适当情况下,计算机可读存储介质可包括基于半导体的或其他集成电路(IC)(例如现场可编程门阵列(FPGA)或专用IC(ASIC))、硬盘、HDD、混合硬驱动器(HHD)、光盘、光盘驱动器(ODD)、磁光盘、磁光驱动器、软盘、软盘驱动器(FDD)、磁带、全息存储介质、固态驱动器(SSD)、RAM驱动器、SECURE DIGITAL卡、SECURE DIGITAL驱动器或者任何适当的计算机可读存储介质或者其中的两个或更多个的组合。这里,提及计算机可读存储介质时不包括根据35U.S.C.§101不能获得专利保护的任何介质。这里,提及计算机可读存储介质时在其根据35U.S.C.§101不能获得专利保护的程度上不包括暂态形式的信号传送(例如传播电信号或电磁信号本身)。
本公开设想到了实现任何适当的存储装置的一个或多个计算机可读存储介质。在特定实施例中,在适当情况下,计算机可读存储介质实现处理器502(例如一个或多个内部寄存器或缓存)的一个或多个部分、存储器504的一个或多个部分、存储装置506的一个或多个部分或者它们的组合。在特定实施例中,计算机可读存储介质实现RAM或ROM。在特定实施例中,计算机可读存储介质实现易失性或持久性存储器。在特定实施例中,一个或多个计算机可读存储介质包含软件。这里,在适当情况下,提及软件可涵盖一个或多个应用、字节代码、一个或多个计算机程序、一个或多个可执行程序、一个或多个指令、逻辑、机器代码、一个或多个脚本、或者源代码,反之亦然。在特定实施例中,软件包括一个或多个应用编程接口(API)。本公开设想到了以任何适当的编程语言或编程语言的组合编写或以其他方式表述的任何适当软件。在特定实施例中,软件被表述为源代码或目标代码。在特定实施例中,软件是以诸如C、Perl或其适当扩展之类的更高级别的编程语言来表述的。在特定实施例中,软件是以诸如汇编语言(或机器代码)之类的更低级别的编程语言来表述的。在特定实施例中,软件是以JAVA来表述的。在特定实施例中,软件是以超文本标记语言(HTML)、可扩展标记语言(XML)或其他适当的标记语言来表述的。
本公开涵盖了本领域的普通技术人员将会理解的对这里的示例实施例的所有改变、替换、变化、更改和修改。类似地,在适当情况下,所附权利要求涵盖了本领域的普通技术人员将会理解的对这里的示例实施例的所有改变、替换、变化、更改和修改。

Claims (16)

1.一种用于支持用户内容馈送的方法,包括:由一个或多个计算设备,
对于一个或多个内容产生者中的每一个,访问该内容产生者产生一个或多个内容项的内容产生速率;
对于一个或多个内容消耗者中的每一个,访问该内容消耗者消耗一个或多个内容项的内容消耗速率;以及
对于多个消耗者-产生者对中的包括内容消耗者之一和内容产生者之一并且该内容消耗者追随该内容产生者的每个消耗者-产生者对,基于该内容消耗者的内容消耗速率和该内容产生者的内容产生速率,在推送策略和拉取策略之间作出选择来用于将一个或多个内容项从该内容产生者递送到该内容消耗者,其中:
根据推送策略,内容项中的每一项是在该内容项由内容产生者产生时被从内容产生者递送到内容消耗者的;并且
根据拉取策略,内容项中的每一项是在该内容项被内容消耗者消耗时被从内容产生者递送到内容消耗者的。
2.如权利要求1所述的方法,其中,对于消耗者-产生者对中的每一对,
如果内容消耗者的内容消耗速率与内容产生者的内容产生速率之间的比率大于阈值,则选择推送策略;并且
如果内容消耗者的内容消耗速率与内容产生者的内容产生速率之间的比率小于阈值,则选择拉取策略。
3.如权利要求1所述的方法,其中,对于消耗者-产生者对中的每一对,通过在维持全局连贯性的同时最小化成本来选择推送策略或拉取策略,其中:
成本是在消耗者-产生者对之间递送内容项的总资源成本,并且
全局连贯性保证对于内容消耗者中的每一个,内容项是按根据该内容消耗者追随的所有内容产生者产生的所有内容项的时间戳的顺序被递送的,其中每个内容项的时间戳指示该内容项的产生时间。
4.如权利要求3所述的方法,其中,对于消耗者-产生者对中的每一对,
令:
c表示内容消耗者,
p表示内容产生者,
Pc表示c追随的所有内容产生者,其中包括p,
pj表示Pc中的内容产生者,
φc表示c的内容消耗速率,
表示pj的内容产生速率,
Cpush表示将内容项推送到c的成本,并且
Cpull表示从p拉取恒定数目的内容项的成本,则
如果 φ c / Σ p j ∈ P c φ p j ≥ C push / C pull , 那么选择推送策略,并且
如果 φ c / Σ p j ∈ P c φ p j ≥ C push / C pull , 那么选择拉取策略。
5.如权利要求1所述的方法,其中,对于消耗者-产生者对中的每一对,通过在维持按产生者连贯性的同时最小化成本来选择推送策略或拉取策略,其中:
成本是在消耗者-产生者对之间递送内容项的总资源成本,并且
按产生者连贯性保证对于内容消耗者中的每一个,来自该内容消耗者追随的内容产生者中的每一个的内容项是按根据该内容产生者产生的所有内容项的时间戳的顺序被递送的,其中每个内容项的时间戳指示该内容项的产生时间。
6.如权利要求5所述的方法,其中,对于消耗者-产生者对中的每一对,
令:
c表示内容消耗者,
p表示内容产生者,
φc表示c的内容消耗速率,
φp表示p的内容产生速率,
Cpush表示将内容项推送到c的成本,并且
Cpull表示从p拉取恒定数目的内容项的成本,则
如果(φcp)≥Cpush/Cpull,那么选择推送策略,并且
如果(φcp)<Cpush/Cpull,那么选择拉取策略。
7.如权利要求6所述的方法,
其中,对于消耗者-产生者对中的每一对,通过进一步满足延迟服务水平协定来选择推送策略或拉取策略;并且
所述方法还包括如果不满足所述延迟服务水平协定,则:
选择消耗者-产生者对中的具有拉取策略的一个或多个消耗者-产生者对;并且
将所选择的消耗者-产生者对转移到推送策略。
8.如权利要求1所述的方法,还包括:
对于内容消耗者中的第一内容消耗者,访问关于一时间段的内容消耗模式;以及
对于消耗者-产生者对中的包括所述第一内容消耗者和内容产生者之一的第一消耗者-产生者对,进一步基于所述第一内容消耗者的内容消耗模式和内容项的递送时间在推送策略和拉取策略之间作出选择来用于将一个或多个内容项从所述内容产生者递送到所述第一内容消耗者。
9.一种用于支持用户内容馈送的系统,包括:
用于对于一个或多个内容产生者中的每一个,访问该内容产生者产生一个或多个内容项的内容产生速率的装置;
用于对于一个或多个内容消耗者中的每一个,访问该内容消耗者消耗一个或多个内容项的内容消耗速率的装置;以及
用于对于多个消耗者-产生者对中的包括内容消耗者之一和内容产生者之一并且该内容消耗者追随该内容产生者的每个消耗者-产生者对,基于该内容消耗者的内容消耗速率和该内容产生者的内容产生速率,在推送策略和拉取策略之间作出选择来用于将一个或多个内容项从该内容产生者递送到该内容消耗者的装置,其中:
根据推送策略,内容项中的每一项是在该内容项由内容产生者产生时被从内容产生者递送到内容消耗者的;并且
根据拉取策略,内容项中的每一项是在该内容项被内容消耗者消耗时被从内容产生者递送到内容消耗者的。
10.如权利要求9所述的系统,其中,对于消耗者-产生者对中的每一对,
如果内容消耗者的内容消耗速率与内容产生者的内容产生速率之间的比率大于阈值,则选择推送策略;并且
如果内容消耗者的内容消耗速率与内容产生者的内容产生速率之间的比率小于阈值,则选择拉取策略。
11.如权利要求9所述的系统,其中,对于消耗者-产生者对中的每一对,通过在维持全局连贯性的同时最小化成本来选择推送策略或拉取策略,其中:
成本是在消耗者-产生者对之间递送内容项的总资源成本,并且
全局连贯性保证对于内容消耗者中的每一个,内容项是按根据该内容消耗者追随的所有内容产生者产生的所有内容项的时间戳的顺序被递送的,其中每个内容项的时间戳指示该内容项的产生时间。
12.如权利要求11所述的系统,其中,对于消耗者-产生者对中的每一对,
令:
c表示内容消耗者,
p表示内容产生者,
Pc表示c追随的所有内容产生者,其中包括p,
pj表示Pc中的内容产生者,
φc表示c的内容消耗速率,
表示pj的内容产生速率,
Cpush表示将内容项推送到c的成本,并且
Cpull表示从p拉取恒定数目的内容项的成本,则
如果 φ c / Σ p j ∈ P c φ p j ≥ C push / C pull , 那么选择推送策略,并且
如果 φ c / Σ p j ∈ P c φ p j ≥ C push / C pull , 那么选择拉取策略。
13.如权利要求9所述的系统,其中,对于消耗者-产生者对中的每一对,通过在维持按产生者连贯性的同时最小化成本来选择推送策略或拉取策略,其中:
成本是在消耗者-产生者对之间递送内容项的总资源成本,并且
按产生者连贯性保证对于内容消耗者中的每一个,来自该内容消耗者追随的内容产生者中的每一个的内容项是按根据该内容产生者产生的所有内容项的时间戳的顺序被递送的,其中每个内容项的时间戳指示该内容项的产生时间。
14.如权利要求13所述的系统,其中,对于消耗者-产生者对中的每一对,
令:
c表示内容消耗者,
p表示内容产生者,
φc表示c的内容消耗速率,
φp表示p的内容产生速率,
Cpush表示将内容项推送到c的成本,并且
Cpull表示从p拉取恒定数目的内容项的成本,则
如果(φcp)≥Cpush/Cpull,那么选择推送策略,并且
如果(φcp)<Cpush/Cpull,那么选择拉取策略。
15.如权利要求14所述的系统,
其中,对于消耗者-产生者对中的每一对,通过进一步满足延迟服务水平协定来选择推送策略或拉取策略;并且
所述系统还包括:如果不满足所述延迟服务水平协定,则:
用于选择消耗者-产生者对中的具有拉取策略的一个或多个消耗者-产生者对,并且将所选择的消耗者-产生者对转移到推送策略的装置。
16.如权利要求9所述的系统,其中,所述系统还包括:
用于对于内容消耗者中的第一内容消耗者,访问关于一时间段的内容消耗模式的装置;以及
用于对于消耗者-产生者对中的包括所述第一内容消耗者和内容产生者之一的第一消耗者-产生者对,进一步基于所述第一内容消耗者的内容消耗模式和内容项的递送时间在推送策略和拉取策略之间作出选择来用于将一个或多个内容项从所述内容产生者递送到所述第一内容消耗者的装置。
CN201180011238.9A 2010-03-01 2011-02-28 用于支持用户内容馈送的机制 Active CN102782681B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/714,876 2010-03-01
US12/714,876 US8156240B2 (en) 2010-03-01 2010-03-01 Mechanism for supporting user content feeds
PCT/US2011/000383 WO2011109082A2 (en) 2010-03-01 2011-02-28 Mechanism for supporting user content feeds

Publications (2)

Publication Number Publication Date
CN102782681A CN102782681A (zh) 2012-11-14
CN102782681B true CN102782681B (zh) 2015-05-20

Family

ID=44505900

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180011238.9A Active CN102782681B (zh) 2010-03-01 2011-02-28 用于支持用户内容馈送的机制

Country Status (8)

Country Link
US (2) US8156240B2 (zh)
EP (1) EP2542979B1 (zh)
JP (1) JP5450841B2 (zh)
KR (1) KR101434075B1 (zh)
CN (1) CN102782681B (zh)
AU (1) AU2011221590B2 (zh)
TW (1) TWI467505B (zh)
WO (1) WO2011109082A2 (zh)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9182932B2 (en) 2007-11-05 2015-11-10 Hewlett-Packard Development Company, L.P. Systems and methods for printing content associated with a website
US8156240B2 (en) * 2010-03-01 2012-04-10 Yahoo! Inc. Mechanism for supporting user content feeds
US20120066303A1 (en) * 2010-03-03 2012-03-15 Waldeck Technology, Llc Synchronized group location updates
US8732150B2 (en) * 2010-09-23 2014-05-20 Salesforce.Com, Inc. Methods and apparatus for suppressing network feed activities using an information feed in an on-demand database service environment
US20120109936A1 (en) * 2010-10-29 2012-05-03 Nec Laboratories America, Inc. Cost-effective data layout optimization over heterogeneous storage classes
US9152357B2 (en) 2011-02-23 2015-10-06 Hewlett-Packard Development Company, L.P. Method and system for providing print content to a client
GB2502736A (en) 2011-02-23 2013-12-04 Bottlenose Inc System and method for analyzing messages in a network or across networks
US9137394B2 (en) 2011-04-13 2015-09-15 Hewlett-Packard Development Company, L.P. Systems and methods for obtaining a resource
US8825842B2 (en) * 2011-04-28 2014-09-02 Facebook, Inc. Managing notifications pushed to user devices
US9846743B2 (en) * 2011-09-02 2017-12-19 Thomson Reuters Global Resources Unlimited Company Systems, methods, and interfaces for analyzing webpage portions
US9489161B2 (en) 2011-10-25 2016-11-08 Hewlett-Packard Development Company, L.P. Automatic selection of web page objects for printing
US8832092B2 (en) 2012-02-17 2014-09-09 Bottlenose, Inc. Natural language processing optimized for micro content
US9773214B2 (en) 2012-08-06 2017-09-26 Hewlett-Packard Development Company, L.P. Content feed printing
US11651294B2 (en) 2012-08-23 2023-05-16 Iqvia Inc. System and method for detecting drug adverse effects in social media and mobile applications data
US9774488B2 (en) * 2012-10-18 2017-09-26 Tara Chand Singhal Apparatus and method for a thin form-factor technology for use in handheld smart phone and tablet devices
US9785454B2 (en) * 2013-07-25 2017-10-10 Login VSI B.V. Virtual session benchmarking tool for measuring performance and/or scalability of centralized desktop environments
US9686180B2 (en) 2013-11-05 2017-06-20 Cisco Technology, Inc. Managing routing information for tunnel endpoints in overlay networks
US10050912B2 (en) * 2014-10-27 2018-08-14 At&T Intellectual Property I, L.P. Subscription-based media push service
US9813518B2 (en) 2014-11-20 2017-11-07 Trading Technologies International, Inc. Merging data downloads with real-time data feeds
US10116493B2 (en) 2014-11-21 2018-10-30 Cisco Technology, Inc. Recovering from virtual port channel peer failure
US10082992B2 (en) 2014-12-22 2018-09-25 Hewlett-Packard Development Company, L.P. Providing a print-ready document
CN105656983A (zh) * 2015-09-17 2016-06-08 宇龙计算机通信科技(深圳)有限公司 应用消息设置方法、装置和电子设备
US10142163B2 (en) 2016-03-07 2018-11-27 Cisco Technology, Inc BFD over VxLAN on vPC uplinks
US11170059B2 (en) * 2016-03-30 2021-11-09 International Business Machines Corporation Personalized content selection for time-constrained sessions
US10333828B2 (en) 2016-05-31 2019-06-25 Cisco Technology, Inc. Bidirectional multicasting over virtual port channel
US11509501B2 (en) 2016-07-20 2022-11-22 Cisco Technology, Inc. Automatic port verification and policy application for rogue devices
US10776846B2 (en) * 2016-07-27 2020-09-15 Nike, Inc. Assortment optimization
US10193750B2 (en) 2016-09-07 2019-01-29 Cisco Technology, Inc. Managing virtual port channel switch peers from software-defined network controller
US10547509B2 (en) 2017-06-19 2020-01-28 Cisco Technology, Inc. Validation of a virtual port channel (VPC) endpoint in the network fabric
US10558723B2 (en) * 2017-09-29 2020-02-11 Salesforce.Com, Inc. Dynamic materialization of feeds for enabling access of the feed in an online social network
CN112069190B (zh) * 2019-06-11 2023-06-09 腾讯科技(深圳)有限公司 一种分批数据获取方法、装置、设备及介质
US11354220B2 (en) 2020-07-10 2022-06-07 Metawork Corporation Instrumentation trace capture technique
US11327871B2 (en) * 2020-07-15 2022-05-10 Metawork Corporation Instrumentation overhead regulation technique
US11392483B2 (en) 2020-07-16 2022-07-19 Metawork Corporation Dynamic library replacement technique
US11677804B2 (en) 2021-10-06 2023-06-13 International Business Machines Corporation Determining appropriate application of pull or push communication request types for client server calls

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1143353A2 (en) * 2000-03-09 2001-10-10 Ateon Networks, Inc. Adaptive media streaming server for playing live and streaming media content on demand through web client's browser with no additional software or plug-ins
CN1680938A (zh) * 2004-02-12 2005-10-12 微软公司 决策论web爬行探测和预测网页改变
US7058691B1 (en) * 2000-06-12 2006-06-06 Trustees Of Princeton University System for wireless push and pull based services

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044205A (en) * 1996-02-29 2000-03-28 Intermind Corporation Communications system for transferring information between memories according to processes transferred with the information
US6275871B1 (en) * 1996-07-03 2001-08-14 Siemens Aktiengesellschaft Asynchronous transport optimizing observer-pattern-like system supporting several modes for an interface definition language-less communication subsystem
EP1143352A2 (en) 2000-03-09 2001-10-10 Ateon Networks, Inc. Scalable media index system for displaying multiple "live media index menus" on a web clients browser with no additional software or plug-ins
KR100408401B1 (ko) * 2001-02-23 2003-12-06 삼성전자주식회사 광 기록/재생기기 및 트랙킹 에러신호 검출방법
US20030097448A1 (en) * 2001-11-21 2003-05-22 Menezes Francisco Jose Server control of hypertext transfer protocol client
JP3602512B2 (ja) * 2002-04-08 2004-12-15 株式会社エヌ・ティ・ティ・データ 携帯インスタントメッセージサービスシステム及び携帯インスタントメッセージサービスプログラム
US8645470B2 (en) * 2002-12-06 2014-02-04 Core Wireless Licensing S.A.R.L. System, method and computer program product for the delivery of media content
US20050015488A1 (en) * 2003-05-30 2005-01-20 Pavan Bayyapu Selectively managing data conveyance between computing devices
KR100739721B1 (ko) * 2005-08-17 2007-07-13 삼성전자주식회사 정보 제공 방법 및 푸시 모드 서비스 제공 방법
US20070100959A1 (en) * 2005-10-28 2007-05-03 Yahoo! Inc. Customizing RSS content for use over a network
US7895309B2 (en) * 2006-01-11 2011-02-22 Microsoft Corporation Network event notification and delivery
US8024452B2 (en) * 2006-05-02 2011-09-20 Research In Motion Limited Dynamic syndicated content delivery system and method
US7644139B2 (en) * 2006-05-02 2010-01-05 Research In Motion Limited Method and system for optimizing metadata passing in a push content processing protocol
TW200744008A (en) * 2006-05-18 2007-12-01 Geoinfor Scientek Consultant Inc Portable business information service system
TW200745877A (en) * 2006-06-07 2007-12-16 Telepaq Technology Inc Distributed push-pull information service system
KR100786125B1 (ko) * 2006-08-30 2007-12-18 삼성전자주식회사 릴레이 방식의 통신 시스템에서 서비스 경로 선택 방법 및장치
US20080244082A1 (en) * 2006-12-15 2008-10-02 Haoming Shen Contents communication method for transmitting contents by using a predetermined communication protocol, and contents transmitting apparatus and contents receiving apparatus using the method
EP1944944A1 (en) * 2007-01-12 2008-07-16 Thomson Licensing System and method for combining pull and push modes
US20080189429A1 (en) * 2007-02-02 2008-08-07 Sony Corporation Apparatus and method for peer-to-peer streaming
US7890592B2 (en) * 2007-06-29 2011-02-15 Microsoft Corporation Processing data obtained from a presence-based system
JP5360457B2 (ja) * 2008-02-13 2013-12-04 日本電気株式会社 分散ディレクトリサーバ、分散ディレクトリシステム、分散ディレクトリ方法、およびプログラム
JP4650547B2 (ja) * 2008-09-30 2011-03-16 ソニー株式会社 情報処理装置、プログラム、および情報処理システム
US20100094972A1 (en) * 2008-10-15 2010-04-15 Patentvc Ltd. Hybrid distributed streaming system comprising high-bandwidth servers and peer-to-peer devices
US8655842B2 (en) * 2009-08-17 2014-02-18 Yahoo! Inc. Push pull caching for social network information
US8156240B2 (en) * 2010-03-01 2012-04-10 Yahoo! Inc. Mechanism for supporting user content feeds

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1143353A2 (en) * 2000-03-09 2001-10-10 Ateon Networks, Inc. Adaptive media streaming server for playing live and streaming media content on demand through web client's browser with no additional software or plug-ins
US7058691B1 (en) * 2000-06-12 2006-06-06 Trustees Of Princeton University System for wireless push and pull based services
CN1680938A (zh) * 2004-02-12 2005-10-12 微软公司 决策论web爬行探测和预测网页改变

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《Replication for Web Hosting Systems》;SWAMINATHAN SIVASUBRAMANIAN et al.;《ACM Computing Surveys》;20040930;第36卷(第3期);正文第291-334页 *

Also Published As

Publication number Publication date
WO2011109082A3 (en) 2012-01-12
EP2542979A2 (en) 2013-01-09
EP2542979B1 (en) 2015-01-14
US8156240B2 (en) 2012-04-10
TWI467505B (zh) 2015-01-01
US8554944B2 (en) 2013-10-08
WO2011109082A2 (en) 2011-09-09
KR101434075B1 (ko) 2014-08-27
US20120179782A1 (en) 2012-07-12
AU2011221590B2 (en) 2014-02-13
TW201203153A (en) 2012-01-16
JP5450841B2 (ja) 2014-03-26
AU2011221590A1 (en) 2012-08-02
EP2542979A4 (en) 2013-10-23
CN102782681A (zh) 2012-11-14
KR20120123519A (ko) 2012-11-08
US20110213894A1 (en) 2011-09-01
JP2013521566A (ja) 2013-06-10

Similar Documents

Publication Publication Date Title
CN102782681B (zh) 用于支持用户内容馈送的机制
US11005673B2 (en) Communication gateway services in a networked message distribution system
US10754846B2 (en) Age-based policies for determining database cache hits
US20230237062A1 (en) Gathering and contributing content across diverse sources
US20140115282A1 (en) Writing data from hadoop to off grid storage
US20100114946A1 (en) Adaptive weighted crawling of user activity feeds
US11263664B2 (en) Computerized system and method for augmenting search terms for increased efficiency and effectiveness in identifying content
US20160239533A1 (en) Identity workflow that utilizes multiple storage engines to support various lifecycles
US10990620B2 (en) Aiding composition of themed articles about popular and novel topics and offering users a navigable experience of associated content
US8489590B2 (en) Cross-market model adaptation with pairwise preference data
US20220138605A1 (en) Recommendation system
Ganchev et al. The creation of a data management platform for use in the UCWW
Reali et al. Two-layer network caching for different service requirements
Kefalas et al. Recommending friends and locations over a heterogeneous spatio-temporal graph
US20150019622A1 (en) On time launcher for sites
Medvedev et al. Refresh Rate-Based Caching and Prefetching Strategies for Internet of Things Middleware
Song et al. Research on MapReduce based incremental iterative model and framework
CN105814559A (zh) 具有特定于用户的工作集的增强型服务环境
Al-Haj Hassan et al. Cooperative distributed architecture for mashups
JP2011002864A (ja) プラットフォームシステム

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: 1178273

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160728

Address after: American California

Patentee after: EXCALIBUR IP LLC

Address before: American California

Patentee before: Yahoo Corp.

TR01 Transfer of patent right

Effective date of registration: 20210319

Address after: texas

Patentee after: R2 Solutions Ltd.

Address before: California, USA

Patentee before: Aix Kelly IP Co.,Ltd.

TR01 Transfer of patent right
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1178273

Country of ref document: HK