CN116134435A - 通过分布式消息队列的高速缓存更新 - Google Patents
通过分布式消息队列的高速缓存更新 Download PDFInfo
- Publication number
- CN116134435A CN116134435A CN202080104292.7A CN202080104292A CN116134435A CN 116134435 A CN116134435 A CN 116134435A CN 202080104292 A CN202080104292 A CN 202080104292A CN 116134435 A CN116134435 A CN 116134435A
- Authority
- CN
- China
- Prior art keywords
- database
- computing device
- data
- cache
- local cache
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
在一些示例中,第一计算设备可以从第二计算设备接收第一请求。例如,所述第一计算设备可以能够与多个数据库节点通信,每个数据库节点维持跨所述多个数据库节点分布的数据库的一部分。此外,所述第一计算设备可以维持所述数据库中维持的信息的子集的本地高速缓存。所述第一计算设备可以基于所述第一请求向第一数据库节点发送第二请求,以引起所述第一数据库节点改变所述数据库中的数据。另外,所述第一计算设备基于对所述数据库中的所述数据的所述改变从多个分布式消息队列中的消息队列接收高速缓存更新消息。所述第一计算设备可以基于所述高速缓存更新消息来更新所述本地高速缓存。
Description
技术领域
本公开涉及数据存储的技术领域。
背景技术
多分区数据库可以通过在多个计算设备(也称为“节点”)之间划分数据服务来提供水平可扩展性。例如,可以通过跨多个节点复制数据库并根据需要增加节点数量以便处理增加量的数据和/或工作负荷来实现数据库中的数据的高可用性和容错。客户端服务可以访问数据库节点以读取或写入与数据库相对应的数据。在一些情况下,客户端节点可以维持为来自数据库的数据的子集的本地高速缓存,以使得客户端能够将读取和写入请求路由到正确的数据库节点。然而,数据库路由可能动态地改变,或可能发生可能引起客户端在其本地高速缓存中具有过时信息的其他事件,这可能引起***资源之间的不均匀定时问题、缓慢的***响应时间等。
发明内容
一些实施方式包括可以从第二计算设备接收第一请求的第一计算设备。此外,所述第一计算设备可以能够与多个数据库节点通信,每个数据库节点维持跨所述多个数据库节点分布的数据库的一部分。另外,所述第一计算设备可以维持所述数据库中维持的信息的子集的本地高速缓存。所述第一计算设备可以基于所述第一请求向第一数据库节点发送第二请求,以引起所述第一数据库节点改变所述数据库中的数据。另外,所述第一计算设备基于对所述数据库中的所述数据的所述改变从多个分布式消息队列中的消息队列接收高速缓存更新消息。所述第一计算设备可以基于所述高速缓存更新消息来更新所述本地高速缓存。
附图说明
参考附图阐述详细描述。在附图中,附图标记最左边的(一个或多个)数字标识首次显现该附图标记的图。在不同附图中使用相同的附图标记指示相似或相同的项目或特征。
图1图示了根据一些实施方式的采用消息传递用于本地高速缓存更新的***的示例架构。
图2是图示根据一些实施方式的***的示例逻辑配置的框图。
图3是图示根据一些实施方式的创建新桶的示例的框图。
图4是图示根据一些实施方式的使用分布式消息传递队列使本地高速缓存无效的示例的框图。
图5是图示根据一些实施方式的更新本地高速缓存的示例的框图。
图6是图示根据一些实施方式的使用分布式消息传递队列来更新本地高速缓存的示例过程的流程图。
图7图示了可以用于实施本文描述的***的至少一些功能的(一个或多个)服务计算设备的选定示例部件。
具体实施方式
本文中的一些实施方式涉及用于分布式计算***的技术和布置,其中分布式消息传递队列***用于将高速缓存无效消息聚集并递送到相关目标。例如,***可以包括分布式数据库,该分布式数据库可以容忍客户端服务使用稍微过时的数据用于一些操作,以有利于提升性能并改善扩展特性。这允许***极大地减少读取密集型工作负荷以及写入密集型工作负荷的数据库负荷,特别是在包括一个或多个附加优化的情况下,如下面另外讨论的。
一些示例包括能够在异构云(和/或多云)环境中操作的创新的分布式高速缓存。例如,在异构云环境中,具有不同资源特性(例如,计算、存储器、网络等)的各种分布式节点可以一起工作。然而,诸如用于同步高速缓存的聊天发布者/订户协议的标准同步技术在这样的环境中不能很好地操作。因此,本文中的一些实施方式在实施***的客户端服务的各个客户端节点上采用多个本地存储器内高速缓存。例如,本地高速缓存可以镜像由客户端服务使用的某些数据库值。另外,本文中的***可以采用消息代理队列,诸如通过使用高级消息队列协议(AMQP)来周期性地使本地高速缓存无效和/或同步。
在一些情况下,每个高速缓存的数据元素可以被配置为在可配置的时间之后到期,使得数据元素不会变得过时。当将新值写入数据库时,可以通过无效消息通知每个客户端对应的数据项目已经被无效。对于附加优化,无效消息可以包含关于新数据值的信息。因此,在本文中的一些情况下,只有当客户端的本地高速缓存没有指定数据项目的记录时,或如果该数据项目在没有任何更新值的情况下已经变得无效时,客户端节点才执行数据库读取。
本文中的一些示例使用消息代理协议来使本地高速缓存无效,并实现跨分布式本地高速缓存集的本地高速缓存同步。此外,一些实施方式采用消息的延迟发布来改善基于消息代理排队的分布式***中的性能和可扩展性。例如,由于在递送消息之前将消息持续更长时间段的能力,消息排队本质上比一些其他技术损耗更小。
在本文中的一些示例中,客户端节点将其相应的读和写请求路由到适合于每个请求的数据库节点的相应子集。此外,数据库路由可以动态地改变,因此客户端设备可以基于本文描述的实施方式来维持当前路由信息,即使数据库节点和/或客户端节点上的计算资源、网络资源和存储资源可能不同,这例如可能引起***中的参与实体之间的不均匀定时问题。因此,本文中的一些示例连接多个异构***,其可以包括连接到本地或私有***的公共云存储设备。
本文中的实施方式解决了可扩展云存储配置所遇到的高速缓存问题,所述可扩展云存储配置具有存储和服务信息的多个分布式数据库节点以及本地存储在数据库中存储的信息的子集以便有效访问的多个客户端节点。此外,本文中的一些示例可以包括分布式***,该分布式***包括一组数据库节点(在一些示例中,元数据网关设备)和作为由数据库节点提供的分布式数据库的客户端的客户端节点执行的一组客户端服务。例如,数据库节点可以存储和服务信息,并且客户端节点可以访问或镜像数据库中的信息。
出于讨论目的,在与云存储***通信以用于使用分布式元数据数据库来管理对数据的存储和访问的一个或多个服务计算设备的环境中描述了一些示例实施方式。然而,本文中的实施方式不限于所提供的特定示例,并且可以扩展到其他类型的计算***架构、其他类型的数据库、其他类型的存储环境、其他类型的客户端配置、其他类型的数据等,如本领域技术人员鉴于本文中的公开内容将显而易见的。
图1图示了根据一些实施方式的采用消息传递用于本地高速缓存更新的***100的示例架构。***100包括多个服务计算设备102,其能够诸如通过一个或多个网络106与至少一个网络存储***104通信或以其他方式耦合到至少一个网络存储***104。此外,服务计算设备102能够通过(一个或多个)网络106与一个或多个用户设备108和一个或多个管理员设备110进行通信,所述一个或多个用户设备108和一个或多个管理员设备110可以是各种类型的计算设备中的任何一种,如下面另外讨论的。
在一些示例中,服务计算设备102可以包括可以以任何数量的方式体现的一个或多个服务器。例如,服务计算设备102的程序、其他功能部件、以及数据存储的至少一部分可以在至少一个服务器上(诸如在服务器集群、服务器群、数据中心、云托管的计算服务等中)实施,但是可以另外地或替代地使用其他计算机架构。下面关于图7讨论服务计算设备102的附加细节。
服务计算设备102可以被配置为向用户112提供存储和数据管理服务。作为若干非限制性示例,用户112可以包括执行商业、企业、组织、政府实体、学术实体等的功能的用户,并且在一些示例中,其可以包括存储非常大量的数据。然而,本文中的实施方式不限于***100以及本文描述的其他***和布置的任何特定用途或应用。
在一些示例中,(一个或多个)网络存储***104可以被称为“云存储设备”或“基于云的存储设备”,并且在一些情况下,可以实现比在服务计算设备102处可用的本地存储设备更低成本的每兆字节/千兆字节存储解决方案。此外,在一些示例中,(一个或多个)网络存储***104可以包括如本领域已知的市售云存储设备,而在其他示例中,(一个或多个)网络存储***104可以包括仅可由与服务计算设备102相关联的实体访问的私有或企业存储***、或其组合。
一个或多个网络106可以包括任何合适的网络,包括广域网,例如因特网;局域网(LAN),诸如内联网;无线网络,诸如蜂窝网络、本地无线网络(诸如Wi-Fi)、和/或短程无线通信(诸如);包括光纤信道、光纤、以太网或任何其他这样的网络的有线网络、直接有线连接或其任何组合。因此,一个或多个网络106可以包括有线和/或无线通信技术。用于这种通信的部件可以至少部分地取决于网络的类型、所选择的环境或两者。用于通过这样的网络进行通信的协议是众所周知的,并且将不在本文中详细讨论。因此,服务计算设备102、(一个或多个)网络存储***104、用户设备108和管理设备110能够使用有线或无线连接及其组合通过一个或多个网络106进行通信。
另外,服务计算设备102可以能够通过一个或多个网络107彼此通信。在一些情况下,一个或多个网络107可以是LAN、专用网络等,而在其他情况下,一个或多个网络107可以包括上面讨论的任何网络106。
每个用户设备108可以是任何合适类型的计算设备,诸如台式计算机、膝上型计算机、平板计算设备、移动设备、智能电话、可穿戴设备、终端和/或能够通过网络发送数据的任何其他类型的计算设备。用户112可以诸如通过相应的用户账户、用户登录凭证等与用户设备108相关联。此外,用户设备108可以能够通过一个或多个网络106、通过单独的网络、或通过任何其他合适类型的通信连接与(一个或多个)服务计算设备102通信。对于受益于本文公开内容的本领域技术人员而言,许多其他变型将是显而易见的。
此外,每个用户设备108可以包括可以在用户设备108上执行的用户应用114的相应示例,诸如用于与可作为一个或多个服务计算设备102上的服务执行的用户web应用116通信,诸如用于发送用户数据以存储在网络存储***104上和/或用于通过数据请求118等从网络存储***104接收存储的数据。在一些情况下,应用114可以包括浏览器或可以通过浏览器进行操作,而在其他情况下,应用114可以包括具有使得能够通过一个或多个网络106与用户web应用116进行通信的通信功能的任何其他类型的应用。
在***100中,用户112可以将数据存储到其相应的用户设备108与之通信的(一个或多个)服务计算设备102,并从其接收数据。因此,服务计算设备102可以为用户112和相应的用户设备108提供存储服务。。在稳态操作期间,可能存在用户108与服务计算设备102周期性地通信,诸如以便读取或写入数据。
另外,管理员设备110可以是任何合适类型的计算设备,诸如台式计算机、膝上型计算机、平板计算设备、移动设备、智能电话、可穿戴设备、终端和/或能够通过网络发送数据的任何其他类型的计算设备。管理员120可以与管理员设备110相关联,诸如通过相应的管理员帐户、管理员登录凭证等。此外,管理员设备110可以能够通过一个或多个网络106、通过单独的网络或通过任何其他合适类型的通信连接与(一个或多个)服务计算设备102通信。
此外,每个管理员设备110可以包括管理员应用122的相应实例,管理员应用122可以在管理员设备110上执行,诸如用于与可作为一个或多个服务计算设备102上的服务执行的管理web应用124通信。例如,管理员120可以使用管理员应用用于发送用于管理***100的管理指令、以及用于发送用于存储在(一个或多个)网络存储***104上的管理数据和/或用于从(一个或多个)网络存储***104检索所存储的管理数据,诸如通过管理请求126等。在一些情况下,管理员应用122可以包括浏览器或可以通过浏览器进行操作,而在其他情况下,管理员应用122可以包括具有使得能够通过一个或多个网络106与管理web应用124进行通信的通信功能的任何其他类型的应用。
服务计算设备102可以执行存储程序130,该存储程序130可以向(一个或多个)网络存储***104提供网关,诸如用于向(一个或多个)网络存储***104发送要存储的数据以及用于从(一个或多个)网络存储***104检索所请求的数据。另外,存储程序130可以管理由***100存储的数据,诸如用于管理数据保留期、数据保护级别、数据复制等。
服务计算设备102还可以包括元数据数据库(DB)132,该元数据数据库(DB)132可以被划分为多个DB分区134(1)-134(N),并且该元数据数据库(DB)132可以跨多个服务计算设备102分布。例如,元数据DB 132可以用于管理存储在(一个或多个)网络存储***104处的对象数据136。元数据DB 132可以包括关于对象数据136的许多元数据,诸如关于各个对象的信息、如何访问各个对象、对象的存储保护级别、存储保留期、对象所有者信息、对象大小、对象类型等。此外,DB管理程序138可以管理和维持元数据DB 132,诸如用于在存储新对象、删除旧对象、迁移对象等时更新元数据DB 132。包括数据库分区134的服务计算设备102可以被称为数据库节点140,并且均可以维持数据库132的与分区134中的一个或多个分区相对应的部分。
另外,执行其上的服务(图1所示的服务的示例包括用户web应用116和管理web应用124)的服务计算设备102可以被称为客户端节点142。每个客户端节点142可以维持相应的本地高速缓存146(在一些情况下也称为“近高速缓存”或“本地视图”),诸如所图示的示例中的第一本地高速缓存146(1)和第二本地高速缓存146(2)。客户端节点142可以相对于元数据数据库132作为客户端操作。在一些情况下,客户端节点142可以更新可以维持在客户端节点142上的本地高速缓存146。例如,可以基于对数据库132的更新和/或通过如下面另外讨论的其他技术来周期性地更新本地高速缓存146。因此,作为一个示例,当用户web应用116从用户设备108接收到数据请求118时,用户web应用116可以访问本地高速缓存146(1)以确定要与之通信以便执行数据请求118的数据库节点140。通过使用本地高速缓存146(1),用户web应用116能够减少用于从元数据DB 132获得期望信息以便执行数据请求118的查询的数量。
此外,服务计算设备102中的一些或全部可以包括节点管理程序148的相应实例,该节点管理程序148由相应的服务计算设备102执行以作为***100的一部分来管理相应的服务计算设备102并执行归属于本文中的服务计算设备102的其他功能。在服务计算设备102是数据库节点140的情况下,节点管理程序还可以管理数据库节点140的配置以执行诸如将数据库节点140配置成分区组以及控制分区组的操作的动作。
作为一个非限制性示例,可以根据Raft一致性算法将数据库节点140配置在Raft组中,以确保分布式元数据数据库的数据库分区134的数据冗余和一致性。根据RAFT算法每个分区组的一个数据库节点140可以被选为领导者,并且可以负责服务于该数据库分区134的所有读取和写入操作。因此,领导者节点可以用作客户端节点142的元数据网关。其他数据库节点140是接收所有事务的副本以使得它们能够更新它们自己的元数据数据库信息的跟随者节点。如果领导者节点失败或超时,则跟随者节点中的一个跟随者节点可以被选为领导者并且可以接管服务读取和写入事务。本文中的元数据***的客户端节点能够发现(例如,通过访问相应的本地高速缓存146或发送查询)哪个数据库节点140是每个分区134的领导者并将请求引导到该数据库节点140。
因此,本文中的示例包括能够路由对高度可用的可扩展分布式元数据数据库132的请求的***。本文中的元数据数据库132可以通过在单独的元数据节点140上维持元数据的强一致副本来提供高可用性。此外,分布式元数据数据库132通过划分元数据并跨不同的元数据节点140分布元数据来提供可扩展性。此外,本文中的解决方案优化了客户端应用找到给定请求的分区领导者的能力。
为了能够以有效的方式更新本地高速缓存,至少一些服务计算设备102可以执行消息传递程序150。例如,消息传递程序150可以使得能够创建高速缓存更新消息152,以用于在数据库数据、数据库配置等的改变之后更新本地队列146。在一些示例中,本文采用的消息传递程序可以包括实施高级消息队列协议(AMQP)、面向流式文本的消息传递协议(STOMP)、消息队列遥测传输(MQTT)和/或其他合适的消息传递协议中的一个或多个的消息代理程序。可以在一些实施方式中使用的软件的若干非限制性示例包括APACHE QPID、JORAM、APACHE ACTIVEMQ和RABBITMQ。例如,AMQP是能够连接不同平台上的应用的标准协议。
在一些情况下,本地高速缓存146中的项目可能通过超时到期或在接收到指示该值已经被更新的消息时变得无效。可以由客户端节点142(例如,由在相应客户端节点142上执行的(一个或多个)相应服务)有效地从本地高速缓存146中移除无效项目。例如,在客户端节点上执行的每个服务可以维持其自己的本地高速缓存146,本地高速缓存146可以由相应的服务使用并且可以由服务基于接收到的高速缓存更新消息152来更新。
在一些示例中,当数据库132中的数据项目的值改变时,可以诸如基于来自元数据节点140的具有关于改变的信息的指令立即发布使用AMQP消息传递协议提供改变的通知的高速缓存无效消息152。可以在线执行对数据库132的更新和高速缓存更新消息152的生成,例如,可以在对数据库进行更新之后立即生成高速缓存更新消息152,但是可以相对于彼此异步地执行对数据库的更新和高速缓存更新消息152的生成。
客户端节点142可以被配置为监听高速缓存更新消息152,高速缓存更新消息152指示与其相应的本地高速缓存146的(一个或多个)高速缓存类型相关的数据改变事件。例如,可能存在不同数据类型的不同类型的本地高速缓存146,诸如对于由客户端节点142执行的不同类型的服务。高速缓存更新消息152可以针对每个不同的高速缓存类型单独路由,使得具有与特定高速缓存更新消息152所属的高速缓存类型不同的高速缓存类型的客户端节点142不需要处理它们将不使用的数据。此外,(适当类型的)每一个本地高速缓存实例接收指示数据项目无效的该数据类型的高速缓存更新消息152。
在一些示例中,诸如数据库节点140、客户端节点142或本文中的其他计算节点的节点可以是可以维持本文中描述的程序、服务或数据中的一个或多个的单个物理机器或虚拟机。所有逻辑部件(例如,元数据网关)以及客户端服务可以在***100内的任何物理服务计算设备102上执行。分布式元数据数据库132可以使用动态分区,其中由相应元数据节点140存储的数据可以被划分成一组可管理块(分区134),以跨多个元数据节点140分布数据库132的数据。随着分区134增长,***可以动态地拆分分区134以形成两个或更多个新分区,并且可以将新分区迁移到具有足够的存储容量来接收它们的元数据节点140和/或迁移到新添加的元数据节点140。
当将新的元数据节点140添加到***100时,***100内的通信可能会减慢,诸如以便满足数据增长。例如,包括在本地高速缓存146中的信息的至少一部分可能变得无效。类似地,还可以通过添加新的客户端节点142来扩展客户端服务节点以匹配传入的工作负荷。如上所述,客户端节点142均可以维持一个或多个本地高速缓存146,所述一个或多个本地高速缓存146是镜像存储在元数据数据库节点中的信息的子集的存储器内高速缓存。本地高速缓存146可以通过极大地减少对对数据库查询的需要和频率来增加***效率。例如,在高度分布式***中,来自客户端节点的直接导致数据库查询的恒定访问(例如,其中所请求的数据存储在诸如硬盘的永久介质中)可能是昂贵的并且可能增加***延迟。
在一些情况下,分布式数据库132中的数据可以通过用户请求来更新,并且更新可以仅发生在特定的数据库节点140上。因此,当更新数据的镜像存在于一个或多个客户端节点142的本地高速缓存146中时,则该数据变得陈旧或无效。因此,本文中的一些示例可以使用分布式无效方案来保持本地高速缓存146中的数据被异步刷新。作为一个示例,服务可以周期性地将本地高速缓存146中的数据标记为无效。在到达对该数据的新请求时,服务可以通过向数据库132查询数据库132中的最新值来更新本地高速缓存146。
用于无效和更新本地高速缓存146的示例算法包括以下内容。(1)每个客户端节点142维持客户端节点142先前根据需要从数据库132检索的数据的本地高速缓存146。(2)客户端节点142可以具有多个本地高速缓存146,每个本地高速缓存146保存不同类型的数据并且被配置有不同的优化参数,诸如供在客户端节点142上执行的一个或多个服务使用。(3)本地高速缓存146中的每个数据项目可以在可配置的时间量之后到期。例如,到期时间可以被选择为最小化数据库访问,同时还防止本地高速缓存146中的数据过时。(4)当数据库132中的数据项目的值改变时,可以立即生成并发布使用诸如AMQP的消息传递协议通告改变的高速缓存更新消息152。可以在线执行数据库132中的更新和消息的生成。(5)每个服务监听高速缓存更新消息152,高速缓存更新消息152指示由服务使用的相应类型的高速缓存的数据改变事件。在一些示例中,可以针对每个高速缓存类型单独地路由高速缓存更新消息152,使得客户端节点142和管理本地高速缓存的服务不需要处理它们将不使用的数据。(6)(指定类型的)每一个本地高速缓存实例接收指示数据项目无效的该数据类型的高速缓存更新消息152。(7)项目可以通过超时到期或在接收到指示项目值已经被更新的高速缓存更新消息152时中的至少一个而变得无效。有效地从本地高速缓存中移除无效项目,诸如通过将项目标记为已删除或以其他方式允许项目的存储位置在适当的时候被覆写。(8)当客户端需要访问数据项目时,高速缓存立即返回它已经存储的任何值。如果没有存储的值,或如果该值已经被无效,则管理本地高速缓存146的程序可以从数据库132请求当前值。(9)高速缓存更新消息152可以被配置有“生存时间”值,因此它们不能存活超过其使用寿命。例如,本地高速缓存146中的项目可以在一定时间之后自动到期。(10)作为附加优化,在一些示例中,高速缓存更新消息152可以包含更新数据的部分或全部值。这提高了多个客户端节点可以同时更新值的可能性。在这种情况下,管理相应本地高速缓存146的程序可以使用分布式节拍计数器来识别哪个值是最新的。对于写入繁重的工作负荷,这种优化可以甚至进一步减少数据库负荷。
利用上面讨论的架构和算法,对于读取密集的工作负荷,可以极大地减少客户端节点142对数据库132的访问量。此外,***100可以被配置有到期阈值,该到期阈值防止本地高速缓存146变得过时超过该阈值。可以为每种不同类型的本地高速缓存146和/或为不同客户端节点142上的相同类型的各个本地高速缓存配置单独的到期阈值。例如,本地高速缓存146可以被配置为使最近最少使用的数据到期以实施存储器使用限制。
此外,由于内部事件,可以更新本地高速缓存146。例如,本地高速缓存146可以被配置为存储除了可以增长到数万亿元数据的用户对象元数据之外的所有***元数据。在这种情况下,在本地高速缓存146中镜像的***元数据可以是用户驱动的或内部***元数据,诸如元数据分区映射。元数据分区映射是包括分区标识符(ID)和相应分区驻留在其上的数据库节点140的ID的表或其他数据结构。与对象管理相关的所有用户请求(诸如putObject和getObject请求)可以引起服务(例如,用户web应用116)查找至少四种不同的元数据类型,诸如用户信息、桶信息、分区信息和对象信息。因此,在一些情况下,所有四种类型的元数据会由于单个用户请求而被刷新是可能的。为了避免这种情况,本文中的一些示例可以采用涉及将所有元数据类型和表划分成分区134的动态元数据分区技术。分区134跨数据库节点140分布以提供统一的负荷管理。当元数据分区被分割成两个或更多个分区时,可能发生分区映射无效。虽然分区拆分可能不是由用户请求驱动的,但是无效和进一步刷新过程可以类似于由诸如上面讨论的putObject和getObject请求的用户操作引起的刷新。
此外,为了为最终用户实现更好的响应时间,本文中的高速缓存更新可以相对于用户写入请求异步地执行。因此,可能存在小的延迟,在该延迟之前,客户端节点上的跨***100分布的服务的本地高速缓存146将被无效或以其他方式更新。例如,使本地高速缓存146无效或以其他方式更新本地高速缓存146的实际时间可以基于网络和***活动而改变。可以在本文中使用的AMQP消息传递协议固有地是鲁棒的,因为高速缓存更新消息152可以在递送之前排队。因此,可以跨多个数据库更新聚合高速缓存更新消息152。例如,假设桶、用户和分区映射更新全部发生并且同时入队,则可能只有一个高速缓存更新消息152实际发送到客户端节点142上的相应服务。然而,在一些情况下,诸如由于临时网络故障等,经由AMQP的高速缓存更新消息152仍然可能丢失。因此,本文中的实施方式可以包括重试递送消息多达特定尝试阈值的机制。
此外,在来自排队的高速缓存更新消息152的递送失败的情况下,本地高速缓存146可以基于超过时间阈值来执行无效或其他高速缓存更新。例如,当针对给定高速缓冲存储值的最后更新超过某一超时值时,本地高速缓冲存储器146可以被配置为自动使所述条目无效。本文中用于无效的超时阈值可以是可配置的,使得可以基于***工作负荷动态等来调整超时阈值。
在一些情况下,服务计算设备102可以在站点154处被布置成一个或多个组、集群、***等。在一些情况下,多个站点154可以在地理上彼此分散,诸如用于提供数据复制、灾难恢复保护等。此外,在一些情形中,多个不同站点154处的服务计算设备102可以被配置成用于彼此安全地通信,诸如用于提供多个站点154的联合。
图2是图示根据一些实施方式的***200的示例逻辑配置的框图。在一些示例中,***200可以对应于上面讨论的***100或各种其他可能的计算***架构中的任何一种,这对于受益于本文公开内容的本领域技术人员将是显而易见的。***200可以实现分布式对象存储,并且可以包括使用web应用作为用户和管理员的前端服务。在一些情况下,***200可以将网络存储设备(图2中未示出)上的对象存储在可以由终端用户112、120创建的桶中。***200可以使用跨本地部署和云***分布的资源来实现对数据的复杂管理和存储。在***200中,可以通过对存储在分布式数据库132中的存储的元数据进行逻辑划分来提供可扩展性。
图2的***200可以包括客户端节点142和数据库节点140的分布式***,数据库节点140能够容忍客户端节点142在某些操作下使用过时的高速缓存数据,这可以改善***性能和扩展特性。这为读取密集型工作负荷提供了减少的数据库负荷,并且在一些示例中也为写入密集型工作负荷提供了减少的数据库负荷。例如,当新值被写入分布式数据库132时,具有相应本地高速缓存146的各个客户端节点142可以接收指示对应的数据项目已经被无效的高速缓存更新消息152。对于附加优化,高速缓存更新消息152可以包含关于新数据值的信息。此外,当本地高速缓存146没有数据项目的记录或该数据项目在没有任何更新值的情况下已经变得无效时,可以执行数据库读取。
在该示例中,***200包含消息传递队列网格202,以用于将高速缓存更新消息152排队并路由到在客户端节点142上执行的服务。例如,消息传递队列网格202可以由上面关于图1讨论的消息传递程序150提供,并且可以托管在一个或多个消息传递节点204上。消息传递节点204可以对应于上面讨论的可以执行消息传递程序150的服务计算设备102中的一个或多个。在一些情况下,消息传递程序150可以在用作数据库节点140的相同服务计算设备102上执行,和/或在用作客户端节点142的服务计算设备102上执行,和/或在上面关于图1讨论的***100中的其他服务计算设备102上执行。消息传递队列网格202可以包括多个消息队列,诸如消息队列208(1)、消息队列208(2)和消息队列208(3),其中的每一个可以被维持在单独的虚拟容器中,诸如DOCKER容器等。在一些示例中,消息队列208(1)-208(3)可以被维持在分开的物理机器或虚拟机上。
在该示例中,分布式数据库132包括可以与数据库节点140相对应的多个元数据网关210。例如,如上所述,在一些示例中,每个数据库分区134可以由两个或更多个数据库节点140的分区组维持。每个分区组可以具有响应于对该相应分区134的用户读和写请求的领导者节点。因此,每个分区组的分区领导者可以用作该分区134的元数据网关210。在该示例中,出于解释的目的,图示了四个元数据网关210(1)-210(4);然而,在实际的实施方式中,本文中的***的一些示例可以包括更大数量的元数据网关210,这取决于数据库分区134的数量。
消息队列208被配置为将高速缓存更新消息152递送到在客户端节点142上执行的服务。在该示例中,第一服务程序212可以对应于上面论述的可以提供用户设备108数据访问服务的用户web应用116。例如,第一服务程序212可以维持包含可以用于访问元数据网关210的信息的本地高速缓存146(1)。例如,第一服务程序212可以提供用于使得客户端节点142(1)能够与元数据网关210交互以检索元数据的客户端功能。此外,第一服务程序212可以提供用于接收用于更新相关联的本地高速缓存146(1)的高速缓存更新消息152的功能。此外,第一服务程序212可以与存储程序130(图2中未示出)交互,诸如用于基于检索到的元数据和/或维持在本地高速缓存146(1)中的元数据来检索对象数据136,诸如上面关于图1所讨论的。此外,第一服务程序212可以与用户设备108交换通信214,例如用于发送或接收用户数据。
在该示例中,第二客户端节点142(2)还可以执行第一服务程序212的实例,可以维持本地高速缓存146(2),并且可以与另一用户设备108交换通信216。另外,在该示例中,第三客户端节点142(3)执行两个服务,即第二服务程序218和第三服务程序220。例如,第二服务程序可以对应于上面关于图1讨论的向管理员提供管理服务的管理web应用124。例如,第二服务程序218可以包括用于与***200中的其他节点(包括客户端节点142、消息传递节点204和/或数据库节点140)交互的客户端功能。第二服务程序218可以与管理员设备110交换通信222,例如用于接收管理指令、提供状态更新等。第二服务程序218可以维持本地高速缓存146(3),在一些示例中,本地高速缓存146(3)可以包含与维持在本地高速缓存146(1)和146(2)中的数据类型不同的一个或多个数据类型,或反之亦然。
另外,第三服务程序220可以提供与由第一服务程序212和第二服务程序218提供的服务不同的另一种类型的服务。作为若干非限制性示例,第三服务可以包括垃圾收集、对象数据管理等。第三服务程序220可以与管理员设备110交换通信224,例如用于接收管理指令、提供状态更新等。第三服务程序220可以维持本地高速缓存146(4),在一些示例中,本地高速缓存146(4)可以包括与由本地高速缓存146(1)、146(2)和146(3)维持的数据类型不同的一个或多个数据类型,或反之亦然。
当元数据网关210改变分布式数据库132中的数据项目的值或以其他方式对数据库132进行改变时,元数据网关210可以发送入队指令230,该入队指令230可以包括关于消息队列208中的一个的改变值的信息。在一些示例中,可以随机选择消息队列208,但是可以替代地使用其他选择技术。
入队指令的接收可以引起相应消息传递节点204处的消息传递程序150生成高速缓存更新消息152,并将高速缓存更新消息152添加到相应的消息队列208。例如,可以根据AMQP消息传递协议生成、排队和分发高速缓存更新消息152。如上所述,高速缓存更新消息152可以被通告或以其他方式路由到在客户端节点142上执行的相应服务程序212、218、220。
作为一个示例,根据包括在其中的数据类型和受对数据库132的更新影响的数据类型,可以为每种不同类型的本地高速缓存146分别路由高速缓存更新消息152。例如,如果本地高速缓存146(1)和146(2)具有与更新相对应的一个或多个数据类型,并且本地高速缓存146(3)和146(4)不包括这些一个或多个数据类型,则基于受改变影响的数据类型的标识,不将针对第一服务程序112的高速缓存更新消息152路由到第二服务程序218或第三服务程序220,受改变影响的数据类型的指示可以例如由对数据库132进行改变的元数据网关210提供。因此,其高速缓存不受数据库132的改变影响的服务程序可以不接收或处理与其相应的本地高速缓存146无关的高速缓存更新消息152。
图3至图5图示了在数据库132中创建新桶的示例;由于数据库中的改变,使在其本地高速缓存中包括桶信息的若干服务的现有本地高速缓存146无效;并且随后更新若干本地高速缓存以包括更新的数据库信息。图3至图5的示例可以部分地对应于上面论述的图2的示例***200;然而,为了清楚说明,省略了客户端节点142(2)。其他非参与部件也被排除。
图3是图示根据一些实施方式的创建新桶的示例300的框图。在该示例中,假设用户设备108的用户112发送写入请求302以引起在(一个或多个)网络存储***104处创建新桶(图3中未示出)。第一服务程序212可以接收写入请求302,并且作为响应,可以诸如基于当前包括在本地高速缓存146(1)中的路由信息向元数据网关210(3)发送写入请求303。作为响应,元数据网关210(3)可以更新数据库132中的元数据,诸如通过为新桶创建新记录304。在该示例中,假设记录304包括桶的名称306(即,“桶1”)和桶的设置308(其包括3天的保留时段和同步设置)。还可以在网络存储***104(图3中未示出)处创建桶。元数据网关210(3)向第一服务程序212返回写入响应310。继而,第一服务程序212向用户设备108返回指示桶已经被创建的写入响应312。
图4是图示根据一些实施方式的使用分布式消息传递队列使本地高速缓存无效的示例400的框图。在该示例中,与新桶的创建相关联,如上面关于图3所讨论的,元数据网关210(3)可以将入队指令402发送到包括消息队列中的一个(即,在该示例中的消息队列208(2))的消息传递节点204中的一个。如上所述,在一些示例中,消息队列208(2)和/或消息传递节点204可以由元数据网关210(3)随机选择。在其他示例中,元数据网关210(3)可以采用用于选择消息队列208(2)/消息传递节点204中的一个以接收入队指令402的任何其他合适的技术。在一些示例中,元数据网关210(3)可以包括利用入队指令402在数据库中创建的记录304;然而,在该示例中,假设元数据网关210(3)仅识别受对数据库(即,桶)进行的改变影响的元数据记录的数据类型。
基于接收到入队指令402,消息传递节点204可以创建高速缓存更新消息152,以发送到维持具有桶信息的本地高速缓存的服务。在该示例中,假设所有第一服务程序212、第二服务程序218和第三服务程序220都分别在其本地高速缓存146(1)、146(3)和146(4)中包括桶信息。消息传递节点204可以将高速缓存更新消息152添加到消息队列208中,并将高速缓存更新消息152分发给服务。例如,消息传递节点可以确定由每个服务维持的本地高速缓存的类型,以用于正确地路由高速缓存更新消息152。因此,消息传递节点204可以使用消息队列208-2来将高速缓存更新消息152递送到第一服务程序212、第二服务程序218和第三服务程序220。作为响应,第一服务程序212可以使本地高速缓存146(1)的桶部分无效或以其他方式更新本地高速缓存146(1)的桶部分;第二服务程序218可以使本地高速缓存146(3)的桶部分无效以其他方式更新本地高速缓存146(3)的桶部分;并且第三服务程序220可以使本地高速缓存146(4)的桶部分无效或以其他方式更新本地高速缓存146(4)的桶部分。
图5是图示根据一些实施方式的更新本地高速缓存的示例500的框图。在该示例中,假设用户112使用用户设备向第一服务程序212提交获取桶请求502。作为响应,第一服务程序212确定本地高速缓存146的桶部分已经被无效,并且发送针对桶信息的获取桶请求504。作为响应,元数据网关210(3)可以提供获取桶响应506,该获取桶响应506包括来自数据库132的记录304的副本,该副本可以由第一服务程序212添加到本地高速缓存146(1)。
类似地,假设管理员120使用管理员设备110向第三服务程序220发送获取对象请求508。第三服务程序220可以发送获取桶请求510以查询元数据网关210(3),从而请求与包含所请求的对象的桶(桶1)相关的信息。作为响应,元数据网关210(3)可以向第三服务程序220发送获取桶响应512,该获取桶响应512可以包括第三服务程序220可以将其添加到本地高速缓存146(4)以刷新本地高速缓存146(4)的桶部分的元数据记录304的副本。
此外,虽然在该示例中,服务被元数据网关查询以从数据库132获得新桶的更新信息,但是在其他示例中,如上所述,记录304可能已经被包括在先前发送给服务的高速缓冲更新消息152中以使相关联的本地高速缓存146无效。因此,在该替代示例中,第一服务212和第三服务220不必向元数据网关210查询桶记录304,因为该信息本已经被包括在相应的本地高速缓存146(1)和146(4)中。
图6是图示根据一些实施方式的使用分布式消息传递队列来更新本地高速缓存的示例过程的流程图。该过程被图示为逻辑流程图中的框的集合,其表示操作序列,其中的一些或全部可以用硬件、软件或其组合来实施。在软件的上下文中,框可以表示存储在一个或多个计算机可读介质上的计算机可执行指令,当由一个或多个处理器执行时,所述计算机可执行指令对处理器进行编程以执行所述操作。通常,计算机可执行指令包括执行特定功能或实施特定数据类型的例程、程序、对象、部件、数据结构等。描述框的顺序不应被解释为限制。可以以任何顺序和/或并行地组合任何数量的所描述的框以实施该过程或替代过程,并且不需要执行所有框。为了讨论的目的,参考本文中的示例中描述的环境、框架和***来描述过程,但是过程可以在各种其他环境、框架和***中实施。在图6中,过程600可以至少部分地由执行服务程序212、218或220中的一个或多个的客户端节点来执行。
在602处,服务计算设备可以跨多个数据库节点对数据库进行划分,以提供跨多个数据库节点分布的多个分区。
在604,客户端节点可以执行服务,该服务维持在数据库中维持的信息的子集的本地高速缓存。
在606,客户端节点可以从用户计算设备接收第一请求,该第一请求影响数据库中的数据。例如,客户端节点可以接收将改变数据库中的数据的写入请求或其他请求。
在608处,客户端节点可以基于第一请求向多个数据库节点中的第一数据库节点发送第二请求,该第二请求引起第一数据库节点改变数据库中的数据。
在610,客户端节点可以从多个分布式消息队列中的一个消息队列接收基于对数据库中的数据的改变的高速缓存更新消息。
在612,客户端节点可以确定所接收的高速缓存更新消息是否包括更新数据。如果是,则该过程转到614。如果不是,则该过程转到616。
在614,客户端节点可以更新本地高速缓存以包括高速缓存更新消息中包括的更新数据。
在616处,客户端节点可以响应于高速缓存更新消息而使本地高速缓存的至少一部分无效。
在618,客户端节点可以从用户计算设备接收访问与数据库中的数据相对应的数据的第三请求。
在620处,客户端节点可以向多个数据库节点中的至少一个数据库节点发送查询,以确定来自数据库的与第三请求相关的信息。
在622,客户端节点可以至少部分地基于从数据库节点接收的对查询的响应来更新本地高速缓存。
本文描述的示例过程仅是为讨论目的而提供的过程的示例。鉴于本文中的公开内容,许多其他改变对于本领域技术人员而言是显而易见的。此外,虽然本文中的公开内容阐述了用于执行过程的合适框架、架构和环境的若干示例,但是本文中的实施方式不限于所示出和讨论的特定示例。此外,本公开提供了各种示例实施方式,如所描述的并且如附图中所示。然而,本公开不限于本文描述和示出的实施方式,而是可以扩展到其他实施方式,如本领域技术人员将会知晓或本领域技术人员将会变得知晓。
图7图示了可以用于实施本文描述的***的至少一些功能的(一个或多个)服务计算设备102的选定示例部件。(一个或多个)服务计算设备102可以包括可以以任何数量的方式体现的一个或多个服务器或其他类型的计算设备。例如,在服务器的情况下,程序、其他功能部件和数据可以在单个服务器、服务器集群、服务器群或数据中心、云托管的计算服务等上实施,但是可以附加地或替代地使用其他计算机架构。多个服务计算设备102可以一起或分开地定位,并且例如被组织为虚拟服务器、服务器库、和/或服务器群。所描述的功能可以由单个实体或企业的服务器提供,或可以由多个不同实体或企业的服务器和/或服务提供。
在所图示的示例中,(一个或多个)服务计算设备102包括一个或多个处理器702、一个或多个计算机可读介质704和一个或多个通信接口706,或可以与一个或多个处理器702、一个或多个计算机可读介质704和一个或多个通信接口706相关联。每个处理器702可以是单个处理单元或多个处理单元,并且可以包括单个或多个计算单元或多个处理核。(一个或多个)处理器702可以被实施为一个或多个中央处理单元、微处理器、微计算机、微控制器、数字信号处理器、状态机、逻辑电路和/或基于操作指令操纵信号的任何设备。作为一个示例,(一个或多个)处理器702可以包括被专门编程或配置为执行本文描述的算法和过程的任何合适类型的一个或多个硬件处理器和/或逻辑电路。(一个或多个)处理器702可以被配置为获取和执行存储在计算机可读介质704中的计算机可读指令,其可以对(一个或多个)处理器702进行编程以执行本文描述的功能。
计算机可读介质704可以包括以用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何类型的技术实施的易失性和非易失性存储器和/或可移动和不可移动介质。例如,计算机可读介质704可以包括但不限于RAM、ROM、EEPROM、闪速存储器或其他存储器技术、光学存储设备、固态存储设备、磁带、磁盘存储设备、存储阵列、网络附接存储设备、存储区域网络、云存储设备或可以用于存储期望的信息并且可以由计算设备访问的任何其他介质。取决于(一个或多个)服务计算设备102的配置,计算机可读介质704可以是有形非瞬态介质,只要非瞬态计算机可读介质在被提及时排除诸如能量、载波信号、电磁波、和/或信号本身之类的介质。在一些情况下,计算机可读介质704可以与服务计算设备102处于相同的位置,而在其他示例中,计算机可读介质704可以部分地远离服务计算设备102。例如,在一些情况下,计算机可读介质704可以包括上面关于图1讨论的(一个或多个)网络存储***104中的存储的一部分。
计算机可读介质704可以用于存储可由(一个或多个)处理器702执行的任何数量的功能部件。在许多实施方式中,这些功能部件包括可由(一个或多个)处理器702执行并且在被执行时具体地对(一个或多个)处理器702进行编程以执行在本文中归属于服务计算设备102的动作的指令或程序。存储在计算机可读介质704中的功能部件可以包括用户web应用116、管理web应用124、存储程序130、数据库管理程序138、节点管理程序148和消息传递程序150,其中的每一个可以包括一个或多个计算机程序、应用、可执行代码或其部分。此外,虽然在该示例中一起图示了这些程序,但是在使用期间,这些程序中的一些或全部可以在单独的服务计算设备102上执行。
另外,计算机可读介质704可以存储用于执行本文描述的功能和服务的数据、数据结构和其他信息。例如,计算机可读介质704可以存储包括数据库分区134的元数据数据库132。另外,计算机可读介质可以存储(一个或多个)本地高速缓存146。此外,虽然在该示例中一起图示了这些数据结构,但是在使用期间,这些数据结构中的一些或全部可以存储在单独的服务计算设备102上。服务计算设备102还可以包括或维持其他功能部件和数据,所述其他功能部件和数据可以包括程序、驱动程序等、以及由这些功能部件使用或生成的数据。此外,服务计算设备102可以包括许多其他逻辑、编程和物理部件,其中以上描述的那些部件仅仅是与本文中的讨论相关的示例。
一个或多个通信接口706可以包括用于诸如通过一个或多个网络106实现与各种其他设备的通信的一个或多个软件和硬件部件。例如,(一个或多个)通信接口706可以实现通过LAN、互联网、电缆网络、蜂窝网络、无线网络(例如,Wi-Fi)和有线网络(例如,光纤信道、光纤、以太网)、直接连接中的一个或多个的通信、以及诸如等的近距离通信,如本文其他地方另外列举的。
本文描述的各种指令、方法和技术可以在计算机可执行指令(诸如存储在计算机可读介质上并由本文中的(一个或多个)处理器执行的计算机程序和应用)的一般背景下考虑。通常,术语程序和应用可以互换使用,并且可以包括用于执行特定任务或实施特定数据类型的指令、例程、模块、对象、部件、数据结构、可执行代码等。这些程序、应用等可以作为本机代码执行,或可以下载并执行,诸如在虚拟机或其他即时编译执行环境中。通常,程序和应用的功能可以在各种实施方式中根据需要组合或分布。这些程序、应用和技术的实施方式可以存储在计算机存储介质上或通过某种形式的通信介质传输。
尽管以结构特征和/或方法动作特定的语言描述了本主题,但应理解,所附权利要求书中定义的主题不必限于所描述的具体特征或动作。而是,公开了具体特征和动作作为实施权利要求的示例形式。
Claims (15)
1.一种***,包括:
第一计算设备,所述第一计算设备能够与多个数据库节点通信,每个数据库节点基于数据库的分区来维持所述数据库的一部分以使所述数据库跨所述多个数据库节点进行分布,所述第一计算设备维持所述数据库中维持的信息的子集的本地高速缓存,所述第一计算设备由可执行指令配置为执行包括以下的操作:
由所述第一计算设备从第二计算设备接收第一请求,所述第一请求影响所述数据库中的数据;
由所述第一计算设备基于所述第一请求向所述多个数据库节点中的第一数据库节点发送第二请求,所述第二请求引起所述第一数据库节点改变所述数据库中的数据;
由所述第一计算设备基于对所述数据库中的所述数据的所述改变从多个分布式消息队列中的消息队列接收高速缓存更新消息;以及
由所述第一计算设备基于所述高速缓存更新消息来更新所述本地高速缓存。
2.根据权利要求1所述的***,其中:
接收所述高速缓存更新消息包括接收作为对所述数据库中的所述数据的所述改变而添加到所述数据库的更新的元数据;并且
基于所述高速缓存更新消息来更新所述本地高速缓存包括更新所述本地高速缓存以包括所更新的元数据。
3.根据权利要求1所述的***,其中基于所述高速缓存更新消息来更新所述本地高速缓存包括使所述本地高速缓存的至少一部分无效。
4.根据权利要求1所述的***,所述操作还包括根据高级消息排队协议接收所述高速缓存更新消息。
5.根据权利要求1所述的***,其中所述***包括多个消息传递节点,并且所述多个分布式消息队列分别由所述多个消息传递节点提供。
6.根据权利要求1所述的***,其中:
所述第一数据库节点被配置为包括对所述数据库中的所述数据的所述改变的数据类型,并且
所述多个分布式消息队列中的所述消息队列被配置为至少基于确定所述本地高速缓存包括所述数据类型来将所述高速缓存更新消息路由到所述第一计算设备。
7.根据权利要求1所述的***,其中所述第一计算设备在所述第一计算设备上执行第一服务,所述第一服务维持所述本地高速缓存,其中所述第一服务使得第二计算设备能够访问存储在与所述数据库相对应的存储***中的数据。
8.根据权利要求7所述的***,其中所述第一服务是以下中的一个:
用户web应用;或
管理web应用。
9.根据权利要求1所述的***,其中所述第一请求是对于将数据存储在与所述数据库相关联的存储***处的数据写入请求。
10.根据权利要求1所述的***,其中基于所述高速缓存更新消息来更新所述本地高速缓存包括使所述本地高速缓存的至少一部分无效,所述操作还包括:
从所述第二计算设备接收第三请求;
确定所述本地高速缓存的至少所述部分被无效;以及
向所述多个数据库节点中的至少一个数据库节点发送查询,以从所述数据库确定与所述第三请求相关的信息。
11.根据权利要求10所述的***,还包括基于从所述至少一个数据库节点接收到响应,向另一计算设备发送元数据信息以通过网络从远程存储***获得数据。
12.一种方法,包括:
由第一计算设备从第二计算设备接收第一请求,其中所述第一计算设备能够与多个数据库节点通信,每个数据库节点基于数据库的分区来维持所述数据库的一部分以使所述数据库跨所述多个数据库节点进行分布,所述第一计算设备维持所述数据库中维持的信息的子集的本地高速缓存;
由所述第一计算设备基于所述第一请求向所述多个数据库节点中的第一数据库节点发送第二请求,所述第二请求引起所述第一数据库节点改变所述数据库中的数据;
由所述第一计算设备基于对所述数据库中的所述数据的所述改变从多个分布式消息队列中的消息队列接收高速缓存更新消息;以及
由所述第一计算设备基于所述高速缓存更新消息来更新所述本地高速缓存。
13.根据权利要求12所述的方法,其中:
接收所述高速缓存更新消息包括接收作为对所述数据库中的所述数据的所述改变而添加到所述数据库的更新的元数据;并且
基于所述高速缓存更新消息来更新所述本地高速缓存包括更新所述本地高速缓存以包括所更新的元数据。
14.存储指令的一个或多个非瞬态计算机可读介质,所述指令在由一个或多个处理器执行时将所述一个或多个处理器配置为执行包括以下的操作:
由第一计算设备从第二计算设备接收第一请求,其中所述第一计算设备能够与多个数据库节点通信,每个数据库节点基于数据库的分区来维持所述数据库的一部分以使所述数据库跨所述多个数据库节点进行分布,所述第一计算设备维持所述数据库中维持的信息的子集的本地高速缓存;
由所述第一计算设备基于所述第一请求向所述多个数据库节点中的第一数据库节点发送第二请求,所述第二请求引起所述第一数据库节点改变所述数据库中的数据;
由所述第一计算设备基于对所述数据库中的所述数据的所述改变从多个分布式消息队列中的消息队列接收高速缓存更新消息;以及
由所述第一计算设备基于所述高速缓存更新消息来更新所述本地高速缓存。
15.根据权利要求14所述的一个或多个非瞬态计算机可读介质,其中:
接收所述高速缓存更新消息包括接收作为对所述数据库中的所述数据的所述改变而添加到所述数据库的更新的元数据;并且
基于所述高速缓存更新消息来更新所述本地高速缓存包括更新所述本地高速缓存以包括所更新的元数据。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2020/044705 WO2022031259A1 (en) | 2020-08-03 | 2020-08-03 | Cache updates through distributed message queues |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116134435A true CN116134435A (zh) | 2023-05-16 |
Family
ID=80118426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080104292.7A Pending CN116134435A (zh) | 2020-08-03 | 2020-08-03 | 通过分布式消息队列的高速缓存更新 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230289347A1 (zh) |
EP (1) | EP4189620A4 (zh) |
JP (1) | JP2023536609A (zh) |
CN (1) | CN116134435A (zh) |
WO (1) | WO2022031259A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7500020B1 (en) * | 2003-12-31 | 2009-03-03 | Symantec Operating Corporation | Coherency of replicas for a distributed file sharing system |
US8438337B1 (en) * | 2009-09-30 | 2013-05-07 | Netlogic Microsystems, Inc. | System and method for conditionally sending a request for data to a home node |
US10747746B2 (en) * | 2013-04-30 | 2020-08-18 | Amazon Technologies, Inc. | Efficient read replicas |
US9549040B2 (en) * | 2014-03-12 | 2017-01-17 | Instart Logic, Inc. | First cache purge optimization handling of unavailable nodes |
-
2020
- 2020-08-03 CN CN202080104292.7A patent/CN116134435A/zh active Pending
- 2020-08-03 JP JP2023507346A patent/JP2023536609A/ja active Pending
- 2020-08-03 EP EP20948065.6A patent/EP4189620A4/en active Pending
- 2020-08-03 US US18/015,355 patent/US20230289347A1/en active Pending
- 2020-08-03 WO PCT/US2020/044705 patent/WO2022031259A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022031259A1 (en) | 2022-02-10 |
US20230289347A1 (en) | 2023-09-14 |
EP4189620A4 (en) | 2024-03-20 |
JP2023536609A (ja) | 2023-08-28 |
EP4189620A1 (en) | 2023-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7270755B2 (ja) | 分散システムでのメタデータルーティング | |
US10834191B2 (en) | Collaboration data proxy system in cloud computing platforms | |
US9053167B1 (en) | Storage device selection for database partition replicas | |
US9465819B2 (en) | Distributed database | |
CN104580226A (zh) | 一种共享会话数据的***和方法 | |
CN109739435A (zh) | 文件存储和更新方法及装置 | |
CN107992270B (zh) | 一种多控存储***全局共享缓存的方法及装置 | |
US12026177B2 (en) | Dynamic adaptive partition splitting | |
WO2012136828A1 (en) | Multi-user cache system | |
US20240176762A1 (en) | Geographically dispersed hybrid cloud cluster | |
US20230289347A1 (en) | Cache updates through distributed message queues | |
US20230283663A1 (en) | Randomization of heartbeat communications among multiple partition groups | |
JP7515693B2 (ja) | 複数のパーティショングループ間のハートビート通信のランダム化 | |
US20240160606A1 (en) | Hybrid cloud event notification management | |
US20220391409A1 (en) | Hybrid cloud asynchronous data synchronization | |
JP2014146144A (ja) | クォータ管理機能付ファイルシステム、クォータ管理方法およびクォータ管理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |