基于集群映射和路由的系统和方法与流程

文档序号:18968828发布日期:2019-10-28 23:43阅读:203来源:国知局
基于集群映射和路由的系统和方法与流程

本发明涉及集群领域。更具体地,本发明提供了基于集群将识别分配给用户的技术。



背景技术:

社交网络网站提供其中成员可连接至其他成员或者与其他成员通信的动态环境。这些网站通常可提供在线机构,从而允许成员在其先前存在的社交网络中交互,以及创建新的社交网络。成员可包括任何个体或者实体,诸如,组织或者企业。在其他属性中,社交网络网站允许成员将相关信息有效并且高效地通信给其社交网络。

社交网络的成员可突出或共享信息、新闻报道、关系活动、音乐、视频、以及使网站区域感兴趣的专用于成员的任何其他内容或者以其他方式可用于这种内容。社交网络的其他成员可通过浏览成员间接或执行专用搜索来访问共享的内容。一旦访问并考虑了内容,其他成员可通过采取一个或多个响应动作做出反应,诸如,提供关于内容的反馈或意见。成员以此方式交互的能力促进他们之间的通信并且帮助实现社交网络网站的目标。

即使社交网络的日常使用可包括在大量计算资源上创建大量数据。以与成员期望一致的方式管理这种大量数据的能力对社交网络的最佳运行是重要的。例如,在他们与其他成员的交互中,请求社交网络的资源的成员期望信息及时显示。如另一实例,可在通过社交网络保持的数据上执行搜索的成员期望及时返回搜索结果。



技术实现要素:

为了集群节点并且将节点映射至最佳系统性能的计算资源,在实施方式中,计算机实现方法第一级群体、系统和计算机可读介质可识别与多个节点相关联的分类。该分类可基于分类之间的矢线权重被组合为第一级群体。第一级群体基于第一级群体之间的矢线权重可被组合为第二级群体。基于该分类、第一级群体和第二级群体可生成多个节点的排序表。唯一标识符(ID)可顺序地分配至多个节点的排序表。

在实施方式中,多个节点与社交网络系统的用户相关联。

在实施方式中,多个节点与个人、非个人、组织、内容、事件、网页、通信、对象或概念中的至少一个相关联。

在实施方式中,该分类可表示与多个节点相关联的至少一个属性。

在实施方式中,该属性包括地理位置。

在实施方式中,多个节点的节点之间的连接与矢线权重相关联。

在实施方式中,矢线权重是基于连接的数量。

在实施方式中,矢线权重是基于连接的强度。

在实施方式中,连接表示多个节点的节点之间的共享特征。

在实施方式中,矢线权重说明共享特征。

在实施方式中,第一共享特征与第二共享特征被不同地加权。

在实施方式中,多个节点的排序表的生成包括根据第二级群体整理多个节点。

在实施方式中,多个节点的排序表的生成包括根据第一级群体整理多个节点。

在实施方式中,多个节点的排序表的生成包括根据分类整理多个节点。

在实施方式中,具有共享特征的节点被分配唯一ID,这些唯一ID比分配至没有共享特征的节点的唯一ID在数字上更接近。

在实施方式中,可基于每一个较低等级的群体之间的矢线权重将较低等级的群体迭代地组合到较高等级的群体。多个节点的排序表可进一步基于较高等级的群体来生成。

在实施方式中,与多个节点相关联的先前存在的ID可映射至唯一ID。

在实施方式中,将分类组合为第一级群体包括使群体内的连接数量或连接强度中的至少一个最大化,并且使群体之间的连接数量或连接强度中的至少一个最小化。

从附图中并且从以下详细描述中,本发明的很多其他特征和实施方式将显而易见。

附图说明

图1示出了根据本公开内容的实施方式的示例性集群模块。

图2示出了根据本公开内容的实施方式的示例性识别模块。

图3A至图3D示出了根据本公开内容的实施方式的示例性映射表。

图4示出了根据本公开内容的实施方式的通过分类、第一级群体和第二级群体构成的示例性树形图。

图5示出了根据本公开内容的实施方式的将唯一ID分配至节点图谱的节点的示例性过程。

图6示出了根据本公开内容的实施方式的示例性网络计算机系统。

图7示出了根据实施方式的示例性映射模块。

图8示出了根据实施方式的基于负载均衡因素将用户映射至机器的示例性过程。

图9示出了根据实施方式的将用户路由至机器的示例性过程。

图10示出了根据实施方式的用于在社交网络系统内集群并映射用户的系统的示例性网络图。

图11示出了根据实施方式的可用于实现本文中描述的一个或多个实施方式的示例性计算机系统。

附图仅出于说明的目的描述了本发明的各种实施方式,其中,附图使用相同参考标号表示相同元件。本领域技术人员从以下讨论中容易地认识到,在不背离本文中描述的本发明的原理的情况下,可以采用附图中示出的结构和方法的可替换实施方式。

具体实施方式

诸如社交图谱的节点图谱可包括非常多的节点以及节点之间的连接(或者矢线)。例如,节点的数量可以是数以亿计甚至数以十亿计。在很多情况下,诸如,通过网络计算机系统实现社交网络系统,用户能够访问并与其他用户共享大量信息。存储和提供这种大量数据存在许多挑战。例如,这些挑战可包括重要的计算和存储要求,它们涉及确定如何在分布式系统上分割节点图谱。例如,在分布式系统上执行查询(或者请求)可潜在地要求查询大量机器。查询的这个“展开(fanout)”不仅会减慢查询响应时间,还会给网络强加过多压力。

节点图谱信息跨越分布式系统的分割可对网络的计算速度和压力具有很大影响。例如,其中,用户信息被存储(例如,哪个机器)并且如何访问或存储(例如,永久性存储器或快速存储器中的)用户信息可明显影响计算量和速度。本文中描述的系统和方法的实施方式涉及生成唯一ID,该唯一ID可用于以最佳方式分割跨越分布式系统的节点图谱。例如,可基于它们的关系以集群节点的方式生成唯一ID,并且将这些集群倾向增加至本地的相同机器。

计算和网络性能可受到机器接收通信量的影响。使用模式可改变增加在机器上的负载的量。本文中描述的系统和方法的实施方式还涉及管理和平衡跨越机器的这种负载。例如,这可包括确定与集群相关的使用模式以及机器的负载上的相应效果,然后以某种方式将集群再分配给机器以更好地平衡负载。

图1示出了根据实施方式的示例性集群模块100。集群模块100包括识别模块102和映射模块104。集群模块100可实现为网络计算机的分布式系统的一部分,诸如,社交网络系统的一部分。这个附图和所有附图中示出的部件仅是示例性的,并且其他实现可包括另外的、较少的或者不同的部件。可以不示出一些部件,以便不使相关细节晦涩。

识别模块102可生成要分配至节点图谱的节点的唯一标识符(ID)。在实施方式中,节点可与社交网络系统的用户相关联。在实施方式中,例如,节点可与可以表示为节点的个人、非个人、组织、内容(例如,图像、视频、音频等)、事件、网页、通信、对象、概念、或任何其他事物、想法、或构造、具体的或抽象的相关联。唯一ID可通过首先确定每个节点的分类生成。在实施方式中,分类的确定可基于任何属性(或多个属性)。例如,该属性可涉及地理位置(例如,居住城市)。在实施方式中,如本文中更详细描述的,分类的确定不基于节点之间的矢线权重。

接着,该分类可基于分类之间限定的矢线权重组合为较高级群体。在某些实施方式中,矢线权重可基于分类之间的多个连接、分类之间的连接强度、或者这些或其他因素的组合。合成的群体可再被迭代地组合为更高级群体。这些组合为更高级群体还可基于群体之间的矢线权重。如本文中更详细地讨论的,然后可根据分类和所有群体等级来整理节点,并且随后以数字上连续的方式分配唯一ID。

在实施方式中,连接可表示分类和群体之间的任何类型的活动、交互、共同利益、或者其他共享特征。矢线权重可不同地说明共享特征。例如,与第二类型的共享特征相比,第一类型的共享特征可反映两个分类或群体之间的较强关系。因此,基于它们的相对重要性,第一类型的共享特征可比第二类型的共享特征更重地加权。因此,矢线权重可反映各种类型的共享特征的相对重要性。如本文中更详细讨论的,与共享特征相关联的值可由系数表示。

映射模块104可利用为所有节点的唯一ID的设置(还称为“唯一ID空间”)以在网络计算机系统上分割节点图谱。在实施方式中,唯一ID空间可用于将节点映射在网络计算机系统的数据库服务器上。在另一实施方式中,唯一ID空间可用于将节点映射在网络计算机系统的高速缓存系统上。

映射模块104可通过分割的数量分开(或分离)唯一ID空间并且基于该分区将节点路由至网络计算机系统的机器。在实施方式中,在某些情况下,这些分区可同样加权为每个分区具有相同数量的唯一ID。在另一实施方式中,可以不等同地加权分区。映射模块104基于它们相关的唯一ID可将节点映射至机器,这导致紧密地连接节点(例如,用户和他们的朋友)的倾向被集群在相同机器上(或者紧密相关的机器组,诸如,机器池)。在实施方式中,映射模块104考虑了负载均衡因素以映射节点以优化机器负载。

图2示出了根据实施方式的示例性识别模块102。识别模块102可限定分类的新图谱(例如,地理位置),而不是原始节点。识别模块102可包括分类确定模块202、群体生成模块204和ID分配模块206。分类确定模块202可识别与节点图谱的节点相关的属性并且可基于该属性确定每个节点的分类。根据节点可分的组,属性可以是任何特性或概念。在实施方式中,可以选择多于一个属性以及不同组合的属性并且用于将节点分类。

在实施方式中,属性可以是地理相关,诸如,相关城市、邻近地区、乡镇或者其他地理位置。每个节点可以通过它的地理相关进行分类。例如,社交图谱可包括作为节点的用户以及作为节点之间的连接(或者矢线)的友谊。用户的属性可以是相关城市(例如,居住城市)。在此情况下,每个用户可基于与用户相关联的城市进行分类。基于城市或者其他相关分类的用户可构成用户群体。

与节点之间的连接坚固地互相关联的属性可促进群体的确定。例如,在社交图谱的实例中,地理相关可与友谊坚固地互相关联,因为人们经常倾向于在地理区域(例如,城市)内居住、工作和社交,并且因此,在相同的地理区域具有和其他人交朋友的倾向。因此,如本文中更详细描述的,在共同地理区域中的朋友可形成群体。如另一实例,任何一个或者许多人口统计因素(例如,年龄、种族、性别、信仰等)可以是经常与节点之间的连接坚固地互相关联的属性。在这方面,具有类似人口统计配置文件的个人经常是朋友。因此,人口统计因素可用于在确定的群体中将个人分类。用户在确定群体中的分类可基于除了本文中明确描述的那些作为实例之外的属性。

有关社交图谱的实例用于提供示例性背景并且示出各种实施方式的操作原理。社交图谱的这个实例的讨论不应该被视为限制性的。在其他实施方式中,有关社交图谱的这个实例的根本原理和概念可适用于其他类型的图谱、节点、连接、属性等。

分类确定模块202可表示分类(例如,城市)作为新图谱的节点,并且限定分类之间的矢线权重(或者值)。在某些实施方式中,矢线权重可基于分类之间的多个连接、分类之间的连接强度或类型、或者这些或其他因素的组合。在实施方式中,矢线权重可基于分类之间的连接的总数量来确定。例如,矢线权重可与任何两个分类之间的连接数量成比例,使得两个分类之间的连接越多,表示它们的连接的矢线权重越大。例如,矢线权重可由两个分类之间的连接数量表示-例如,100个连接导致矢线权重为100,200个连接导致矢线权重为200等。在其他实施方式中,可以使用将值分配给分类之间的矢线权重的其他技术。

在实施方式中,矢线权重可以基于分类之间的连接(或亲近度)的强度或质量来确定。例如,两个分类之间的单独连接可具有基于连接的强度分配的改变系数。例如,与具有特点“B”(例如,两个用户是同事)的连接相比,具有特点“A”(例如,两个用户结婚了)的连接可被视为更强的(或更重要的)连接。因此,与具有特点“B”的连接相比,具有特点“A”的连接可被分配较大系数。例如,在社交图谱的实例中,圣何塞(San Jose)的用户可与旧金山的普通熟人具有若干友谊,但是与洛杉矶的家庭成员、亲密朋友或者与用户处于频繁通信的朋友具有等量友谊。与家庭成员、亲密朋友或者与用户处于频繁通信的朋友在洛杉矶的友谊与旧金山的友谊相比可被分配较大系数值以反映洛杉矶的友谊更强大。

通常,社交图谱数据可包括有关系数的信息,作为社交图谱中的节点之间的相关测量。系数可反映社交图谱中的节点之间的连接(或者路线)的加权。例如,系数可表示基于连接它们的路线的相应加权,与由用户以朋友相待的另一个人相比,用户更靠近她最好的朋友。系数可基于节点之间的各种可能的交互,不管是社交网络系统的内部或外部。节点可包括用户、个人、页面、或者社交图谱中的任何对象。系数的确定可以是指向性的,并且取决于许多因素,诸如,社交图谱中的节点之间的关系、交互或亲密度。例如,一个用户(例如,用户A)与另一用户(例如,用户B)的相关性的测量可基于包括但不限于以下各项的各种因素:用户A与用户B是不是朋友;用户A是否评论了用户B的照片;用户A是否喜欢用户B的内容或状态更新;用户A是否张贴在用户B的墙上;用户A是否与用户B思路相同;用户A与用户B出现在相同照片中;一定量时间(例如,白天)是否发生(或没有)用户A与用户B或用户B的内容衔接;用户A是否与用户B的评论有关系;用户A是否与其他人分享用户B的内容;用户A在评论墙中是否提到用户B;用户A是否查看了用户B的配置文件或其他网页等。

在涉及为用户B确定用户A的系数的上述实例中,告知系数的许多可能的交互是基于用户A的行为。然而,包括用户B的行为的其他交互也可被认为是为用户B确定用户A的系数。这种交互可包括任何种类的活动,诸如:用户B是否查看用户A的照片;用户B是否查看用户A的相册;一定量时间(例如,白天)是否发生(或没有)用户B与用户A或用户A的内容衔接等。进一步地,告知系数确定的交互可基于交互出现的持续时间(例如,最后30天、60天、90天或任何其他合适的时间间隔)。系数还可基于在那些历史持续时间内的交互频率以及其他因素。

在有些情况下,系数还可以是不对称的。例如,至于某些原因(例如,隐私),系数分仅可基于行动的用户行为。在实施方式中,可以计算双向系数分,使得缓存分片更好地反映使用模式。

群体生成模块204可基于分类之间的矢线权重在群体内以第一级将分类组合。在实施方式中,群体检测算法可利用分类作为输入来执行,导致分类(例如,城市)映射至相应的群体。例如,在实施方式中,在它们之间具有相对较大值的具有矢线权重的分类可在群体中被组合在一起,以便使群体内的连接数量或连接强度最大化并且使群体之间的连接数量或连接强度最小化。

以第一等级组合分类的群体可被称为第一级群体。可以执行迭代地组合以生成较高等级的群体。例如,可以为第一级群体执行群体检测算法作为输入以将第一级群体组合至较高等级的第二级群体。类似地,可以为第二级群体执行群体检测算法作为输入以将第二级群体组合至较高等级的第三级群体等。这个技术导致分类被组合至第一级群体,第一级群体被组合至第二级群体,第二级群体被组合至第三级群体,并且第三级群体被组合至其他更高级的群体。每个连续等级的群体中的群体可通过使群体内的连接数量或连接强度最大化并且通过使与其他群体的连接数量或连接强度最小化来确定。

迭代地组合以生成连续等级的群体不局限于数量。在实施方式中,该技术可包含映射至n个群体等级,其中,n可以是用于最优地将分类和群体组合而选择的任何整数值。例如,n的值可以是两个、三个或其他合适的数量。如另一实例,n的值可以是除了二或三之外的值。

在社交图谱的实例中,可基于城市之间的矢线权重(例如,城市之间的友谊数量、城市之间的友谊强度、这两者等)将城市组合到群体中。合成的第一级群体以类似方式可进一步被组合到第二级群体中。合成的第二级群体以类似的方式可进一步被组合到第三级群体中等。可以执行任意数量的迭代地组合到较高级群体中。在某些实施方式中,与原始节点相关联的先前存在的ID(例如,用户ID)可被映射到分类和各级群体。

通过属性将节点分类,然后使用分类作为将节点组合到群体中的工作组可提供明显优势。在社交图谱的实例中,基于与十亿个用户相关联的节点的工作组可被减少为基于与用户相关联的750,000个城市的分类的工作组。这种工作组减少可明显减少用于确定唯一ID的计算时间,例如,从许多小时至几分钟。此外,减少的工作组可明显减少需要用于各种应用的迭代地组合的数量。在一些情况下,基于减少的工作组实现最佳的节点集群的迭代地组合的数量可以是五次迭代或者更少。

在社交图谱的实例中,社交图谱可包括约十亿个节点,其可关于约750,000个城市进行分类。当城市基于城市之间的矢线权重(例如,连接数量)被组合时,合成的第一级群体的数量可以为约2,000。如果第一级群体基于它们之间的矢线权重被进一步组合时,合成的第二级群体的数量可以为约60。将群体以更高级组合的随后尝试不可提供明显减少的群体数量。

尽管以各个等级合成的群体可与地理区域具有某些程度的对应,但是它们可基于可与地理具有强相关的友谊。群体与地理区域之间的对应不必严格对应。例如,彼此接近的一些地理区域在它们之间不可具有许多或坚固的友谊,并且彼此远离的一些地理区域可具有许多或坚固的友谊。地理区域与友谊之间的相关可基于各种因素,诸如,文化因素、人口统计趋势、共同利益或联系等。

ID分配模块206可以数字上连续的方式将唯一ID分配至节点的排序表。可在某种意义上整理节点,使得朋友倾向于被集群在一起,并且倾向于具有相同分类并且落入相同群体内。ID分配模块206可通过类别和合成的群体来整理节点。在实施方式中,可以通过分类、然后通过第一级群体、然后在通过第二级群体等来整理节点,等等。

唯一ID可以是被分配至节点的排序表的数字顺序(例如,从一至十亿)。通常,以各级集群的节点或群体将具有在数字上彼此紧邻的唯一ID。例如,具有相同分类的节点将具有在数字上彼此紧邻的唯一ID。如另一实例,在相同的第一级群体内的节点将具有在数字上彼此紧邻的唯一ID。在相同的第二级群体内的节点将具有在数字上彼此紧邻的唯一ID。在相同的第三级群体内的节点将具有在数字上彼此紧邻的唯一ID。应当理解,术语“在数字上紧邻的”被广泛用于本文中并且不限于具有包括顺序的从始至终的每个整数或值的连续数字的严格顺序的唯一ID。例如,在数字上紧邻的唯一ID可以是在数字上连续的奇数-例如,1、3、5、7、9等。如另一实例,在数字上紧邻的数字可以是一系列非连续的奇数和偶数-例如,1、2、4、5、7、8等。如又一实例,如通过本文描述的技术所确定的,在数字上紧邻的数字可表示用于节点的一组唯一ID中的值之间的差值比用于节点的一组另一类型的先前存在的ID中的值之间的差值相对较小。

因此可以构造唯一ID空间,使得朋友、分类和群体具有彼此紧邻的唯一ID。唯一ID可分为跨越网络计算机系统进行映射。当唯一ID空间分开时,唯一ID空间的分区将包括朋友集群以及各个等级中的城市和群体的集群。在一些实施方式中,具体等级中的城市或其他群体可在分割之间分开。通常,如本文中更详细地讨论的,分割可提高局部性并且优化系统性能,同时减少与展开相关联的缺点。

识别模块102可更新新图谱的定义。通过识别模块102基于分类而不是原始节点的新图谱的定义可要求较少更新。在社交图谱的实例中,城市之间的友谊的数量或友谊的强度可以是相当静止的并且不可在短时间阶段内发生明显变化。相反,用户的编号可能出现得更频繁,因为人们可在城市内移动、结交新朋友等。因此,因为新图谱基于分类而不是原始节点,所以识别模块102可要求执行相对较少的更新以说明与用户相关联的根本数据的变化。在各种实施方式中,识别模块102可以各种间隔(例如,每周、一个月、3个月、6个月或其他可适用的时间周期)或者根据必然事件的发生(例如,城市或群体之间的矢线权重的阈值变化)来更新新图谱。

图3A至图3D示出了根据实施方式的示例性映射表。关于社交图谱描述了示例性映射表。然而,结合表格讨论的基本概念不局限于任何单个社交图谱或者其具体特征。

在图3A中,表300包括列出12个用户(例如,节点)的用户(USER)纵列。为了清楚和简洁,为了示例性的目的仅示出了12个用户。应当理解,生成的映射表可包括数百万、数十亿或者任意数量的用户。在实施方式中,纵列用户可表示上述为每个用户分配的先前存在的ID(例如,用户ID),然后可相应地映射为纵列L1中的分类(例如,城市)以及纵列C1和C2中的群体。

