当前位置: 首页 > 专利查询>脸谱公司专利>正文

分布式缓存系统、方法及存储介质技术方案

技术编号:14521124 阅读:89 留言:0更新日期:2017-02-02 00:03
本发明专利技术提供一种分布式缓存系统、方法及存储介质。所述系统包括:数据库;以及包括一个或多个缓存集群的缓存层。其中所述一个或多个缓存集群中的每一个操作为:在所述缓存集群的一个和多个缓存节点的内存中,维持社交图的至少一部分;处理从社交网络环境用户的一个或多个客户端系统接收的一个或多个查询;并且将响应于所接收的查询的搜索结果发送至所述一个或多个客户系统进行显示。

【技术实现步骤摘要】
本专利技术专利申请是中国专利申请CN201180068148.3(专利技术名称为“用于图形数据的分布式缓存”)的分案申请。
本公开一般地涉及存储和供应图形数据,并且更特别地,涉及分布式缓存系统、方法及存储介质
技术介绍
通过包括专有网络以及诸如因特网的公共网络的各种局域和广域计算机网络,计算机用户能够访问并共享大量信息。通常,用户的计算装置上安装的Web浏览器便于访问位于由关联的统一资源定位符(URL)识别的各种网络服务器的信息并与之互动。使得能够共享用户生成的内容的传统方法包括各种信息共享技术或诸如社交网络网站的平台。这样的网站可以包括、链接到、或提供使得用户能够查看由其他用户创建或定制的网页的应用程序的平台,其中,其他用户对这样的页面的可视性以及互动受规则的某些特性集支配。这样的社交网络信息,并且一般地大部分信息,通常存储在关系数据库中。一般地,关系数据库是关系(通常称为表)的集合。关系数据库使用一组数学术语,其可以使用结构化查询语言(SQL)数据库术语。例如,关系可以定义为具有相同属性的元组(tuple)集合。元组通常表示对象以及关于该对象的信息。关系通常被描述为组织成行和列的表。一般地,由属性引用的所有数据在同一域中并且遵循相同的约束。关系模型规定关系的元组没有具体顺序,并且元组也不反过来对属性施加顺序。应用程序通过规定查询来访问数据,该查询使用操作来识别元组、识别属性、以及组合关系。关系可以修改,并且新的元组可以提供明确的值或者从查询衍生。类似地,查询可以识别用于更新或删除的元组。关系的每个元组都需要通过其属性值的一些组合(一个或多个)可唯一地识别。该组合称为主键。在关系数据库中,经由关系来存储和访问所有数据。存储数据的关系通常用表实现或者称为表。诸如在关系数据库管理系统中实现的关系数据库已经成为用于例如财务记录、制造及物流信息、个人数据、以及其他应用程序的数据库中的信息存储的主要选择。随着计算机功率的增大,关系数据库对传统应用程序的易用性已经盖过了关系数据库效率低下,而效率低下使得关系数据库在较早时期不切实际。三个主导性的开源实施方式是MySQL、PostgreSQL、和SQLite。MySQL是关系数据库管理系统(RDBMS),其作为对多个数据库提供多用户接入的服务器运行。流行的LAMP软件堆栈缩写中的“M”是指MySQL。其用于网络应用程序的普及程度与PHP(LAMP中的“P”)的普及程度密切相关。几个高流量网站将MySQL用于数据存储和用户数据记录。由于与关系数据库的通信通常是速度瓶颈,因此许多网络利用缓存系统来供应特定信息查询。例如,Memcached(高性能缓存)是通用分布式内存缓存系统。其通常用于通过在RAM中缓存数据和对象来加速动态数据库驱动网站,以减少必须读取外部数据源(诸如数据库或API)的次数。Memcached的API提供了跨多个机器分布的巨型哈希表。当该表满时,后续的插入使得较早的数据以最近最少使用(LRU)的顺序被清除。在回落在较慢的备用存储区(诸如数据库)之前,使用Memcached的应用程序通常将请求和补充分层到内核中。Memcached系统使用客服-服务器架构。服务器维持键-值关联阵列;客户端填充该阵列并查询该阵列。客户端使用客户端侧库与服务器联系。通常,每个客户端知道所有服务器,而服务器不彼此通信。如果服务器想要设置或读取与特定键对应的值,则客户端库首先计算该键的哈希,以确定将被使用的服务器。客户端然后与该服务器联系。服务器将计算该键的第二哈希,以确定在哪里存储或读取对应值。通常,服务器在RAM中保持该值;如果服务器耗尽了RAM,则其将最旧的值丢弃。因此,客户端必须将Memcached当作短暂缓存;它们不能假设在Memcached中存储的数据在它们需要时仍然在那里。
技术实现思路
根据本专利技术的一个方面,提供一种系统,包括:数据库;以及包括一个或多个缓存集群的缓存层,其中所述一个或多个缓存集群中的每一个操作为:在所述缓存集群的一个和多个缓存节点的内存中,维持社交图的至少一部分,所述社交图包括多个节点和连接所述节点的多个边,每个节点通过节点标识符唯一地识别,并且每个边指示节点之间的关联;处理从社交网络环境用户的一个或多个客户端系统接收的一个或多个查询,每个查询的所述处理包括:如果所述查询是针对所述缓存集群中存储的所述社交图的所述部分中的节点之间的关联,则通过搜索所述缓存集群的所述内存中存储的所述社交图的所述部分来响应所述查询;以及如果所述查询不是针对所述缓存集群中存储的所述社交图的所述部分中的节点之间的关联,则将所述查询转发至所述数据库以进行处理;并且将响应于所接收的查询的搜索结果发送至所述一个或多个客户系统进行显示。根据本专利技术的又一个方面,提供一种方法,包括通过缓存层中的一个或多个缓存集群中的每一个执行:在所述缓存集群的一个和多个缓存节点的内存中,维持社交图的至少一部分,所述社交图包括多个节点和连接所述节点的多个边,每个节点通过节点标识符唯一地识别,并且每个边指示节点之间的关联;处理从社交网络环境用户的一个或多个客户端系统接收的一个或多个查询,每个查询的所述处理包括:如果所述查询是针对所述缓存集群中存储的所述社交图的所述部分中的节点之间的关联,则通过搜索所述缓存集群的所述内存中存储的所述社交图的所述部分来响应所述查询;以及如果所述查询不是针对所述缓存集群中存储的所述社交图的所述部分中的节点之间的关联,则将所述查询转发至数据库以进行处理;并且将响应于所接收的查询的搜索结果发送至所述一个或多个客户系统进行显示。根据本专利技术的又一个方面,提供一种存储计算机可读指令的非暂时性存储介质,所述指令在被执行时操作用于使得一个或多个处理器操作为缓存层中的缓存集群,所述缓存层包括一个或多个缓存集群,其中所述一个或多个缓存集群中的每一个操作为:在所述缓存集群的一个和多个缓存节点的内存中,维持社交图的至少一部分,所述社交图包括多个节点和连接所述节点的多个边,每个节点通过节点标识符唯一地识别,并且每个边指示节点之间的关联;处理从社交网络环境用户的一个或多个客户端系统接收的一个或多个查询,每个查询的所述处理包括:如果所述查询是针对所述缓存层中存储的所述社交图的所述部分中的节点之间的关联,则通过搜索所述缓存集群的所述内存中存储的所述社交图的所述部分来响应所述查询;以及如果所述查询不是针对所述缓存集群中存储的所述社交图的所述部分中的节点之间的关联,则将所述查询转发至数据库以进行处理;并且将响应于所接收的查询的搜索结果发送至所述一个或多个客户系统进行显示。附图说明图1示出了根据本专利技术的一个实施方式的示例性缓存系统架构。图2示出了示例性计算机系统架构。图3提供了示例性网络环境。图4示出了说明用于向图形添加新关联的示例性方法的流程图。图5是说明缓存系统的各部件之间的示例性消息流的示意图。图6示出了说明用于处理图形数据的变化的示例性方法的流程图。图7是说明缓存系统的各部件之间的示例性消息流的示意图。具体实施方式特定实施方式涉及用于存储和提供建模为图形的信息的分布式缓存系统,该图形包括节点和边,边定义了该边在图形中连接的节点之间的关联或关系。在特定实施方式中,图形是或者包括社交图,并且分布式缓存本文档来自技高网
...