纵列L1表示用户的相关城市。城市可表示用户的居住地。例如,示出了用户1-12中的每一个,紧挨着其相关城市-例如,纽约(NY)、旧金山(SF)、圣地亚哥(SD)、洛杉矶(LA)或者新泽西州(NJ)。

纵列C1表示基于城市之间限定的矢线权重(例如,基于城市之间的友谊的数量,城市之间的友谊的强度等)由组合城市产生的第一(first)级群体。在实施方式中,选择第一级群体,使得在它们之间具有大量(或强度)友谊的城市被组合在一起,以便使第一级群体内的友谊的数量(或强度)最大化,并且使第一级群体之间的友谊的数量(或强度)最小化。如所示,NY在第一级群体内被列为“1”;SF在第一级群体内被列为“2”;SD和LA在第一级群体内被列为“3”;并且NJ在第一级群体内被列为“4”。在示出的实施方式中,LA和SD在它们之间可具有相对大量的友谊,导致LA和SD在相同的第一级群体内被组合。

纵列C2表示基于第一级群体之间限定的矢线权重(例如,基于第一级群体之间的友谊的数量,第一级群体之间的友谊的强度等)由组合第一级群体产生的第二级群体。在实施方式中,选择第二级群体,使得在它们之间具有大量(或强度)友谊的第一级群体被组合在一起,以便使第二级群体内的友谊的数量(或强度)最大化,并且使第二级群体之间的友谊的数量(或强度)最小化。在示出的实施方式中,NY和NJ落入相同的第二级群体“1”内;并且SF、SD和LA落入相同的第二级群体“2”内。

然后可以整理城市和合成的群体等级,基于城市和合成的群体等级产生用户(用户ID)的排序表。例如,映射表300内的用户可根据城市(纵列L1)、第一级群体(纵列C1)和第二级群体(纵列C2)进行整理。因为基于与友谊相关联的矢线权重群体被组合,所以朋友被集群在一起或者具有集群在一起的倾向。

图3B示出了已经通过城市(纵列L1)整理了用户之后的映射表300。如所示,LA的用户首先被列在图表的顶部,接着是城市NJ、NY、SD,然后是SF。

图3C示出了已经通过第一级群体(纵列C1)整理了用户之后的映射表300。如所示,第一级群体“1”中的用户首先被列在图表200的顶部,接着是第一级群体“2”、“3”中的用户,然后是“4”。

图3D示出了已经基于第二级群体(纵列C2)整理了用户之后的映射表300。如所示,第二级群体“1”中的用户首先被列在图表200的顶部,接着是第二级群体“2”中的用户。

作为整理程序的结果,用户1-12通过城市、第一级群体和第二级群体被整理。例如,第二级群体“2”内的所有用户在数字上彼此紧邻(例如,用户2、6、8、11、4、7、1、3和12)。此外,在第二级群体“2”内,第一级群体“2”内的所有用户在数字上彼此紧邻(例如,用户2、6、8和11),并且第一级群体“3”内的所有用户彼此紧邻(例如,用户4、7、1、3和12)。更进一步地,在第一级群体“2”内,城市“SF”内的所有用户彼此紧邻(例如,用户2、6、8和11)。在第一级群体“3”内,城市“LA”内的所有用户彼此紧邻(例如,用户4和7),城市“NY”内的所有用户彼此紧邻(例如,用户1),并且城市“SD”内的所有用户彼此紧邻(例如,用户3和12)。这个相同模式也应用于第二级群体“1”内的所有用户。

以此方式,当识别模块102以在数字上连续的方式将唯一ID分配至用户的排序表时,在相同城市以及合成群体等级内的用户将具有在数字式彼此紧邻的唯一ID。例如,图3D中的表300包括纵列UQ_ID,其列出了以数字上连续的方式分配至已经通过分类、第一级群体和第二级群体整理的用户的唯一ID。如所示,具有相同分类或落入相同群体内的用户彼此紧邻,并且因此具有在数字上彼此紧邻的唯一ID。如本文中所描述的,以此方式唯一地识别节点可证明提高系统性能并优化计算资源的观点是有益的或有利的。应当理解,尽管在一些情况下群体可具有地理成分,但是在其他情况下群体不可具有地理成分。例如,在图3A至图3D中,用户1和用户5都与NY相关联但是在不同的第一级群体内。例如,用户1可在第一级群体“3”中具有许多朋友,然后在第一级群体“3”中被组合。另一方面,用户5可在第一级群体“1”中具有许多朋友,然后在第一级群体“1”中被组合。

在一些实施方式中,整理技术可以不同。例如,不是在分类和每级群体上整理,可基于分类或群体等级的任何组合选择性地整理用户。例如,仅可基于最高级群体(例如,第二级群体)整理用户。然后,可基于这种整理分配唯一ID。如另一实例,只有两个最高级群体(例如,第一级群体和第二级群体)可在分配唯一ID之前进行整理。

图4示出了根据实施方式的分配至分类402、第一级群体403和第二级群体404的节点401的示例性树形图400。树形图400可包括任何合适数量(x1)的节点。在示出的实例中,如通过从每个节点401至相应分类402的线所表示的,十亿个节点401通过分类402被组合。可以确定与节点相关联的任何合适数量(x2)的分类。在示出的实例中,表示地理位置(例如,城市)的750,000个分类402与节点401相关联。如通过从每个分类至相应第一级群体的线所表示的,每一个分类402在第一级群体403内被组合。可以确定任何合适数量(x3)的第一级群体403。在示出的实例中,2,000个第一级群体403与分类402相关联。此外,如通过从每个第一级群体至相应第二级群体的线所表示的,每一个第一级群体403在第二级群体404内被组合。可以确定任何合适数量(x4)的第二级群体。在示出的实例中,60个第二级群体404与第一级群体403相关联。构成树形图400,使得具有相同分类并落入相同群体内的节点401被集群在一起,并且因此,以整理的方式基于分类402、第一级群体403和第二级群体404被构成。以此方式,唯一ID以数字上连续的方式自始至终(例如,从左至右)可分配至节点401。具有相同分类或落入相同群体内的节点将具有在数字上彼此紧邻的唯一ID。应当理解,图4中示出的x1、x2、x3和x4的值是示例性的。在不同实施方式中可以实现任何合适的数量。

图5示出了根据实施方式的将唯一ID分配至节点图谱的节点的示例性过程。应当理解,图1至图4的上述讨论还可应用于图5的过程。为了配置文件和清楚,适用于图5的每个特征和功能不在此重复。

在框502中,可以识别节点图谱中的节点。在实施方式中,例如,节点可与社交图谱内的用户相关联。在框504中,可以识别节点的一个或多个属性。属性可涉及节点或者节点之间的连接。在框506中,可基于属性生成每个节点的分类。在一个实施方式中,该属性可以是地理相关(例如,与城市相关联),并且可通过它们相关联的地理位置(例如,居住的城市、企业或操作的城市等)将节点分类。分类可被视为新图谱的节点,具有分类之间限定的矢线权重。在实施方式中,矢线权重可基于节点之间的连接的数量来确定。在实施方式中,矢线权重可基于连接的强度,该强度可由系数表示。在实施方式中,通过图2的分类确定模块202可执行框502、504和506。

在框508中,分类(例如,相关城市)可基于分类之间限定的矢线权重(例如,基于分类之间的连接的数量或强度)被组合到群体中。该组合从分类至第一级群体的映射。在框510中,确定是否执行其他组合到另一级群体中。如通过框510至框508的箭头所表示的,如果要执行其他组合,则从框508产生的第一级群体基于第一级群体之间的矢线权重(例如,基于第一级群体之间的连接数量或者第一级群体之间的连接强度)被组合。可以任何其他组合到较高级群体的类似方式重复这个过程。如果没有要执行其他组合到较高级群体,则在框512中,基于分类整理和合成的群体等级来整理节点(来自框502)。在某种意义上整理节点,使得朋友倾向于被集群在排序表中,并且进一步倾向于具有相同分类并且落入相同群体内。

在框514中,唯一ID以数字上连续的方式被分配至节点的排序表。以此方式,具有连接(例如,友谊)的节点(例如,用户)将倾向于在相同分类和相同群体内集群在一起,并且因此,具有在那个数字上彼此紧邻的唯一ID。在实施方式中,框508和510可通过图2的群体生成模块204来执行。此外,在实施方式中,框512和514可通过图2的ID分配模块206来执行。

分类和更高级的群体不一定可提供分类内的更精细信息。例如,用户的排序表可不必被整理为使得城市内的朋友的子群体在唯一ID空间中在顺序上是彼此紧邻的。例如,城市的子群体可与在用户之间具有较高连接数量的郊区相关联。

在实施方式中,可以在分类内识别节点的子群体。例如,子群体的分类可以本文中讨论的类似方式得出。例如,节点然后可基于节点之间的连接数量或强度被组合到分类内的子群体中。子群体的其他等级还可被迭代地计算。然后可通过分类和子群体(以及较高级群体)整理节点来生成节点的排序表。唯一ID然后可以数字上连续的方式被分配至节点的排序表。以此方式,具有连接的节点的子群体将倾向于被集群在一起。

基于通过识别模块102所执行的技术来唯一识别节点可在各种情况下提供优势。例如,通过识别模块102生成并且分配唯一ID可提高信息可被压缩用于存储的方式。网络计算机系统可包括可缓慢访问但具有大存储容量的主存储器。因此,压缩可以不是关于主存储器管理的重要因素。然而,网络计算机系统的存储器分级体系还经常实现可更频繁地访问以提高性能速度的更快的存储器。因为更快的存储技术倾向于更昂贵,所以存储器的大小经常受到限制,并且因此压缩技术在使可在其中存储的数据量最大化中起到更重要的作用。增量编码是一个压缩技术,其可受益于通过识别模块102生成并分配的唯一ID空间。

例如,用户的朋友列表可包括先前存在的用户ID:200;3,000;和30,000。通常,为了增量编码朋友列表,朋友的用户ID被从最小值到最大值进行整理。可以从每个用户ID中减去前述用户ID,除了不具有前述用户ID的最小的用户ID之外。增量编码列表可包括以下:200;2800;和27,000。值2800通过从3000中减去200得出,并且值27,000通过从30,000中减去3,000得出。通过增量编码,思想是生成要求存储的较少比特的较小数字。然而,如所示,当处理较大组潜在用户ID值时,用户ID值之间的差值可以是相对较大值。

因为唯一ID以数字上连续的方式被分配至基于连接使节点集群的节点(例如,用户)的排序表,具有连接(例如,友谊)的许多节点(例如,用户)将在该排序表内被集群,并且最终分配的唯一ID在顺序上彼此紧邻。因此,具有用户ID 200;3,000;和30,000的相同朋友可具有通过识别模块102分配的在顺序上彼此紧邻的唯一ID,诸如:1、001;1、003;和1010。将增量编码应用至增量编码值:1、001;2;和7中的这些唯一ID结果。这些增量编码值提供明显较小的值,其要求明显较小的数据存储在存储器中。

当以跨越网络计算机系统(包括磁盘、机器、数据库服务器和数据中心)的比例分割大块图谱时,基于通过识别模块102执行的技术生成且将唯一ID分配至节点可证明是有利的。

图6示出了根据实施方式的示例性网络计算机系统600。网络计算机系统600包括n个数据库服务器602、与数据库服务器602相关联的n个缓存系统604、网络服务器606、以及与网络服务器606相关联的缓存系统608,其中,n是任意数量的数据库服务器和相关缓存系统以支撑计算机网络系统600,诸如社交网络系统。数据库服务器602包括数据库服务器612、数据库服务器614、数据库服务器616和数据库服务器618。缓存系统604包括缓存系统622、缓存系统624、缓存系统626和缓存系统628。数据库服务器612与缓存系统622相关联;数据库服务器614与缓存系统624相关联;数据库服务器616与缓存系统626相关联;并且数据库服务器618与缓存系统628相关联。数据库服务器602、缓存系统604和网络服务器606可通过一个或多个网络(诸如,LAN、WAN和互联网)彼此通信地耦接。每一个数据库服务器602可表示单个数据库服务器或数据中心。用于图谱(诸如,社交图谱)的信息可存储在由数据库服务器602形成的永久性存储器层内。

在社交图谱的实例中,数据库服务器602可包括社交图谱中的所有用户的用户信息。例如,用户信息可包括与用户配置文件、图像、视频、贴子、状态更新、朋友列表、新鲜事相关的信息、或者与通过社交图谱支持的社交网络系统上的用户和用户行为相关联的任何其他信息。特定用户的用户信息可存储在数据库服务器602的特定数据库服务器上。不管任何用户的友谊,用户可映射至数据库服务器602中的一个。例如,社交网络系统的新用户可基于哪个数据库服务器602具有维护用户结合社交网络系统时的关于用户的数据的能力被分配至数据库服务器602中的一个。

在某些实施方式中,与用户相关联的用户ID可用于表示用户的信息要被存储在哪个数据库服务器602上。如果用户信息期望用于给定的用户,则可查询具有用户信息的特定数据库服务器以获取用户的信息。例如,当用户A访问网络计算机系统600的网络服务器606时,网络服务器606可识别用户A的用户ID,并且可使用用户ID来确定用户A的用户信息存储在数据库服务器614上。例如,用户A的用户信息可包括用户A的朋友的朋友列表或者有关用户A的其他信息。

如通过查询632、636和638相应的数据库服务器612、616和618所表示的,每一个用户A的朋友的用户信息然后可通过查询具有相应朋友的用户信息的每个数据库服务器来获取。查询632、636和638每一个相应的数据库服务器612、616和618表示展开查询。尽管该实例示出了三个另外查询632、636和638相应的数据库服务器612、616和618,但是用户A可具有在多个数据库服务器602上罗列的明显较大数量的朋友(例如,成千数百的朋友),这可潜在要求为每个朋友展开查询不同的数据库服务器。在这种情况下,大量展开查询将是不可取的。展开查询可明显减小性能(例如,获取信息的速度)并且生成过多量的网络通信量,尤其在处理极大量的节点和查询时。当为用户A的“朋友的朋友”(或者仍然具有较大程度分离的间接朋友)执行用户信息查询时,与展开查询相关联的问题更复杂。展开查询还可有助于过度使用缓存系统604中的存储器。

网络计算机系统600也包括与数据库服务器602相关联实现的缓存系统604以提供比数据库服务器602的永久性存储器层更快的存储器访问。例如,缓存系统604可实现RAM内的缓存层业务或者其他形式的快速存储技术,诸如闪速存储器。例如,使用替代PHP缓存(APC)、高性能缓存(Memcache)等可缓存数据或计算。类似地,网络服务器606还可在缓存系统608内缓存数据或计算。例如,当查询的用户A的用户信息首先被发送至给定的数据库服务器614时,用户信息可从数据库服务器614中检索并且还存储在缓存系统624中。此后,只要用户A的用户信息保持在缓存系统624中,可从缓存系统624中更迅速地检索随后查询的用户A的用户信息。然而,如果用户A的朋友的用户信息存储在不同的数据库服务器602上,则缓存系统604不一定可提供明显减少的展开查询的数量。

因为朋友倾向于是朋友的一个或多个组的一部分,所以朋友具有许多共同朋友的强烈倾向。当收集朋友以及朋友的朋友的用户信息时,共同朋友的用户信息的许多查询可发生。如果这些朋友是随机分散在不同的数据库服务器和缓存系统上,则将执行展开查询。

在某些实施方式中,缓存系统604可被配置为将朋友集群在相同的缓存系统内,因此增加缓存局部性。增加共同缓存系统的本地朋友的数量可增加要求的共同朋友的用户信息将已经通过用户信息的前一查询被缓存的可能性。即使共同朋友的用户信息被存储在不同的数据库服务器602中,以此方式增加缓存命中率也减少展开查询。因此,增加缓存局部性和缓存命中率可在性能中产生明显益处,减少网络通信量等,尤其当处理极大量的节点和查询时。

图7示出了根据实施方式的映射模块。示出的映射模块104包括分割模块702、路由模块704、负载监测模块706和时间平衡模块708。分割模块702可确定图谱要分割成的分割数量。分割数量可涉及图谱数据要分布跨越的物理机器(例如,数据库服务器602或者缓存系统604)的数量。唯一ID空间然后可基于每个分割的节点的数量被分开(或分段)。

例如,如果由节点表示的十亿用户的社交图谱在100个缓存系统上被分割,则用户的数量(例如,十亿)可除以分割的数量(例如,100)以提供分割大小-即,每个分割的用户的数量(例如,每个分割有一千万个用户)。因此,唯一ID空间可以除以分割大小,导致每个分割有一千万个唯一ID。因为唯一ID空间在数字上是连续的,所以每个分割中的一千万个唯一ID在数字上是彼此紧邻的。因此,在唯一ID空间内的城市和群体的集群反映在大量机器上的社交图谱的分割中。此外,要集群在唯一ID空间中的朋友的倾向反映在图谱至机器的分割中。在这个实例中,分割大小是相等的(例如,每个分割有一千万个用户),导致每一个机器上的唯一ID的数量相等。在另一实施方式中,分割大小可不相等,导致机器上的唯一ID的数量不同。

路由模块704可基于唯一ID空间和分割的分开将用户映射至机器-例如,如分割模块702所描述的。根据该映射路由模块704然后可将用户路由至机器。例如,在一些情况下,应用的分割的数量(例如,机器)将是已知的,并且如所描述的,可以分开唯一ID空间以将用户映射至机器的缓存层。在不同实施方式中,唯一ID空间可以均匀地或不均匀地被分开。例如,唯一ID空间的分开可导致在两个机器之间分离城市或群体。此外,一些群体等级可以是大的,并且因此不是所有的群体可符合单个机器。在实施方式中,可以相应地调节分割大小(例如,每个分割的用户的数量)以将城市或群体的局部性保持完整。

唯一ID空间可用于将用户映射至缓存系统。唯一ID可能够集群要路由至相同缓存系统的朋友,这可明显提高局部性,并且因此在提供至网络计算机系统的查询处理(或执行)中提供益处。查询可具有任何类型,诸如,提交至社交网络系统的“朋友的朋友”查询。查询可指向需要执行查询的合适的缓存系统。例如,用户A的朋友查询将被发送至基于用户A的唯一ID用户A被映射的机器。

在某些情况下,先前存在的ID(例如,用户ID)可能已经被分配至节点并且用于将用户映射至数据库服务器,但是以不说明矢线权重或紧密连接节点的期望集群的方式。在此情况下,唯一ID可构成可替代的标识符。用户ID可映射至唯一ID,并且唯一ID可用于将用户映射至缓存系统。以此方式,尽管唯一ID空间的益处在缓存层(例如,缓存系统)中实现,但是可以保持永久性存储层(例如,数据库服务器)中的用户数据。在一个实施方式中,用户ID至唯一ID的映射可存储在要转换成用于缓存层操作的唯一ID的用户ID无论何时访问的机器。

本文中描述的唯一ID的另一益处是分割的数量不需要是已知的,以便生成唯一ID。例如,如果多个服务要求不同数量的分割,则相同的唯一ID空间可基于相应数量的分割被相应地分开。例如,在社交图谱的实例中,网络计算机系统可包括数据库服务器的永久性存储层(或层级(tier))以及缓存系统的缓存层(或层级)。一个缓存层业务可以是在100个缓存系统(例如,100个分割)上实现的检索业务。另一缓存层业务可以是在200个缓存系统(例如,200个分割)上实现的新鲜事业务。又一缓存层业务可以是在300个缓存系统(例如,300个分割)上实现的图谱业务。以此方式,永久性存储层可以保持相当静止,但是缓存层可被动态配置。

基于唯一ID路由用户可显著提高展开问题。如果机器上的用户倾向于访问类型数据,则在数据的初始查询后将缓存该数据并可用于需要相同数据的随后查询。例如,“朋友的朋友”查询。朋友或群体可集群在相同的缓存系统上。因此,当用户A提交关于她的朋友的查询时,如果之前不在缓存器中,用于所有用户A的朋友的数据被读取并存储在缓存器中。如果用户B与用户A是朋友,则可能的是用户A和用户B具有一些数量的共同朋友,尤其是如果用户A和用户B在相同城市中生活。因此,当用户B提交关于他的朋友的查询时,用户A和用户B的共同朋友的任何数据将从用户A提交她的查询时已经被缓存。共同朋友的数量越大,结果的效率越大。此外,当在大量用户(例如,五亿个用户、十亿个用户等)上应用时,可以实现性能和网络通信量的极大增益。

此外,通过将用户经过不同的查询路由至相同机器,用户可利用她已经缓存的数据。例如,当用户更新数据时,诸如,社交网络系统上的新鲜事或帖子,已经发送至其中前一数据被缓存的相同机器的查询可在获取数据的速度上提供明显改善。