【技术保护点】
一种系统,包括:数据库;以及包括一个或多个缓存集群的缓存层,其中所述一个或多个缓存集群中的每一个操作为:在所述缓存集群的一个和多个缓存节点的内存中,维持社交图的至少一部分,所述社交图包括多个节点和连接所述节点的多个边,每个节点通过节点标识符唯一地识别,并且每个边指示节点之间的关联;处理从社交网络环境用户的一个或多个客户端系统接收的一个或多个查询,每个查询的所述处理包括:如果所述查询是针对所述缓存集群中存储的所述社交图的所述部分中的节点之间的关联,则通过搜索所述缓存集群的所述内存中存储的所述社交图的所述部分来响应所述查询;以及如果所述查询不是针对所述缓存集群中存储的所述社交图的所述部分中的节点之间的关联,则将所述查询转发至所述数据库以进行处理;并且将响应于所接收的查询的搜索结果发送至所述一个或多个客户系统进行显示。

【技术特征摘要】
2010.12.30 US 61/428,799;2011.09.07 US 13/227,3811.一种系统,包括:数据库;以及包括一个或多个缓存集群的缓存层,其中所述一个或多个缓存集群中的每一个操作为:在所述缓存集群的一个和多个缓存节点的内存中,维持社交图的至少一部分,所述社交图包括多个节点和连接所述节点的多个边,每个节点通过节点标识符唯一地识别,并且每个边指示节点之间的关联;处理从社交网络环境用户的一个或多个客户端系统接收的一个或多个查询,每个查询的所述处理包括:如果所述查询是针对所述缓存集群中存储的所述社交图的所述部分中的节点之间的关联,则通过搜索所述缓存集群的所述内存中存储的所述社交图的所述部分来响应所述查询;以及如果所述查询不是针对所述缓存集群中存储的所述社交图的所述部分中的节点之间的关联,则将所述查询转发至所述数据库以进行处理;并且将响应于所接收的查询的搜索结果发送至所述一个或多个客户系统进行显示。2.根据权利要求1所述的系统,其中所述一个或多个缓存节点进一步操作为:接收改变所述内存中的关联信息的请求;改变所述内存中的所述关联;修改所述请求以便通过所述数据库实施;将所修改的请求转发至所述数据库以进行处理。3.根据权利要求1所述的系统,其中,所述缓存层包括多个分布式缓存集群,每个缓存集群包括多个缓存节点,每个缓存集群分配一个或多个数据碎片,缓存集群的所述缓存节点的每一个存储关于与所分配的数据碎片对应的节点的关联信息。4.根据权利要求3所述的系统,其中,所述多个缓存集群包括:引导者缓存集群,包括多个引导者缓存节点;以及一个或多个跟随者缓存集群,每个跟随者缓存集群包括多个跟随者缓存节点。5.根据权利要求1所述的系统,其中,所述一个或多个缓存节点进一步操作为:对于与多个节点中的第一节点和多个关联类型中的关联类型对应的每个关联集,在内存中维持第一索引和第二索引;其中,所述第一索引包括有序条目阵列,每个条目都包括与所述第一节点相关联的第二节点的节点标识符以及分类属性;其中,所述第二索引包括哈希表,所述哈希表包括对应于与所述第一节点相关联的相应第二节点的所述节点标识符的条目;接收在第一节点和第二节点之间添加第一关联类型的关联的命令,所述命令包括第一节点标识符和第二节点标识符;以及就所述第一关联类型和所述第一节点标识符访问所述内存,以向与所述第一关联类型和所述第一节点标识符对应的第一索引和第二索引添加所述第二节点标识符。6.根据权利要求5所述的系统,其中所述一个或多个缓存节点进一步操作为:针对每个关联集维持计数值;响应于添加与相应关联集对应的关联的命令而递增计数值;以及响应于删除与相应关联集对应的关联的命令而递减计数值。7.一种方法,包括通过缓存层中的一个或多个缓存集群中的每一个执行:在所述缓存集群的一个和多个缓存节点的内存中,维持社交图的至少一部分,所述社交图包括多个节点和连接所述节点的多个边,每个节点通过节点标识符唯一地识别,并且每个边指示节点之间的关联;处理从社交网络环境用户的一个或多个客户端系统接收的一个或多个查询,每个查询的所述处理包括:如果所述查询是针对所述缓存集群中存储的所述社交图的所述部分中的节点之间的关联,则通过搜索所述缓存集群的所述内存中存储的所述社交图的所述部分来响应所述查询;以及如果所述查询不是针对所述缓存集群中存储的所述社交图的所述部分中的节点之间的关联,则将所述查询转发至数据库以进行处理;并且将响应于所接收的查询的搜索结果发送至所述一个或多个客户系统进行显示。8.根据权利要求7所述的方法,进一步包括通过每个缓存节点执行:接收改变所述内存中的关联信息的请求;改变所述内存中的所述关联;修改所述请求以便通过所述数据库实施;将所修改的请求转发至所述数据库以进行处理。9.根据权利要求7所述的方法,其中所述缓存层包括多个分布式缓存集群,每个缓存集群包括多个缓存节点,每个缓存集群分配一个或多个数据碎...

【专利技术属性】
技术研发人员:文卡特什瓦兰·文卡塔拉马尼
申请(专利权)人:脸谱公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1