尽管本文中描述的具体实例可涉及用户及其友谊,但是根本概念和原理适用于其他节点和连接。如本文中讨论的,节点可具有任何类型。此外,连接可包括各种类型的关系。例如,连接可以的“跟随”矢线,其中,用户跟随另一实体或用户。基于唯一ID将节点路由至机器的相同方法可延伸至其他实体并且不仅是个人,例如,延伸为确定足球在埃及受欢迎,板球在孟加拉国受欢迎,并且具体业务在美国受欢迎。例如,一个查询可以是“显示喜欢业务A并且居住在旧金山的所有人”。如果与社交网络系统相关联的业务A的网页像其粉丝一样多在相同机器上,则可以更有效地执行该查询。具体地,通过在机器的缓存层中维护业务A的网页及其粉丝可以提高询问执行。

尽管基于唯一ID的分开将用户映射至机器改善机器上的局部性,但是在一些情况下,每个机器上的负载可显著改变。在实施方式中,路由模块704可基于负载因素将用户路由至机器。负载监测模块706可监测机器在线时的机器负载,并且结合路由模块704工作以基于负载因素将用户路由至机器。在实施方式中,可以监测负载以确定它们是否超过阈值或降低于阈值。在一些情况下,监测任何给定时间的机器上的负载量(例如,最大容量的百分比)。

在实施方式中,初始映射是基于唯一ID空间的分开,是不是均匀分布,并且此后路由模块704可基于负载平衡因素动态地路由用户。例如,可以接收通过用户的查询以及用户的先前存在的用户ID。先前存在的用户ID至唯一ID空间的映射可用于将先前存在的用户ID转换为唯一ID。分片数量然后可基于分割大小来确定,分片数量和分割大小可通过以下示例性等式确定:

分割大小=(用户的数量)/(分割的数量)

分片数量=(唯一ID)/(分割大小)

例如,对于22.5亿个用户和1.5万个分割,分割大小将为每个分割有15万个用户。任何单个唯一ID除以15万然后可用于确定相应的分片数量。路由模块704在考虑了通过负载监测模块706识别的负载平衡因素之后然后可将分片数量映射至合适的机器。在分片数量被映射至机器之后,可在机器上执行查询。

在实施方式中,通过追踪机器已经接收到的查询数量可部分确定负载。例如,如应用在执行查询,可输出显示每个分片正在处理的查询数量的计数器(例如,应用分片数量100具有100个查询,应用分片数量101具有500个查询等)。负载监测模块706然后可接收输出的计算器数据并且例如结合路由模块704工作以确定是否或者如何在机器的分片之间移动用户。例如,负载监测模块706可监测机器正在处理的查询数量是否超过阈值。如果超过了该阈值,则负载监测模块706可防止其他查询被路由至该机器直到正在处理的查询数量降至低于阈值。这些其他查询可路由至另一机器直到机器正在处理的查询数量降至低于阈值。同样,负载监测模块706可监测机器正在处理的查询数量是否降至低于阈值。如果查询数量降至低于阈值,则负载监测模块706可确定这个机器适用于接收其他查询,诸如,超过查询的阈值的防止被路由至机器的查询。

在一个实施方式中,负载监测模块706确定机器是否超负载,并且相应地路由用户。例如,用户可被初始映射至当前超负载的机器。通过负载监测模块706检测超负载状态并且传递至路由模块704,路由模块704将用户路由至不同且较少负载的机器。因此防止使超负载机器进一步负载,并且负载不足的机器的负载被增加。在一个实施方式中,负载监测模块706可确定用户需要多于一个机器用于查询,并且路由模块704相应地可将该查询路由至其他机器。用户基于负载平衡因素(诸如,查询处理需求)从一个分片至另一分片的移动,在某种程度上可妥协局部性。负载监测模块706可连续权衡局部性与查询速度之间的折衷。

在实施方式中,地理位置可呈现有限的使用模式。例如,至于一些应用,与某些地理位置相关联的特定用户不可被路由至一个或多个机器,例如,因为法律原因、隐私原因等,创建为使用的计算资源。例如,国家不可使用或允许可用于其居住或公民的具体应用。例如,欧洲联盟和加拿大可能不允许其公民的特定应用,并且因此那些边界内的用户没有权利访问该应用。在为该应用分配的缓存系统中的未使用的分片将不被那些用户使用。因此,与其他地理位置相关联的其他用户可被路由至机器以利用可用的计算资源,诸如,缓存系统的未使用分片。

在一个实施方式中,与禁止应用相关联的地理位置对应的唯一ID空间的部分从唯一ID空间被移除。修改的唯一ID空间(没有与中断的地理位置相对应的唯一ID)然后可基于分割的数量被分开(例如,均匀地或不均匀地)以将用户映射至分片数量和相应的机器。

在某些实施方式中,根据与地理位置强烈相关的使用模式可将用户映射至机器。不同的地理位置可呈现不同的使用模式。尽管唯一ID空间可有助于优化局部性,地理位置可具有改变的使用模式,这可导致在不同时间期间机器上的不同负载。这些负载波动可通过在一些时间在机器上提供大负载并且在其他时间在相同机器上提供小负载明显改变。

时间平衡模块708可结合路由模块704工作以考虑使用特征,诸如使用模式中的时间波动的方式将用户路由至机器。例如,用于地理位置的负载可按照当日时间(例如,工作时间对非工作时间)发生变化。如另一实例,负载还可按照日子(例如,假日对正常日子)或者按照其他较大的时间间隔(例如,暑假对篮球锦标赛)发生变化。时间平衡模块708可使用来自负载监测模块706的数据以确定使用模式,并且基于该使用模式,与路由模块704工作以将用户路由至各个机器以优化负载平衡。

例如,时间平衡模块708可识别具有互补的使用模式的地理位置。互补的使用图案可指的是通过不在相位中的地理位置呈现的使用。例如,互补的使用模式的一种类型可包括具有通信量使用中的峰值的第一地理位置,当在相同或重叠时间时,第二地理位置具有通信量使用中的谷值。同样,互补的使用模式的另一类型可包括具有通信量使用中的谷值的第一地理位置,当在相同或重叠时间时,第二地理位置具有通信量使用中的峰值。不是在具有明显摆动的高通信量或低通信量的两个分离机器上路由两个地理位置,时间平衡模块708可将它们在相同机器(或机器群)上进行配对。以此方式,实际上,机器在其相应的高通信量时间期间首先仅服务一个地理位置,因此使计算资源的使用最佳并且平衡机器上的负载。在实施方式中,高通信量可基于通信量是否超过预定阈值来确定。类似地,在实施方式中,低通信量可基于通信量是否降低至低于阈值来确定。

在社交网络系统内,地理位置(例如,城市、国家、群体等)或相关分片可呈现高峰期和非高峰期期间社交网络系统的使用量的大摆动。例如,这个模式通常由共同地理区域或时间区域中的不同用户来呈现。例如,当人们倾向于睡觉时,许多城市、区域甚至国家与白天相比在夜里可呈现更少的通信量。因此,通信量可在时间的12个小时或其他时间间隔中进行分类。如另一实例,第一地理位置在白天的八个小时间隔期间可呈现特殊使用(例如,繁重的通信量或最小的通信量),第二地理位置在白天的六个小时间隔期间可呈现特殊使用,第三地理位置几乎没有特殊使用模式可呈现。

使用模式可基于与某些地理区域相关联的习惯或文化。例如,在一个地理位置中的人们可主要在家使用社交网络系统。另一地理位置可主要在工作时使用社交网络系统。又一地理位置可主要在周末或其他特殊日子使用社交网络系统。

此外,社交网络系统的用户可以不均匀地分布在不同的地理位置中。例如,美国和欧洲可具有在相同或重叠的时间周期呈现重要的使用模式的非常多的用户。这两个国家的时间的高峰期可重叠,在重叠的时间周期期间生成巨大的结合使用。因此,来自这些地理位置的用户的组合将对机器上的负载造成过多摆动。因此,在实施方式中,在每个地理位置呈现峰值使用的时间期间,与一个地理位置相关联的用户在避免负载的过度摆动的时间期间可通过时间平衡模块708被路由至不同的机器。在峰值使用间隔之后,用户可被返回至初始机器。可为任何间隔的任意数量的地理位置以此方式执行路由用户以避免负载的这种过度摆动,以优化负载平衡。时间平衡模块708可识别与繁重使用或轻度使用相关联的时间间隔,并且因此将特定地理位置一起组合或联合在相同机器上,以优化负载。时间平衡模块708可实现任意数量的交换,其可混合并搭配数量改变的地理位置和不同规模的时间间隔,以优化不同使用模式的负载平衡。

时间平衡模块708可通过互补的时间区域联合地理位置。例如,两个地理位置在12个小时内可以彼此互补,三个地理位置可在8个小时内彼此互补等。地理位置的这种联合可以全世界的地理位置的不同组合来执行。在一些情况下,为了负载平衡,时间平衡模块708可将不同的地理位置视作单元。

时间平衡模块708也可考虑负载平衡与局部性之间的折衷。例如,尽管两个地理位置可关于使用模式彼此互补,但是如果确定对局部性的影响太大,它们不一定被路由至相同的机器。

各种系统和技术可实现为说明负载中的变化。在实施方式中,机器的通用池可实现为容纳诸如由于维护所导致的过多负载需求或下降的负载处理能力。例如,如果机器由于维护当前超负载或不起作用,则被映射至机器的查询可暂时被路由至机器的通用池直到机器不再由于维护超负载或者不起作用。

在实施方式中,与分片相关联的机器池的大小可响应于负载需求或预期的负载需求而动态改变。例如,分配至机器池的机器的数量可动态增加或减少以分别说明较高的负载需求或较低的负载需求。在一些情况下,机器池的大小可基于期望的白天时间负载变化而改变。在一些情况下,机器池的大小可响应于未预期的负载陡增而改变,诸如,由于群体紧急情况所导致的负载陡增。

在一些情况下,某些用户、群体或分片可能意外地促使高负载。例如,用户可以是接收突然的全国性注意的名人或知名人士,同时吸引对用户账号的许多查询。与用户的账号相关联的机器或分片上的负载需求的突然和过度增加可能是破坏性的。与用户或分片相关联的机器池的大小可动态增加至容纳所增加的负载需求。在实施方式中,查询可被路由至机器的通用池以帮助缓和负载需求。在一些情况下,查询被路由至机器的通用池直到与用户或分片相关联的机器池已经被动态调整大小。

在一些情况下,负载需求可通过不与用户的群体有效联接的或者不具有相关唯一ID的用户生成,诸如,匿名用户、没有任何朋友的用户、没有注册的用户、搜索引擎刮人等。因为这些用户没有与群体或唯一ID有效地相关联,所以它们生成的负载需求不一定受益于或有助于本文中描述的一些负载和性能益处。在实施方式中,来自这种用户的查询可被路由至机器的通用池、这些类型的非社交用户的专用机器池、或者负载平衡跨越一个机器池或多个机器池中的整组机器。

在用户之间映射至群体、唯一ID或分片有时可能显著改变,诸如,由于集群的变更或由于分割节点图谱的方式。为了减少将具有明显变化的新图表部署至前一图表的影响,可逐渐或者在减少通信量或负载时部署更新,诸如,在总体的非高峰时间期间。在实施方式中,可结合唯一ID、群体的标识符或分片的标识符使用版本标识符,以便唯一地识别哪个图表被用于当前查询。

图8示出了根据实施方式的基于负载平衡因素将用户映射至机器的示例性过程。在框802中,机器的负载和使用时间被监测。该监测可以是动态的-例如,确定查询被接收。例如,如果查询被接收并且最初被映射至机器(或者多个紧密相关的机器,诸如机器池),则可首先监测机器上的当前负载以确定是否超负载。在另一实例中,地理位置的使用模式被监测。在实施方式中,可通过图7的负载监测模块706执行框802。

在框804中,识别通过再分配可改善它们的负载的用户或地理位置。这可包括识别高负载的机器或者识别低负载的机器。例如,这些负载可基于任何给定时间(例如,机器同时具有太多查询)的使用通信量中的动态变化而改变。负载还可基于任何类型的使用模式被识别。使用模式可基于一个或多个使用时期被识别,诸如,12个小时、8个小时、4个小时等。

在框806中,确定有益于负载平衡的用户或地理位置的合适再分配。例如,关于执行查询,如果初始映射至超负载的机器,则该查询可映射至负载不足的另一机器。如另一实例,两个或多个地理位置组合可基于它们的互补使用模式被联合在一起,以便优化负载平衡。地理位置可以混合和搭配不同数量的地理位置和不同时间间隔的任意数量的交换被联合在一起,以优化用于改变使用模式的负载平衡。在实施方式中,通过图7的负载监测模块706和时间平衡模块708可执行框804和806。

在框808中,用户基于框806中的再分配被映射至机器。关于联合的地理位置,联合的地理位置的用户根据框806中确定的优化构造被映射和路由。例如,具有相对使用模式的两个互补的地理位置可被映射并路由至相同机器。

图9示出了根据实施方式的将查询路由至机器(或者多个紧密相关的机器,诸如,机器池)的示例性过程。应当理解,图6至图8的上述讨论还可应用于图9的过程。为了简洁和清晰,图9的类似特征和功能不在此重复,但是可以是同样可适用的。

在过程900的框902中,接收查询(或请求)。例如,该系统可接收通过社交网络系统的用户开始的查询。该查询可包括用户的用户ID以及查询。在框904中,从用户ID确定唯一ID。例如,从用户ID至唯一ID的映射可用于将用户ID转换为唯一ID。在框906中,分片数量可基于唯一ID来确定。例如,如本文中所描述的,分片数量可基于分割大小来确定。在实施方式中,通过图7的分片确定模块702可执行框902、904和906。

在框908中,分片数量可被映射至物理机器(或者多个紧密相关的机器)。在一个实施方式中,基于唯一ID空间的均等分开至物理机器,分片数量被映射至物理机器。在实施方式中,基于唯一ID空间的不均等分开,分片数量被映射至物理机器。在实施方式中,如本文中更详细地讨论的,负载平衡因素还可考虑分片数量至物理机器的映射。

在框910中,机器被选择。如果分片数量被映射至多个机器,诸如机器池,则机器中的一个被选择。在框912中,确定所选择的机器是否动态地拒绝该查询。在框914中,如果该查询不被所选择的机器拒绝,则该查询被路由至所选择的机器并且通过所选择的机器执行。然而,如通过从框912返回至框910的箭头所表示的,如果该查询被所选择的机器拒绝,则可以选择另一机器。例如,如果从多个机器中选择的第一机器被拒绝,则可以从多个机器中选择另一机器。这个选择过程可持续,直到来自多个机器中的一个机器接受该查询。在实施方式中,如果从多个机器中可以选择的机器没有成功接收该查询(例如,由于超载或维修),则该查询可被路由至机器的通用池。如果在框908中分片数量被映射至单个机器,并且该机器拒绝查询,则可以选择替换的机器来接收该查询,诸如,来自机器的通用池的机器。在另一实施方式中,如果查询被所选择的机器拒绝,则在预定等候期间之后可将该查询再次发送至相同的机器。在实施方式中,可通过图7的路由模块704、负载监测模块706和时间平衡模块708执行框908、910、912和914。

社交网络系统-示例性实现方式

图10是根据本发明的实施方式的用于取代社交网络内的视频传输线路的示例性系统1000的网络图。系统1000包括一个或多个用户装置1010、一个或多个外部系统1020、社交网络系统1030和网络1050。在实施方式中,结合上面描述的实施方式讨论的社交网络系统可以作为社交网络系统1030来实现。为了说明的目的,由图10示出的系统1000的实施方式包括单个外部系统1020和单个用户装置1010。然而,在其他实施方式中,系统1000可包括更多的用户装置1010和/或更多的外部系统1020。在某些实施方式中,社交网络系统1030由社交网络供应商操作,然而外部系统1020与社交网络系统1030分离,这是因为这些系统可以由不同的实体操作。然而,在各种实施方式中,社交网络系统1030和外部系统1020共同操作,以将社交网络服务提供给社交网络系统1030的用户(或成员)。在这个意义上,社交网络系统1030提供平台或支柱,其他系统(诸如,外部系统1020)可以使用该平台或支柱来通过互联网将社交网络服务和功能提供给用户。

用户装置1010包括一个或多个计算装置,其可以从用户中接收输入并且经由网络1050传输和接收数据。在一个实施方式中,用户装置1010是传统的计算机系统,例如,执行Microsoft Windows兼容操作系统(OS)、Apple OS X和/或Linux分布。在另一实施方式中,用户装置1010可以是具有计算机功能的装置,诸如,智能手机、平板电脑、个人数字助理(PDA)、移动电话等。用户装置1010被配置为经由网络1050进行通信。用户装置1010可以执行应用程序,例如,允许用户装置1010的用户与社交网络系统1030交互的浏览器应用程序。在另一实施方式中,用户装置1010通过由用户装置1010的本地操作系统(诸如,iOS和ANDROID)提供的应用程序编程接口(API)与社交网络系统1030交互。用户装置1010被配置为使用有线和/或无线通信系统经由可包括局域网和/或广域网的任何组合的网络1050与外部系统1020和社交网络系统1030通信。

在一个实施方式中,网络1050使用标准的通信技术和协议。因此,网络1050可包括使用诸如以太网、802.11、微波存取全球互通(WiMAX)、3G、4G、CDMA、GSM、LTE、数字用户线路(DSL)等技术的链路。类似地,网络1050中使用的网络协议可包括多协议标记交换(MPLS)、传输控制协议/因特网协议(TCP/IP)、用户数据报协议(UDP)、超文本传输协议(HTTP)、简单邮件传输协议(SMTP)、文件传输协议(FTP)等。通过网络1050交换的数据可以使用包括超文本标记语言(HTML)和可扩展标记语言(XML)的技术和/或格式来表示。此外,可以使用诸如安全套接层(SSL)、传递层安全(TLS)以及互联网协议安全(IPsec)等传统的加密技术来将所有或一些链接加密。

在一个实施方式中,用户装置1010可通过使用浏览器应用程序1012处理从外部系统1020以及从社交网络系统1030接收的标记语言文档1014来显示外部系统1020和/或社交网络系统1030的内容。标记语言文档1014识别内容和一个或多个描述该内容的格式或展示的指令。通过执行包含在标记语言文档1014中的指令,浏览器应用程序1012使用由标记语言文档1014描述的格式或展示来显示所识别的内容。例如,标记语言文档1014包括指令,该指令用于生成和显示具有多个帧的网页,这些帧包括从外部系统1020和社交网络系统1030检索的文本和/或图像数据。在各种实施方式中,标记语言文档1014包括数据文件,该数据文件包括可延伸标记语言(XML)数据、可扩展超文本标记语言(XHTML)数据或其他标记语言数据。此外,标记语言文档1014可包括JavaScript对象表示法(JSON)数据、具有填充的JSON(JSONP)以及JavaScript数据以促进外部系统1020与用户装置1010之间的数据交换。用户装置1010上的浏览器应用程序1012可以使用JavaScript编译器来将标记语言文档1014解码。

标记语言文档1014还可包括或者连接至应用程序或应用程序框架,诸如,FLASHTM或UnityTM应用程序、SilverLightTM应用程序框架等。

在一个实施方式中,用户装置1010还包括一个或多个cookie 1016,该cookie包括表示用户装置1010的用户是否登录到社交网络系统1030中的数据,这可允许修改从社交网络系统1030传送至用户装置1010的数据。

外部系统1020包括一个或多个网络服务器,其包括使用网络1050传送给用户装置1010的一个或多个网页1022a、1022b。外部系统1020与社交网络系统1030分离。例如,外部系统1020与第一域相关联,而社交网络系统1030与单独的社交网络域相关联。包含在外部系统1020中的网页1022a、1022b包括标记语言文档1014,其识别内容并且包括指定所识别的内容的格式或展示的指令。

社交网络系统1030包括用于社交网络的一个或多个计算装置,包括多个用户,并且为社交网络的用户提供与社交网络的其他用户通信并且交互的能力。在一些情况下,社交网络可以由图谱表示,即,包括矢线和节点的数据结构。其他数据结构还可用于表示社交网络,包括但不限于数据库、对象、类别、母体元素、文件或任何其他数据结构。社交网络系统1030可以由操作人员执行、管理或控制。社交网络系统1030的操作人员可以是人类、自动化应用程序或用于管理内容、调节政策以及在社交网络系统1030内收集使用度量的一系列应用程序。可以使用任何类型的操作人员。

用户可加入社交网络系统1030,然后将连接添加到社交网络系统1030中其希望与其连接的任意数量的其他用户。如本文中使用的,术语“朋友”指的是社交网络系统1030中用户经由社交网络系统1030与其形成连接、关联或关系的任何其他用户。例如,在实施方式中,如果社交网络系统1030中的用户表示为社交图谱中的节点,则术语“朋友”可以指的是两个用户节点之间形成和直接连接的矢线。

用户可以明确地添加连接,或者可以由社交网络系统1030基于用户(例如,是相同的教育机构的校友的用户)的共同特征自动创建连接。例如,第一用户特别选择具体的其他用户作为朋友。社交网络系统1030中的连接通常为双向的,但不一定是双向,因此,术语“用户”和“朋友”取决于参考体系。社交网络系统1030中的用户之间的连接通常是双向(“双边”)或者“相互的”,但是,连接也可以是单向或者“单边的”。例如,如果Bob和Joe都是社交网络系统1030的用户并且彼此连接,则Bob和Joe彼此连接。另一方面,如果Bob希望与Joe连接以查看Joe传送至社交网络系统1030的数据,但是Joe不希望形成相互连接,则可以建立单边连接。用户之间的连接可以是直接连接;然而,社交网络系统1030的一些实施方式允许经由一个或多个等级的连接或一个或多个程度的分开来间接连接。

除了建立和保存用户之间的连接并且允许用户之间进行交互之外,社交网络系统1030向用户提供作用于社交网络系统1030支持的各类项目的能力。这些项目可包括社交网络系统1030的用户可属于的组合或网络(即,人们、实体和概念的社交网络)、其中用户可能感兴趣的事件或日历条目、用户可经由社交网络系统1030使用的基于计算机的应用程序、允许用户经由通过社交网络系统1030提供的服务或通过社交网络系统1030购买会出售项目的交易、以及用户可允许在社交网络系统1030上或社交网络系统1030下执行的与广告的交互。这些仅是用户在社交网络系统1030中可采取的各项的几个实例,并且可以采取许多其他动作。用户可以与能够在社交网络系统1030中或者在外部系统1020中表示的、与社交网络系统1030分离的或者经由网络1050与社交网络系统1030耦接的任何物体交互。

社交网络系统1030还能够链接各种实体。例如,社交网络系统1030能够允许用户通过API、网络服务或其他通信信道彼此以及与外部系统1020或其他实体交互。社交网络系统1030生成和保持“社交图谱”,该社交图谱包括由多个矢线互连的多个节点。社交图谱中的每个节点可表示可以作用在另一节点和/或可以由另一节点作用的实体。社交图可包括各种类型的节点。节点的类型的实例包括用户、非个人实体、内容项目、网页、组合、活动、消息、概念、以及可以由社交网络系统1030中的对象表示的任何其他事情。社交图谱中的两个节点之间的矢线可表示这两个节点之间的特定类型的连接或关联性,这可以因节点关系或者因由一个节点在另一个节点上进行的活动而产生。在一些情况下,节点之间的矢线可以加权。矢线的权重可表示与矢线相关联的属性,诸如,节点之间的连接或关联性的强度。不同类型的矢线可以具有不同的权重。例如,可以给在一个用户“喜欢”另一个用户时创建的矢线提供一个权重,同时可以给在用户与另一个用户交朋友时创建的矢线提供一个不同的权重。

例如,当第一用户将第二用户识别为朋友时,生成社交图谱中的矢线,连接表示第一用户的节点和表示第二用户的第二节点。由于各种节点彼此相关或交互,所以社交网络系统1030修改连接各种节点的矢线,以反映关系和交互。

社交网络系统1030还包括增强用户与社交网络系统1030之间交互的用户生成的内容。用户生成的内容可包括用户可以增加、上传、发送或“张贴”到社交网络系统1030中的任何事宜。例如,用户将帖子从用户装置1010传送至社交网络系统1030。帖子可包括数据(诸如,状态更新或其他文本数据)、位置信息、图像(诸如,照片)、视频、链路、音乐或其他相似的数据和/或介质。第三方还可以将内容添加至社交网络系统1030。内容“项目”表示为在社交网络系统1030中的对象。以此方式,鼓励社交网络系统1030的用户通过各种通信信道张贴文本和各种类型的介质的内容项目来彼此通信。这种通信增加了用户彼此的交互,并且增加了用户与社交网络系统1030交互的频率。

社交网络系统1030包括网络服务器1032、API请求服务器1034、用户配置文件存储1036、连接存储1038、动作记录器1040、活动记录1042、认证服务器1044和视频替换模块1046。在本发明的实施方式中,社交网络系统1030可包括各种应用的额外的、更少的或不同的部件。未示出其他部件,诸如,网络接口、安全机构、负载平衡器、故障切换服务器、管理和网络操作控制台等,以便不使系统的细节晦涩。

用户配置文件存储1036保持关于用户账号的信息,包括传记、人口统计或其他类型的描述信息,诸如,用户声明的或者社交网络系统1030推断的工作经历、学历、爱好或偏好、位置等。将该信息存储在用户配置文件存储1036内,以便唯一地识别每个用户。社交网络系统1030还在连接存储1038中存储描述不同用户之间的一个或多个连接的数据。连接信息可以表示具有相似的或共同的工作经历、组成员、爱好或学历的用户。此外,社交网络系统1030包括不同的用户之间的用户定义的连接,允许用户指定其与其他用户的关系。例如,用户定义的连接允许用户生成与和用户的现实关系平行的其他用户的关系,诸如,朋友、同事、合作伙伴等。用户可从预定的连接类型中选择,或者根据需要定义他们自己的连接类型。还在连接存储1038中储存与在社交网络系统1030中的其他节点的连接,诸如,非个人实体、储存桶、集群中心、图像、兴趣、页面、外部系统、概念等。

社交网络系统1030保存关于用户可以与之交互的对象的数据。为了维持该数据,用户配置文件存储1036和连接存储1038存储通过社交网络系统1030维持的相应类型的对象的实例。每个对象类型具有信息字段,其适用于存储与对象类型适合的信息。例如,用户配置文件存储1036包含数据结构,其字段适用于描述用户的账号以及与用户的账号相关的信息。在创建特定类型的新对象时,社交网络系统1030使相应类型的新数据结构初始化,将唯一对象标识符分配给该数据结构,并且根据需要,开始将数据添加至该对象。例如,这种情况可能发生在用户变成社交网络系统1030的用户时、社交网络系统1030在用户配置文件存储1036中生成用户配置文件的新实例时、将唯一标识符分配给用户账号时、以及开始使用由用户提供的信息来填充用户账号的字段时。

连接存储1038包括适用于描述用户至其他用户的连接、至外部系统1020的连接或者至其他实体的连接的数据结构。连接存储1038还可以使连接类型与用户的连接相关联,用户的连接可以与用户的隐私设置一起用于调节对关于用户的信息的访问。在本发明的实施方式中,用户配置文件存储1036和连接存储1038可实现为联合数据库。

存储在连接存储1038、用户配置文件存储1036和活动记录1042中的数据能够使社交网络系统1030生成社交图谱该社交图谱使用节点来识别各种对象和连接节点的矢线以识别不同对象之间的关系。例如,如果社交网络系统1030中的第一用户与第二用户创建连接,则来自用户配置文件存储1036中的第一用户和第二用户的用户账号可用作社交图谱中的节点。通过连接存储1038存储的第一用户与第二用户之间的连接是与第一用户和第二用户相关联的节点之间的矢线。继续这个实例,第二用户然后可以在社交网络系统1030内向第一用户发送消息。发送可以存储的消息的活动是在社交图谱中的这两个节点之间的另一个矢线,表示第一用户和第二用户。此外,可以在社交图谱内识别和包含消息本身,作为连接至表示第一用户和第二用户的节点的另一个节点。

在另一实例中,第一用户可在通过社交网络系统1030保持的图像中(或者,可替代地,通过社交网络系统1030之外的另一系统保持的图像中)加标签于第二用户。图像本身可表示为在社交网络系统1030中的节点。这个标记动作可以在第一用户与第二用户之间创建矢线,以及在每个用户与图像之间创建矢线,该矢线也是社交图谱中的节点。在又一实例中,如果用户确认参加一个事件,则用户和事件是从用户配置文件存储1036中获取的节点,其中,事件的参加是在可以从活动记录1042检索的节点之间的矢线。通过生成并保持社交图谱,社交网络系统1030包括描述多种不同类型的对象和交互以及这些对象之间的连接的数据,从而提供社交相关信息的丰富资源。

网络服务器1032经由网络1050将社交网络系统1030链接至一个或多个用户装置1010和/或一个或多个外部系统1020。网络服务器1032为网页以及其他网页相关的内容(诸如,Java、JavaScript、Flash、XML等)服务。网络服务器1032可包括邮件服务器或其他消息功能,用于在社交网络系统1030与一个或多个用户装置1010之间接收和路由消息。这些消息可以是即时消息、队列消息(例如,电子邮件)、文本和SMS消息或任何其他合适的消息格式。

API请求服务器1034允许一个或多个外部系统1020和用户装置1010通过调用一个或多个API功能来从社交网络系统1030调用访问信息。API请求服务器1034还可以允许外部系统1020通过调用API来将信息发送至社交网络系统1030。在一个实施方式中,外部系统1020经由网络1050将API请求发送至社交网络系统1030,并且API请求服务器1034接收API请求。通过调用与API请求相关联的API,API请求服务器1034处理该请求,以生成合适的响应,API请求服务器1034经由网络1050将该响应传送至外部系统1020。例如,响应于API请求,API请求服务器1034收集与用户相关联的数据(诸如,登录到外部系统1020中的用户连接),并且将所收集的数据传送至外部系统1020。在另一实施方式中,用户装置1010经由与外部系统1020相同的方式通过API与社交网络系统1030通信。

动作记录器1040能够接收来自网络服务器1032的关于登录和/或退出社交网络系统1030的用户动作的通信。活动记录器1040利用有关用户动作的信息填充活动记录1042,能够允许社交网络系统1030发现由其用户在社交网络系统1030内以及社交网络系统1030外采取的各种动作。通过保持在活动记录1042中或者保持在相似的数据库或其他数据储存库内的信息,具体用户关于社交网络系统1030上的另一个节点采取的任何动作可以与每个用户的账号相关联。例如,所识别并且存储的用户在社交网络系统1030内采取的动作的实例可包括:添加与另一用户的联系人,将消息发送给另一用户,从另一用户读取消息,查看与另一用户相关联的内容,参加另一用户张贴的事件,张贴图像,尝试张贴图像,或者与另一用户或另一对象交互的其他动作。当用户在社交网络系统1030内采取动作时,将动作记录在活动记录1042中。在一个实施方式中,社交网络系统1030保持活动记录1042作为条目的数据库。当在社交网络系统1030内采取动作时,将动作的条目添加至活动记录1042。活动记录1042可被称为动作记录。

此外,用户动作可与社交网络系统1030之外的实体内发生的概念和动作相关联,诸如与社交网络系统1030分离的外部系统1020。例如,活动记录器1040可以从网络服务器1032接收描述用户与外部系统1020交互的数据。在该实例中,外部系统1020根据社交图谱中的结构化动作和对象报告用户的交互。

其中用户与外部系统1020交互的动作的其他实例包括:用户表示对外部系统1020或另一实体感兴趣;用户将评论张贴至社交网络系统1030,讨论外部系统1020或者外部系统1020内的网页1022a;用户将统一资源定位符(URL)或与外部系统1020相关联的其他标识符张贴至社交网络系统1030;用户参加与外部系统1020相关联的事件;或者与外部系统1020相关的用户的任何其他动作。因此,活动记录1042可包括描述社交网络系统1030的用户与和社交网络系统1030分开的外部系统1020之间的交互的动作。

认证服务器1044执行社交网络系统1030的用户的一个或多个隐私设置。用户的隐私设置确定如何可以分享与用户相关联的具体信息。隐私设置包括与用户相关联的具体信息的规范以及可以分享信息的一个或多个实体的规范。可与其分享信息的实体的实例可包括其他用户、应用程序、外部系统1020、或者可潜在访问该信息的任何实体。用户可以分享的信息包括用户账号信息,诸如,配置文件照片、与用户相关联的电话号码、用户的联系人、用户采取的行动(诸如,添加联系人)、改变用户配置文件信息等。

可以不同的粒度级别提供隐私设置规范。例如,隐私设置可以识别要与其他用户分享的特定信息;隐私设置识别工作电话号码或者特定的一组相关信息,诸如,包括配置文件照片、家庭电话号码以及状态的个人信息。可替代地,隐私设置可应用于与用户相关联的所有信息。还可以各种粒度等级指定可以访问具体信息的这组实体的规范。例如,可以分享信息的各组实体可包括用户的所有朋友、朋友的所有朋友、所有应程序或者所有外部系统1020。一个实施方式允许这组实体的规范包括实体的枚举。例如,用户可以提供允许访问某些信息的一系列外部系统1020。另一实施方式允许规范包括一组实体以及不允许访问信息的异常。例如,用户可以允许所有外部系统1020访问用户的工作信息,但是指定不允许访问工作信息的一系列外部系统1020。某些实施方式调用不允许访问某些信息的异常列表,即,“方块列表”。阻止属于由用户指定的方块列表的外部系统1020访问在隐私设置中指定的信息。信息说明的粒度和与其分享信息的实体的说明的粒度的各种组合是可以被分享的。例如,所有个人信息可以与朋友分享,而所有工作信息可以与朋友的朋友分享。

认证服务器1044包含确定与用户相关联的某些信息是否可以由用户的朋友、外部系统1020和/或其他应用程序和实体访问的逻辑。外部系统1020可需要认证服务器1044的认证,以访问用户的更隐私和敏感的信息,诸如,用户的工作电话号码。基于用户的隐私设置,认证服务器1044确定是否允许另一用户、外部系统1020、应用程序或另一实体访问与用户相关联的信息,包括有关用户采取的行动的信息。

社交网络系统1030可包括集群模块1046。集群模块1046可生成唯一ID并且将它们分配至社交图谱的节点。此外,集群模块1046可利用唯一ID分割社交网络系统1030上的社交图谱。唯一ID空间可用于将用户映射至社交网络系统1030的机器(例如,数据库服务器或缓存系统)。集群模块1046可基于该映射将社交网络系统1030的用户路由至机器。集群模块1046可基于负载平衡因素将用户映射或路由至机器,诸如,通信量使用模式、或者机器是否超负载或负载不足。在实施方式中,集群模块1046可实现为图1的集群模块1046。

硬件实现方式

通过各种机器和计算机系统架构以及各种网络和计算环境可以实现上述过程和特征。图11示出了根据本发明的实施方式的可用于实现在本文中描述的一个或多个实施方式的计算机系统1100的实例。计算机系统1100包括指令组,用于促使计算机系统1100执行本文中讨论的过程和特征。计算机系统1100可连接(例如,联网)至其他机器。在网络部署中,计算机系统1100可以在客户端服务器网络环境中的服务器机器或客户端机器的容量中或者在对等(或分布式)网络环境中作为对等机器操作。在本发明的实施方式中,计算机系统1100可以是在文中描述的社交网络系统的部件。在本发明的实施方式中,计算机系统1100可以是在构成所有或一部分社交网络系统1030的多个服务器中的一个服务器。

计算机系统1100包括处理器1102、缓存1104以及一个或多个可执行的模块和驱动器,其存储在计算机可读介质上,针对本文中描述的过程和特征。此外,计算机系统1100包括高性能输入/输出(I/O)总线1106和标准I/O总线1108。主桥1110将处理器1102耦接至高性能I/O总线1106,而I/O总线桥1112将这两个总线1106和1108彼此耦接。系统存储器1114和一个或多个网络接口1116耦接至高性能I/O总线1106。计算机系统1100可进一步包括视频存储器以及与视频存储器耦接的显示装置(未示出)。大容量存储介质1118和I/O端口1120耦接至标准I/O总线1108。计算机系统1100可以可选地包括键盘和定位装置、显示装置、或耦接至标准I/O总线1108的其他输入/输出装置(未示出)。总之,这些元件旨在表示计算机硬件系统的广义分类,包括但不限于基于由加利福尼亚圣克拉拉因特尔公司制造的x86-兼容处理器和基于由加利福尼亚森尼韦尔超微半导体(AMD)公司制造的兼容处理器的计算机系统以及任何其他合适的处理器。

操作系统管理并且控制计算机系统1100的操作,包括将数据输入到软件应用程序(未示出)并且从软件应用程序输出数据。操作系统提供在系统上执行的软件应用程序与系统的硬件部件之间的接口。可以使用任何合适的操作系统,诸如,LINUX操作系统、从加利福尼亚库比蒂诺(Cupertino)苹果电脑公司可商购的Apple Macintosh操作系统、UNIX操作系统、操作系统、BSD操作系统等。其他实现方式也是可行的。

下面将更为详细地描述计算机系统1100的元件。具体地,网络接口1116在计算机系统1100与任何广泛的网络之间提供通信,诸如,以太网(例如,IEEE 802.3)网络、底板等。大容量存储介质1118给数据和编程指令提供永久存储,以执行由上面识别的相应计算系统实现的上述过程和特征,而在由处理器1102执行时,系统存储器1114(例如,DRAM)为数据和编程指令提供临时存储介质。I/O端口1120可以是在另外的外围装置之间提供通信的一个或多个串联和/或并联的通信端口,这些外围装置可以耦接至计算机系统1100。

计算机系统1100可包括各个系统架构并且可重新布置计算机系统1100的各个部件。例如,缓存1104可以与处理器1102在芯片上。可替代地,可以将缓存1104和处理器1102一起打包成“处理器模块”,其中处理器1102被称为“处理器核心”。此外,本发明的某些实施方式不需要也不包括所有以上部件。例如,耦接至标准I/O总线1108的外围装置可以耦接至高性能I/O总线1106。此外,在一些实施方式中,仅可存在单个总线,其中计算机系统1100的部件耦接至所述单个总线。此外,计算机系统1100可包括其他部件,诸如,其他处理器、存储装置或存储器。

通常,本文中描述的过程和特征可以实现为操作系统或具体应用程序的部分、部件、程序、对象、模块、或被称为“程序”的一系列指令。例如,一个或多个程序可用于执行本文中描述的特定过程。程序通常在计算机系统1100中包括各种存储器和存储装置中的一个或多个指令,当由一个或多个处理器读取和执行时,这些指令促使计算机系统1100执行操作,以执行本文中描述的过程和特征。本文中描述的过程和特征可以在软件、固件、硬件(例如,专用集成电路)或其任何组合中实现。

在一种实现方式中,本文中所描述的过程和特征被计算机系统1100实现为独自或者集中在分布式计算环境中运行的一系列可执行模块。前述模块可以由硬件、存储在计算机可读介质(或机器可读介质)上的可执行模块或这两者的组合来实现。例如,模块可包括由在硬件系统中的处理器(诸如,处理器1102)执行的多个或一系列指令。首先,这系列指令可以存储在存储装置(诸如,大容量存储介质1118)上。然而,这系列指令可以存储在任何合适的计算机可读存储介质上。此外,这系列指令不需要存储在本地,并且可以经由网络接口1116从远程存储装置(诸如,网络上的服务器)接收。将指令从存储装置(诸如,大容量存储介质1118)复制到系统存储器1114内,然后由处理器1102访问和执行。在各种实现方式中,一个或多个模块可以由在一个或多个位置中的一个处理器或多个处理器执行,诸如,平行处理环境中的多个服务器。

计算机可读介质的实例包括但不限于,可记录类型的介质,诸如易失和非易失性存储器装置;固态存储器;软盘以及其他可移动磁盘;硬盘驱动器;磁性介质;光盘(例如,光盘只读存储器(CD ROMS)、数字多用光盘(DVD));其他类似的非易失性(或暂时性)、有形的(或者非有形的)存储介质;或者适用于存储、编码或携带由计算机系统1100执行以进行本文中描述的任何一个或多个过程和特征的一系列指令的任何类型的介质。

为了说明性的目的,阐述了多种具体细节以便提供对本说明书的彻底理解。然而,对于本领域的技术人员清晰可见的是在没有这些具体细节的情况下可以实践本公开内容的实施方式。在一些情况下,通过框图的形式示出模块、结构、过程、特征以及装置,以便避免说明书晦涩难懂。在其他情况下,功能框图和流程图示出为表示数据和逻辑流程。可以通过除了本文中明确描述和描绘的方式以外的方式不同地组合、分开、去除、重新排列以及替换框图和流程图的元件(例如,模块、方框、结构、装置、特征等)。

在本说明书中引用“一个实施方式”、“实施方式”、“其他实施方式”、“一系列实施方式”、“一些实施方式”、“各种实施方式”等,表示在本公开内容的至少一个实施方式中包括结合实施方式描述的具体特点、设计、结构或特征。例如,在说明书的不同地方出现短语“在一个实施方式中”、“在实施方式中”,不必均表示相同的实施方式,也不必是与其他实施方式互相排斥的单独的或可替换的实施方式。此外,无论是否明确引用“实施方式”等,都描述了各种特征,这些特征可以不同地组合并且包含在一些实施方式中,但是还可以在其他实施方式中不同地省略。类似地,描述了各种特征,这些特征对于一些实施方式可以是优先权或要求,但是对于其他实施方式不是。

原理上,为了可读性和指示性的目的,选择了本文所使用的语言,并且其不被选择为描绘或者限制本发明主题。因此,其目的在于,本发明的范围不受到这个详细描述的限制,而是受到根据其在应用程序上发行的任何权利要求的限制。因此,本发明的实施方式的公开内容旨在说明而非限制在所附权利要求中陈述的本发明的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1