CN102057366A - 分布式高速缓存安排 - Google Patents

分布式高速缓存安排 Download PDF

Info

Publication number
CN102057366A
CN102057366A CN2009801224717A CN200980122471A CN102057366A CN 102057366 A CN102057366 A CN 102057366A CN 2009801224717 A CN2009801224717 A CN 2009801224717A CN 200980122471 A CN200980122471 A CN 200980122471A CN 102057366 A CN102057366 A CN 102057366A
Authority
CN
China
Prior art keywords
speed cache
data
computer implemented
assembly
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.)
Granted
Application number
CN2009801224717A
Other languages
English (en)
Other versions
CN102057366B (zh
Inventor
M·克里希纳普拉塞德
A·K·诺瑞
S·穆拉利达
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102057366A publication Critical patent/CN102057366A/zh
Application granted granted Critical
Publication of CN102057366B publication Critical patent/CN102057366B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及经由分层安排将多个计算机的存储器容量聚集成单个统一的高速缓存的系统和方法。这样的分层安排可伸缩到多个机器,并包括能够以模块化的方式实现的数据管理器组件、对象管理器组件和分布式对象管理器组件。此外,该分层安排可以提供应用程序知道的显式高速缓存层(例如,高速缓存旁侧(cache-aside)体系结构),其中显式地作出在这些应用程序中放置/移除哪些对象的决定(与其中应用程序不知道高速缓存的存在的隐式高速缓存形成对比)。

Description

分布式高速缓存安排
背景
计算机技术(例如,微处理器速度、存储器容量、数据传输带宽、软件功能等)的逐渐进步一般有助于各行业中的计算机应用的增长。通常提供常被配置为服务器阵列的甚至更强大的服务器系统来服务源自诸如万维网等外部源的请求。
通常,计算机系统中的一个持续存在的问题仍是处理不断增长的可用信息或数据量。以某种形式存储在数据库的盘或其他介质上的纯粹的信息量显著地增大。在几十年之前文件和盘是以数千字节度量的—当时是数百万字节(兆字节),接下来是数十亿字节(GB)—而现在,正在创建百万兆字节(万亿字节)和甚至数十亿兆字节的数据库,并将它们用于日常的活动中。
此外,各种形式的存储设备允许信息保留相对较长的时间,而不会有信息退化。一种常见的存储介质是闪存;具体而言,闪存是保留信息而不利用恒定电源的非易失性形式的存储器。这种类型的存储器常常用于各种消费电子产品中,如存储器卡、通用串行总线(USB)、闪速驱动器、个人数据助理(PDA)、数字音频播放器、数码相机、移动电话等等。
另一种常见类型的非易失性存储介质是磁盘,磁盘使信息能根据磁化模式来记录。类似于其他存储介质,磁盘能够以各种方式来配置(例如,磁阻随机存取存储器)以及用于许多不同应用。这种类型的存储设备通常与数据库和模拟记录结合起来使用。同样,还存在易失性形式的存储,该存储提供也可以伴随有特定缺点的某些优点。例如,易失性介质的检索时间一般比非易失性介质的检索时间更快,并且由于明确建立的标准,许多操作具有提高的统一性。
此外,当今应用程序在不同层上、在不同服务边界中,以及在不同平台(例如,服务器、台式机、设备)上运行。例如,在典型的web应用程序中,许多应用程序驻留在支持大量用户的服务器上;然而,应用程序的某些客户机组件可以在台式机、移动设备以及web浏览器等上运行。此外,连接的进步和便宜的存储与软件管理的复杂性相结合促进了在线服务和软件即服务。在这样的服务模型中,应用程序(和相关联的数据)通常被主存在中央数据中心(有时也称为“云”)中,并可通过web访问和共享。
分布式应用程序要求支持大量用户、高性能、吞吐量和响应时间。这样的服务方向也要求服务成本低,从而要求低成本的可伸缩性和性能。
实现存储系统的另一挑战是对数据和应用程序的分布和不均匀性的支持。应用程序正在从可以是本地的,联合的,或基于云的源创作(例如,混搭)数据和业务逻辑。复合应用程序需要以最适合该应用程序的形式形成聚集数据。数据和逻辑共享也是复合应用程序中的重要要求。
如前面所说明的,数据和应用程序可以驻留在具有不同语义和访问模式的不同层上。例如,后端服务器/群集或云中的数据往往是权威性的;导线上的数据是面向消息的;中层中的数据是出于性能考虑的高速缓存数据或者应用程序会话数据;设备上的数据可以是本地数据或从后端源高速缓存的数据。随着存储器成本的不断下降,可以在台式机和服务器机器上配置相当大的高速缓存。随着64位硬件的成熟,对于客户机和服务器机器,64位CPU正在成为主流。真正的64位体系结构支持64位CPU,数据或地址总线,虚拟可寻址性,并显著地增加存储器极限(至字节)。操作系统(例如,Windows,Linux)也被升级,以支持并利用64位地址空间和大存储器。例如,台式机可以配置有16GBRAM,而服务器可以配置有高达2TB的RAM。较大的存储器高速缓存允许数据靠近应用程序,从而给应用程序提供显著的性能好处。另外,在其中几百个GB的存储是普通的世界中,在存储器(大高速缓存)中处理大多数数据以及容易地从表转移到树到对象图是用于下一代应用程序的程序员生产率的关键。
概述
以下提出了简化概述以便提供对在此描述的某些方面的基本理解。此小结不是所要求保护的主题的详尽的概述。它既不旨在标识出所要求保护的主题的关键或重要的要素,也不描绘其范围。其唯一的目的是以简化形式呈现一些概念,作为稍后呈现的更详细描述的序言。
本发明允许将多个计算机的存储器容量聚集成单个统一的高速缓存中,该高速缓存可以经由分层安排伸缩(例如,动态伸缩)到多个机器。这样的分层安排可以高速缓存任何可串行化的公共语言运行时(CLR)对象,并通过简单的高速缓存应用程序编程接口(API)来提供访问。该分层安排包括能够以模块化的方式实现的数据管理器组件、对象管理器组件和分布式对象管理器组件。一方面,数据管理器组件提供基本数据功能(例如,散列函数),而对象管理器组件在其上实现包括高速缓存对象的对象立面-而分布式对象管理器在分布式高速缓存中提供数据分布。由此,对象管理器组件可以将区域映射到容器,并管理数据驱逐阈值,并为高速缓存的数据提供策略管理。这样的区域可以表示高速缓存容器,这些高速缓存容器通常保证放置/插入在容器中的对象的共同位置(例如,同一节点中的对象的共同位置)。另外,对象管理器组件可以为分布式高速缓存的各个区域或对象引发通知(例如,由于对高速缓存的数据作出的变更)。同样,分布式对象管理器组件可以将请求分派到与分布式高速缓存的不同区域相关联的各个节点。此外,对于给定请求,这样的分布式对象管理器与分布式高速缓存的分区地图接口;并方便将分布式环境中的聚集的高速缓存抽象到单个统一的高速缓存。一方面,分布式对象管理器组件位于对象管理器组件之上,而对象管理器组件本身位于数据管理器组件之上。此外,可以提供与ASP.NET的紧密集成,以允许在高速缓存中高速缓存ASP.NET会话数据,而不必将这些数据写入到源数据库。
这提供可以容易地适应用户需求的可插入功能(例如,基于用户要求来将数据管理器组件替换为另一种类型。)同样,可以用另一对象管理器组件来替换对象管理器组件,其中通过在整个栈中的回调期间启用具有保持锁的回调机制来允许在分层安排中插入不同模型。
在一相关方面,本发明的分层安排提供方便不同层和通信衬底(例如,TCP/IP)上的操作的模块化安排,并且该模块化安排可以用两种拓扑模型来实现,即实现为独立分离层模型或嵌入式应用程序模型。在独立并且分离的层模型中,高速缓存层本身充当独立分离层(可以位于应用程序服务器和数据服务器之间)。例如,在这样的配置中,分布式高速缓存作为由Windows激活服务(WAS)或者窗口服务主存的服务来运行,并与应用程序分开运行。应用程序可以采用由分布式高速缓存提供的客户机占位程序来交谈,或者通过直接到服务中的代表性状态传输(REST)API。
或者,在嵌入式应用程序模型中,高速缓存可以与应用程序本身嵌入在一起(例如,将应用程序连接在一起以形成群集—如将高速缓存嵌入在ASP.net实例中以形成ASP.net机器的群集,其中在将项目存储在本地高速缓存中后,可以从其他机器查看该项目。)这样,还可以允许从功能观点对对象进行标记和语言集成查询(LINQ)查询。然后,LINQ查询可以在存储的对象上本机地运行;并且(可以嵌入在.Net应用程序中)。
为实现上述及相关目的,在此结合以下描述和附图描述了所要求保护的主题的某些说明性方面。这些方面指示可实践本主题的各种方式,它们均落在所要求保护的主题的范围之内。当结合附图阅读以下详细描述时,本发明的其他优点和新颖特征将变得显而易见。
附图简述
图1示出了根据本发明的一方面的示例性分层安排。
图2示出了根据本发明的一示例性方面的涉及独立分离层模型实现的分层安排的另一拓扑模型。
图3示出了涉及嵌入式应用程序模型的分层安排的拓扑模型。
图4示出了根据本发明的一特定方面的包括部署在多个机器上的运行时环境的分布式高速缓存。
图5示出了根据本发明的一方面的分布高速缓存的特定方法。
图6示出了根据本发明的一方面的实现用于分布式高速缓存的分层安排的另一种方法。
图7示出了根据另一方面的统一高速缓存视图的示例性图示。
图8示出了根据本发明的一方面的可以用来方便推断和/或确定何时、在哪里,如何在分布式环境中高速缓存数据的人工智能(AI)组件。
图9示出了用于实现本发明的各方面的示例性环境。
图10是根据本发明的一方面的可以用于分布高速缓存的示例计算环境的示意性框图。
详细描述
现在将参考附图描述本发明的各方面,全部附图中相同的标号指的是相同或相应的元素。然而应该了解,附图及其相关详细描述不旨在将所要求保护的主题限于所公开的具体形式。相反,其意图是覆盖落在所要求保护的主题的精神和范围内的所有修改、等效和替换方案。
图1示出了根据本发明的一方面的可以将多个计算机的存储器容量聚集成单个统一的高速缓存的示例性分层安排。这样的分层安排100提供可以针对诸如TCP/IP之类的不同类型的通信层定制的可伸缩系统,以及可以为容易地适应用户需求而进一步启用的可插入功能。实现分层安排100的分布式高速缓存可以通过将附加计算机作为节点添加到机器群集来随着与其相关联的应用程序的增长动态地伸缩其本身。如图1所示,在高速缓存节点131,133(1到n,n是整数)上,包括数据管理器组件110、对象管理器组件112和分布式对象管理器组件114的分层安排100—以模块化的方式实现的设置—其中分布式对象管理器组件114位于对象管理器组件112之上,而对象管理器组件112本身位于数据管理器组件110之上。数据管理器组件110提供基本数据功能(例如,散列函数),而对象管理器组件112在其上实现包括高速缓存对象的对象立面,且分布式对象管理器组件114提供分布。由此,对象管理器组件112和数据管理器组件110可以充当本地实体,其中分布式对象管理器组件114执行分布。此外,群集衬底可以在构成单个统一高速缓存的多个节点之间建立群集协议。例如,当一个节点将加入或离开群集时,管理加入或离开群集的所需的操作,其中分布式组件可用性衬底可以使用这样的信息来管理操作(例如,监视节点的健康状况,管理节点的生命周期,在另一机器上创建主节点)。另外,对于每一个节点,基于用户需求,系统要求等,形成分层安排的每一个组件都可以是可插入的。
如前面所说明的,数据管理器组件110(例如,存储器中)提供诸如散列表、Btree(二叉树)之类的基本高性能数据结构。由于这样的数据管理器110是受存储器限制的,并且本发明的分布式高速缓存的所有操作都是原子的,因此它通常可以实现高度并发散列表。这进一步促进了创建用于提供容器和对容器的索引的基础结构。另外,它提供了对这些散列结构的简单驱逐和期满。可以理解,由于由分层安排100所提供的可插入功能,用户可以插入针对用户要求定制的不同类型的数据管理器,诸如事务数据管理器或盘分页数据管理器等等。同样,对象管理器组件112提供对象抽象,并通过使用由数据管理器提供的数据结构来实现已命名的高速缓存和区域的概念。
类似地,分布式对象管理器组件114使用本地对象管理器并与分布式组件111集成,以提供分布式高速缓存的抽象。本发明的分布式高速缓存的核心是分布式组件/可用性衬底111,其提供传输和数据一致性操作以使系统变得可伸缩且可用。对象分布组件可任选地被实现为客户机层的一部分,以方便将请求分派(例如,直接)到与单个统一高速缓存相关联的节点。
在一特定方面,分布式对象管理器组件114还可以包括分派管理器组件117和分布式管理器组件119。分派管理器组件117还可以查找路由表,以将请求分派到作为可动态伸缩分布式高速缓存的一部分的主节点(例如,一个区域位于那里)。此外,这样的分派管理器组件117也可以存在于客户机中,以使得客户机可以将请求直接分派到主节点。例如,接收节点上的分布式对象管理器111可以与分区图进行交互,以检查节点是否的确被指定为作为与分布式高速缓存相关联的多个节点的一部分的主节点,并调用对象管理器组件114来执行该操作。在写操作的情况下,这样的分布式对象管理器组件114也可以与复制器进行通信,以将数据复制到副节点。它也可以与故障转移管理器系统(未示出)进行交互,以克隆区域以便在可能的故障之后的重新配置过程期间创建新的副或主节点。
对象管理器组件112还可以包括跟踪对区域和对象的改变并将通知中继到监听那些事件的代表的通知管理组件123。此外,应用程序也可以注册代表以便在可以不同于对象驻留在其上的主节点的任何节点上接收通知。分布式对象管理器组件114还可以按分布式方式管理通知的传播,包括当主节点发生故障时为这样的通知提供高可用性。例如,可以通过在应用程序在其上注册代表的节点上维护按代表id索引的本地查找表,来对此进行处理。存储对象的主节点维护代表id和始发节点信息。当这样的对象在分布式对象管理器组件114中改变时,主节点可以通知传递代表id的所有始发节点。
类似地,与接收者相关联的分布式对象管理器组件114可以使用查找表来调用适当的代表,由此以分布式方式将变更信息提供给应用程序。例如,通知可以是异步的,并且还可以使用相同的副节点来进行备份。因此,在发生故障的情况下,副节点尝试提供待决通知,其中在主节点发生故障期间可以重新发送通知—因为在发生故障之前主节点可能还没有同步关于所传递的通知的信息。由于所有通知都携带区域、密钥和版本信息,因此应用程序可以使用版本来忽略重复的通知。
示例—区域级回调
    public delegate CacheCallback
    elec_cbk=new CacheCallback(myclass.handler);
    catalog.addCallback(″ElectronicsRegion,″
elec_cbk);
为对区域的任何更新调用的回调
示例—对象级回调
public delegate CacheItemRemovedCallback
elec_cbk=new CacheItemRemovedCallback();
//向对象添加回调;将调用elec_cbk代表
//只要对象改变而不管对象存在于哪里
catalog.Add(″ElectronicsRegion,″″key,″object,elec_cbk);
同样,可用性衬底111向包含与本发明的分布式高速缓存相关联的存储组件的系统提供可伸缩性和可用性。例如,可用性衬底可包括负载平衡器、故障转移管理器、复制器等等。与这样的可用性衬底111进行交互的是通信衬底109,其提供对节点的故障检测以及节点之间的可靠的消息传递。此外,通信衬底109提供通信信道和群集管理。只要一新节点加入群集或者一节点死亡或不能响应交换的消息(例如,心搏消息)时,这样的通信衬底109可以提供回调。此外,通信衬底109可以提供高效的点对点和多播传递信道,并且还可以提供实现复制协议所需的可靠的消息传递。例如,通信衬底109通过在高速缓存项目中维护代表信息并当项目被修改时触发通知来支持通知。这样的组件还基于在区域或已命名的高速缓存级别定义的策略来触发驱逐。
图2和图3示出了两种拓扑模型,即分别为独立分离层模型,以及嵌入式应用程序模型。根据一特定方面,在图2的独立且分离层模型中,高速缓存层220本身充当独立分离层(其可以位于应用服务器和数据服务器之间)。例如,在这样的配置中,分布式高速缓存作为由WAS或者窗口服务主存的服务来运行,并与应用程序分开运行。应用程序201,203,205(1到m,m是整数)可以使用由分布式高速缓存提供的客户机占位程序来交谈,或者通过直接到服务中的代表性状态传输(REST)API。
或者,在嵌入式应用程序模型中,高速缓存可以嵌入到应用程序本身中,如图3所示。这可以通过将应用程序310,312,314(1到k,k是整数)连接在一起以形成群集来发生;例如,将高速缓存嵌入在ASP.net实例中,以形成ASP.net机器的群集,其中在将一个项目存储在本地高速缓存中后,可以从其他机器查看该项目。例如,分布式高速缓存运行时dll与应用程序一起编译,并且应用程序充当分布式高速缓存运行时环境的高速缓存主机。所有线程池和存储器来自应用程序的容器。
在一相关方面,在一个或多个节点被淹没(inundate)的情况下,负载平衡器302可以动态地将负载重新分布在群集中。例如,可以重新划分数据以将其传播到具有较少负载的节点。所有这样的节点都可以周期性地发送它们的负载作为配置元数据的一部分。负载平衡器302还周期性地查询配置,以确定哪些节点过载并需要进行平衡。例如,分布负载是重新划分主节点上的热数据分区,并将其传播到其副节点中的一个(或多个)。这要求改变配置数据(分区图)并且没有数据移动(因为副节点已经具有数据)。在其他情况下,可能需要将数据分发给其他非副节点,因为副节点本身可能已被加载,且无法处理其他节点。在这样的情况下,副节点(对于这些副节点,此节点是主节点)上的数据分区需要进行进一步的负载平衡;或者可以选择非副节点以分布负载,在这样的情况下,除改变分区图之外,也将需要移动数据。
图4示出了包括部署在来自一群集的多个机器410、411、412(1到m,m是整数)上的运行时环境的分布式高速缓存400。在每一个机器410、411、412上,可以存在也被称为“高速缓存主机”的一个或多个运行时环境。每一个高速缓存主机422、423主存一个或多个已命名的高速缓存。已命名的高速缓存可以在分布式高速缓存配置文件中配置。此外,已命名的高速缓存可以在该群集中的所有机器或机器子集中传播。另外,在每一个已命名的高速缓存内,可以存在一个或多个区域433。这样的区域可由分布式高速缓存来隐式地创建,或可由应用程序来显式地定义。一般而言,区域433中的所有项目可以被保证位于高速缓存主机上的同处。对于诸如查询及其他设置操作之类的操作区域中的多个项目的操作,这可以提高性能。此外,区域所在的节点可以被视为该区域的主节点,其中对此区域的访问通常将被路由到该区域的主节点。如果已命名的高速缓存被配置成具有“备份”以取得高可用性,则选择一个或多个其他节点以包含此数据的副本。这样的节点被称为该区域的副节点。对主节点作出的所有变更也都反映在这些副节点上。由此,如果一个区域的主节点发生故障,则可以使用副节点来检索数据,而不必将日志写入到盘中。
下面是示出已命名的高速缓存和区域的创建的代码示例。
//CacheFactory(高速缓存工厂)类提供返回高速缓存对象的方法
//创建cachefactory(reads appconfig)的实例
CacheFactory fac=new CacheFactory();
//从该工厂获取已命名的高速缓存
Cache catalog=fac.GetCache(″catalogcache″);
//-------------------------------------------------------
//简单的Get/Put
catalog.Put(″toy-101,″new Toy(″thomas,″.,.));
//来自相同或不同的客户机
Toy toyObj=(Toy)catalog.Get(″toy-101″);
//
------------------------------------------------------
//基于区域的Get/Put
catalog.CreateRegion(″toyRegion″);
//toy和toyparts两者都被放置在相同的区域中
catalog.Put(″toyRegion,″″toy-101,″new Toy(.,.));
Catalog.Put(″toyRegion,″″toypart-100,″newToyParts(…));
Toy toyObj=(Toy)catalog.Get(″toyRegion,″″toy-101″);
图5示出了根据本发明的又一方面的分布高速缓存的相关方法500。虽然该示例性方法此处被示出并描述为表示各种事件和/或动作的一系列框,但本发明并不受所示出的这些框的排序的限制。例如,根据本发明,除了在此示出的次序之外,某些动作或事件可以按不同的次序发生和/或与其他动作或事件同时发生。此外,不是所有示出的框、事件或动作都是实施根据本发明的方法所必需的。此外,将会认识到根据本发明的该示例性方法和其他方法可以与在此图示并描述的方法相关联地实现,也可与未示出或描述的其他系统和装置相关联地实现。最初在510处,可以标识对系统可用的高速缓存,其中这样的高速缓存可以经由分层安排伸缩至多个机器(例如,通过添加新节点来动态伸缩)。随后,在520处,可以将这样的高速缓存聚集成呈现给用户的单个统一高速缓存。在530处,可以将应用程序/数据分布在整个这样的聚集高速缓存中。接下来,在540处,可以取决于应用程序和/或数据的变化的要求来伸缩聚集高速缓存。
图6示出了根据本发明的一方面的经由分层安排来实现分布式高速缓存的相关方法600。最初,在610处,可以提供分层安排,该分层安排包括数据管理器组件、对象管理器组件和分布式对象管理器组件,该社会资可以按模块化方式实现;其中分布式对象管理器组件位于对象管理器组件之上,而对象管理器组件本身位于数据管理器组件之上。
在620处,数据管理器组件提供基本数据功能(例如,散列函数)。同样,在630处,对象管理器组件在其上实现包括高速缓存对象的对象立面,其中分布式对象管理器组件提供分布。由此,对象管理器组件和数据管理器组件可以充当本地实体,其中在640处,分布管理器执行分布。
图7示出了本发明的另一示例性方面,该方面示出了对于分布在各机器进程上的客户机的统一高速缓存视图720。这样的系统700为用于所有种类的数据的显式、分布式,存储器中应用程序高速缓存提供一致性和查询。这样的数据可以驻留在具有不同语义的不同的层中(不同的服务边界中)。例如,存储在后端数据库中的数据是权威性的,并要求高度数据一致性和完整性。
通常,对于任何数据实例,往往存在单个权威性源。中层中的由业务逻辑操作的大多数数据往往是权威性数据的副本。这样的副本适于高速缓存。由此,理解不同类型的数据及其在不同层中的语义定义可能的不同程度的高速缓存。
参考数据
参考数据是权威性数据的一个版本。它或者是原始数据的直接副本(版本),或者从多个数据源聚集并变换。参考数据实际上是不可变的-改变参考数据(或对应的权威性数据)创建参考数据的新版本。即,每一个参考数据版本都是唯一的。参考数据是供高速缓存的候选者;因为参考数据不会变化,所以它可以在多个应用程序(用户)之间共享,从而增大规模和性能。例如,可以考虑跨多个后端应用程序和数据源聚集产品信息的产品目录应用程序。对目录数据的最常见的操作是读取(或浏览);典型的目录浏览操作在大量产品数据上迭代,过滤这些数据,个性化这些数据,并且然后向用户呈现所选数据。基于密钥和基于查询的访问是一种常见形式操作。高速缓存是对于目录访问的关键要求。如果没有被高速缓存,则针对这样的聚集目录的操作要求操作被分解成对底层源的操作,调用底层操作,收集响应,并将结果聚集成内粘响应。对于每一个目录操作,访问大型后端数据集可能是非常昂贵的,并会显著地影响应用程序的响应时间和吞吐量。高速缓存更接近目录应用程序的后端产品数据会显著地提高应用程序的性能和可伸缩性。类似地,聚集的航班时刻表是参考数据的另一示例。参考数据可以从其源,通常以经配置的间隔周期性地刷新,或当权威性数据源变化时刷新。对参考数据的访问,尽管共享,但主要是读取。常常执行本地更新以便进行标记(以更好地组织数据)。为支持大规模,可以在群集中的不同机器上的多个高速缓存中复制参考数据。如上文所提及的,参考数据可以被容易地高速缓存,并可以提供高可伸缩性。
活动数据
活动数据是由当前正在执行的活动作为商业交易的一部分来生成。这样的数据作为商业交易的一部分始发,并最终在商业交易关闭时,它被作为历史(或日志)信息退回到后端数据源。例如,可以考虑在线购物应用程序中的购物车数据。对于每一个在线购物会话,存在有一个独占购物车。在购物会话期间,购物车被高速缓存并利用购买的产品来更新,其中该购物车只对该购物交易可见和可访问。在结账时,一旦进行支付,购物车就被退回(从高速缓存)到后端应用程序以供进一步处理。一旦由后端应用程序处理商业交易,则出于审计(和历史)目的来记录购物车信息。
当购物会话是活动的时候,访问购物车以便读取和写入;然而,它不被共享。活动数据的这种独占访问性质使其适于分布式高速缓存。为支持购物应用程序的较大可伸缩性,购物车可以分布在高速缓存的群集中。由于不共享购物车,一次你可以跨分布式高速缓存划分购物车的集合。通过动态地配置分布式高速缓存,可以控制伸缩程度。
资源数据
参考(共享读取)和活动(独占写入)数据两者都可以被高速缓存。可以理解,并非所有应用程序数据都落入这两个类别。存在由大量事务共享,并发读取和写入并访问的数据。例如,考虑库存管理应用程序,商品的库存具有对商品和当前数量的描述。数量信息是权威性的,易失性的,并由大量用户访问并发访问以便读取/写入。这样的数据被称为资源数据;业务逻辑(例如,订单应用程序逻辑)靠近资源数据(例如,数量数据)运行。资源数据通常存储在后端数据存储中。然而,出于性能原因,它被高速缓存在应用程序层中。尽管将数量数据高速缓存在单个机器上的存储器中可以提供性能增强,但当订单量比较高时,单个高速缓存不能提供可用性或伸缩。因此,数量数据可以跨分布式高速缓存在多个高速缓存中复制。
图8示出了可以用来方便推断和/或确定何时、在哪里,如何伸缩分布式高速缓存和/或在它们之间分发应用程序数据的人工智能(AI)组件830。例如,这样的人工智能组件830可以利用分布式高速缓存管理器来提供附加分析,以改善系统的分布和/或伸缩。如此处所使用的,术语“推断”通常指的是根据经由事件和/或数据捕获的一组观察结果来推出或推断系统、环境、和/或用户状态的过程。可以使用推断来识别特定上下文或操作,也可以生成,例如状态上的概率分布。推断可以是概率性的,即,基于对数据和事件的考虑计算所关注状态的概率分布。推断也可以是指用于从一组事件和/或数据构成较高级别的事件的技术。这样的推断导致从一组观察到的事件和/或存储的事件数据构建新的事件或操作,不管事件在时间上是否紧密相关,以及事件和数据是来自一个还是多个事件和数据源。
AI组件830可采用如上文中结合促进此处所描述的本发明的各方面描述的各种合适的基于AI的方案中的任一种。例如,可以经由自动分类系统和过程来促进用于显式或隐式地学习对怎样的或什么候选者感兴趣过程。分类可采用基于概率和/或基于统计的分析(例如,分解成分析效用和成本)来预测或推断用户期望自动执行的动作。例如,可采用支持向量机(SVM)分类器。可采用其他分类方法,包括贝叶斯网络、决策树、以及提供不同独立性模式的概率分类模型。如这里所使用的分类还包括被用来开发优先级模型的统计回归。
如从本说明书中可以容易地理解的,本发明可以使用显式训练(例如,经由一般训练数据)以及隐式训练(例如,经由观察用户行为、接收外来信息)的分类器,以使得使用分类器来根据预定准则自动确定向问题返回哪一个答案。例如,对于公知的SVM,SVM经由分类器构造器和特征选择模块中的学习或训练阶段来配置。分类器是将输入属性矢量x=(x1,x2,x3,x4,xn)映射到该输入属于一个类的置信度的函数,即f(x)=置信度(类)。此外,还可采用基于规则的机制来进行路由管理器和相关联的路由层的交互(例如,负载平衡、存储器分配等)。
在此使用词语“示例性”意指用作示例、实例或说明。在此被描述为“示例性”的任何方面或设计并不一定要被解释为相比其他方面或设计更优选或有利。类似地,在此提供的示例只是出于清楚和理解的目的并且并不意味着以任何方式限制本发明或其部分。可以理解,本可呈现多个其他或替换示例,但已出于简明的目的而省略了。
此外,本发明的全部或部分可以使用产生控制计算机以实现所公开的发明的软件、固件、硬件或其任意组合的标准编程和/或工程技术而被实现为方法、装置或制品。例如,计算机可读介质可以包括但不限于磁存储设备(例如,硬盘、软盘、磁带……)、光盘(例如,紧致盘(CD)、数字多功能盘(DVD)……)、智能卡和闪存设备(例如,卡、棒、钥匙驱动器……)。另外,应该理解,可以使用载波携带计算机可读的电子数据,如那些在传输和接收电子邮件或在访问诸如因特网或局域网(LAN)之类的网络时所使用的。当然,本领域的技术人员将会认识到,在不背离所要求保护的主题的范围或精神的前提下可以对这一配置进行许多修改。
此外,本发明的全部或部分可以使用产生控制计算机以实现所公开的发明的软件、固件、硬件或其任意组合的标准编程和/或工程技术而被实现为方法、装置或制品。例如,计算机可读介质可以包括但不限于磁存储设备(例如,硬盘、软盘、磁带……)、光盘(例如,紧致盘(CD)、数字多功能盘(DVD)……)、智能卡和闪存设备(例如,卡、棒、钥匙驱动器……)。另外,应该理解,可以使用载波携带计算机可读的电子数据,如那些在传输和接收电子邮件或在访问诸如因特网或局域网(LAN)之类的网络时所使用的。当然,本领域的技术人员将会认识到,在不背离所要求保护的主题的范围或精神的前提下可以对这一配置进行许多修改。
为了对所公开的主题的各个方面提供上下文,图9和10以及以下讨论旨在提供对其中可实现所公开的主题的各方面的合适的环境的简要、概括描述。尽管以上在运行在一台和/或多台计算机上的计算机程序的计算机可执行指令的一般上下文中描述了本主题,但本领域的技术人员将认识到,本发明也可结合其他程序模块实现。
如在本申请中所使用的,术语“组件”、“系统”、“引擎”旨在表示计算机相关的实体,其可以是硬件、硬件和软件的组合、软件、或者执行中的软件。例如,组件可以是但不限于:在处理器上运行的进程、处理器、对象、可执行代码、执行的线程、程序和/或计算机。作为说明,运行在服务器上的应用程序和服务器都可以是组件。一个或多个组件可以驻留在进程和/或执行的线程内,且组件可以位于一台计算机上和/或分布在两台或更多的计算机之间。
一般而言,程序模块包括执行特定任务和/或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。而且,本领域的技术人员可以理解,本发明的方法可用其他计算机系统配置实现,包括单处理器或多处理器计算机系统、小型计算设备、大型计算机、以及个人计算机、手持式计算设备(例如,个人数字助理(PDA)、电话、手表…)、基于微处理器或可编程消费产品或工业电子设备等。所示各方面也可在任务由通过通信网络链接的远程处理设备中执行的分布式计算环境中实现。然而,即使不是本发明的全部方面,至少也有本发明的部分方面可以在独立计算机上实现。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
参考图9,描述了用于实现本发明的各方面的示例性环境910,其包括计算机912。计算机912包括处理单元914、系统存储器916以及系统总线918。系统总线918将系统组件,包括,但不仅限于,系统存储器916耦合到处理单元914。处理单元914可以是各种处理器中的任何一种。也可以使用双微处理器及其他多处理器体系结构作为处理单元914。
系统总线918可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线或外部总线、和/或使用各种可用的总线体系结构中的任一种的局部总线,可用的总线体系结构包括,但不限于,11位总线、工业标准体系结构(ISA)、微通道体系结构(MCA)、扩展ISA(EISA)、智能驱动器电子接口(IDE)、VESA局部总线(VLB)、外围部件互连(PCI)、通用串行总线(USB)、高级图形接口(AGP)、个人计算机存储卡国际协会总线(PCMCIA)以及小型计算机系统接口(SCSI)。
系统存储器916包括易失性存储器920和非易失性存储器922。基本输入/输出系统(BIOS)通常存储在非易失性存储器922中,包含例如在启动过程中帮助在计算机912内的元件之间传输信息的基本例程。作为说明而非限制,非易失性存储器922可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除ROM(EEPROM)或者闪存。易失性存储器920包括充当外部高速缓冲存储器的随机存取存储器(RAM)。作为示例而非限制,RAM以多种形式可用,诸如同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)以及直接存储器总线(Rambus)RAM(DRRAM)。
计算机912还包括可移动的/不可移动的,易失性/非易失性的计算机存储介质。图9示出了盘存储924,其中这一盘存储924包括但不限于诸如磁盘驱动器、软盘驱动器、磁带驱动器、Jaz驱动器、Zip驱动器、LS-60驱动器、闪存卡、或者记忆棒等设备。另外,盘存储924还可包括存储介质,分开地或与其他存储介质相结合,包括,但不仅限于,诸如光盘ROM设备之类的光盘驱动器(CD-ROM)、CD可记录驱动器(CD-R驱动器)、CD可重写驱动器(CD-RW驱动器)或数字多功能盘ROM驱动器(DVD-ROM)。为便于磁盘存储设备924连接到系统总线918,通常使用诸如接口926之类的可移动或不可移动接口。
应该明白,图9描述了在用户和在合适的操作环境910中描述的基本计算机资源之间担当中介的软件。这样的软件包括操作系统928。可以存储在盘存储924上的操作系统928用于控制和分配计算机系统912的资源。系统应用程序930利用由操作系统928通过存储在系统存储器916或者存储在盘存储924上的程序模块932和程序数据934对资源的管理。应该明白,在此描述的各个组件可以用各种操作系统或操作系统的组合来实施。
用户通过输入设备936向计算机912输入命令或信息。输入设备936包括,但不限于,诸如鼠标、轨迹球、指示笔、触摸板之类的指示设备、键盘、麦克风、游戏杆、游戏操纵杆、碟形卫星天线、扫描仪、TV调谐器卡、数码相机、数字摄像机、网络摄像头等等。这些及其他输入设备通过系统总线918经由接口端口938连接到处理单元914。接口端口938包括,例如,串行端口、并行端口、游戏端口以及通用串行总线(USB)。输出设备940与输入设备936使用一些相同类型的端口。如此,例如,可以使用USB端口来向计算机912提供输入,以及从计算机912向输出设备940输出信息。提供输出适配器942是为了示出存在如监视器、扬声器、和打印机以及其他输出设备940等需要特殊适配器的一些输出设备940。输出适配器942包括,作为说明而不是限制,在输出设备940和系统总线918之间提供连接装置的视频卡和声卡。应该注意,其他设备和/或设备的系统提供诸如远程计算机944之类的输入和输出两种功能。
计算机912可以使用到诸如远程计算机944之类的一个或多个远程计算机的逻辑连接,在联网环境中操作。远程计算机944可以是个人计算机、服务器、路由器、网络PC、工作站、基于微处理器的电器、对等设备或其他公共网络节点等等,并通常包括通常包括上文参考计算机912所描述的许多或全部元件。为了简洁起见,与远程计算机944一起,只示出了存储器存储设备946。远程计算机944通过网络接口948在逻辑上连接到计算机912,然后,经由通信连接950在物理上连接。网络接口948涵盖诸如局域网(LAN)和广域网(WAN)这样的通信网络。LAN技术包括光纤分布式数据接口(FDDI)、铜分布式数据接口(CDDI)、以太网/IEEE 802.3、令牌环/IEEE 802.5等。WAN技术包括,但不限于,点对点链路、电路交换网,如综合业务数字网(ISDN)以及其变体,分组交换网络以及数字用户线(DSL)。
通信连接950是指用来将网络接口948连接到总线918的硬件/软件。尽管用于清楚起见通信连接950被示为在计算机912内部,但是,它也可以位于计算机912外部。连接到网络接口948所需的硬件/软件包括,只作示例,内部和外部技术,如,调制解调器,包括常规电话分级调制解调器、电缆调制解调器和DSL调制解调器、ISDN适配器以及以太网网卡。图10是根据本发明的一方面的可用于分布高速缓存的示例计算环境1000的示意性框图。系统1000包括一个或多个客户机1010。客户机1010可以是硬件和/或软件(例如,线程、进程、计算设备)。系统1000还包括一个或多个服务器1030。服务器1030也可以是硬件和/或软件(例如,线程、进程、计算设备)。服务器1030可以容纳各线程以通过例如利用在此描述的各组件执行转换。在客户机1010和服务器1030之间的一种可能的通信能够以适合在两个或更多计算机进程之间传输的数据分组的形式进行。系统1000包括通信框架1050,该通信框架1050可以被用来促进客户机1010和服务器1030之间的通信。客户机1010可在操作上连接至一个或多个客户机数据存储1060,客户机数据存储可用来存储对客户机1010本地的信息。同样地,服务器1030可在操作上连接到可以用来存储对服务器630本地的信息的一个或多个服务器数据存储1040。
以上描述的内容包括各个示例性方面。当然,出于描绘这些方面的目的而描述每一个可以想到的组件或方法的组合是不可能的,但本领域内的普通技术人员应该认识到,许多进一步的组合和排列都是可能的。因此,在此描述的各方面旨在包括所有这些属于所附权利要求书的精神和范围内的改变、修改和变型。此外,就在说明书或权利要求书中使用术语“包括”而言,这一术语旨在以与术语“包含”在被用作权利要求书中的过渡词时所解释的相似的方式为包含性的。

Claims (15)

1.一种包括以下计算机可执行组件的计算机实现的系统:
为与其相关联的应用程序提供显式聚集高速缓存的分层安排(100),所述分层安排包括:
分布式对象管理器组件(114),所述分布式对象管理器组件方便将分布式环境中的显式聚集高速缓存抽象成单个统一高速缓存;以及
对象管理器组件(112),所述对象管理器组件管理与存储在形成所述单个统一高速缓存的节点中的每一个中的对象相关联的策略。
2.如权利要求1所述的计算机实现的系统,其特征在于,还包括为所述对象提供存储数据结构的数据管理器组件。
3.如权利要求2所述的计算机实现的系统,其特征在于,所述分布式对象管理器组件位于所述对象管理器组件之上,而所述对象管理器组件位于所述数据管理器组件之上。
4.如权利要求2所述的计算机实现的系统,其特征在于,每一个节点的所述分布式管理器组件、所述对象管理器组件和通信层是可插入的。
5.如权利要求1所述的计算机实现的系统,其特征在于,还包括在形成所述单个统一高速缓存的节点之间建立群集协议的群集衬底。
6.如权利要求1所述的计算机实现的系统,其特征在于,所述显式聚集高速缓存被实现为嵌入式应用程序拓扑结构的一部分。
7.如权利要求1所述的计算机实现的系统,其特征在于,所述显式聚集高速缓存被实现为独立层的一部分。
8.如权利要求1所述的计算机实现的系统,其特征在于,还包括为所述单个统一高速缓存提供数据一致性操作的可用性衬底。
9.如权利要求1所述的计算机实现的系统,其特征在于,所述显式聚集高速缓存还与ASP.net实例相关联。
10.如权利要求1所述的计算机实现的系统,其特征在于,所述显式聚集高速缓存还包括方便在所述高速缓存上分布数据的人工智能组件。
11.一种包括下列计算机可执行动作的计算机实现的方法:
经由包括对象分布组件和对象管理器组件(112)的分层安排(100)来聚集存储空间以形成单个统一高速缓存;
由所述对象管理器组件(112)来管理与存储在所述单个统一高速缓存中的对象相关联的策略;以及
由所述对象分布组件来将请求分派到与所述单个统一高速缓存相关联的节点。
12.如权利要求11所述的计算机实现的方法,其特征在于,还包括经由负载平衡器来动态地将负载重新分布在与所述单个统一高速缓存相关联的群集上。
13.如权利要求11所述的计算机实现的方法,其特征在于,所述单个统一高速缓存是显式高速缓存层。
14.如权利要求12所述的计算机实现的方法,其特征在于,所述对象分布组件被实现为客户机层的一部分以便于所述分派动作。
15.一种包括下列计算机可执行组件的计算机实现的系统:
用于为相关联的多个应用程序(310、312、314)创建显式聚集高速缓存的装置(100);以及
用于管理来自所述显式聚集高速缓存的数据的驱逐策略的装置(123)。
CN200980122471.7A 2008-06-12 2009-05-15 分布式高速缓存安排 Active CN102057366B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US6101708P 2008-06-12 2008-06-12
US61/061,017 2008-06-12
US12/363,505 2009-01-30
US12/363,505 US8943271B2 (en) 2008-06-12 2009-01-30 Distributed cache arrangement
PCT/US2009/044259 WO2009151874A2 (en) 2008-06-12 2009-05-15 Distributed cache arrangement

Publications (2)

Publication Number Publication Date
CN102057366A true CN102057366A (zh) 2011-05-11
CN102057366B CN102057366B (zh) 2017-08-01

Family

ID=41415831

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980122471.7A Active CN102057366B (zh) 2008-06-12 2009-05-15 分布式高速缓存安排

Country Status (5)

Country Link
US (2) US8943271B2 (zh)
EP (1) EP2288997B1 (zh)
JP (1) JP2012504262A (zh)
CN (1) CN102057366B (zh)
WO (1) WO2009151874A2 (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104219327A (zh) * 2014-09-27 2014-12-17 上海瀚之友信息技术服务有限公司 一种分布式缓存系统
CN104603739A (zh) * 2012-08-30 2015-05-06 微软公司 对并行存储的块级访问
US10114709B2 (en) 2014-02-04 2018-10-30 Microsoft Technology Licensing, Llc Block storage by decoupling ordering from durability
CN108885607A (zh) * 2015-12-08 2018-11-23 乌尔特拉塔有限责任公司 使用容错对象的存储器结构操作和一致性
CN108958719B (zh) * 2018-04-03 2020-08-11 北京航空航天大学 数字飞行器缓冲区信息处理源代码人工智能书写方法
CN111966283A (zh) * 2020-07-06 2020-11-20 云知声智能科技股份有限公司 一种基于企业级超算场景的客户端多级缓存方法及系统
US11231865B2 (en) 2015-06-09 2022-01-25 Ultrata, Llc Infinite memory fabric hardware implementation with router
US11256438B2 (en) 2015-06-09 2022-02-22 Ultrata, Llc Infinite memory fabric hardware implementation with memory
US11269514B2 (en) 2015-12-08 2022-03-08 Ultrata, Llc Memory fabric software implementation
US11422907B2 (en) 2013-08-19 2022-08-23 Microsoft Technology Licensing, Llc Disconnected operation for systems utilizing cloud storage
US11573699B2 (en) 2015-01-20 2023-02-07 Ultrata, Llc Distributed index for fault tolerant object memory fabric
US11579774B2 (en) 2015-01-20 2023-02-14 Ultrata, Llc Object memory data flow triggers

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078813B2 (en) * 2004-09-30 2011-12-13 Emc Corporation Triangular asynchronous replication
CN102387169B (zh) 2010-08-26 2014-07-23 阿里巴巴集团控股有限公司 分布式缓存的对象删除方法、系统及删除服务器
US8463788B2 (en) * 2010-09-03 2013-06-11 Marvell World Trade Ltd. Balancing caching load in a peer-to-peer based network file system
US20120303901A1 (en) * 2011-05-28 2012-11-29 Qiming Chen Distributed caching and analysis system and method
US10200493B2 (en) 2011-10-17 2019-02-05 Microsoft Technology Licensing, Llc High-density multi-tenant distributed cache as a service
TWI480730B (zh) 2011-12-30 2015-04-11 Ibm 量測一資訊設備之效能的方法與裝置
US9098378B2 (en) 2012-01-31 2015-08-04 International Business Machines Corporation Computing reusable image components to minimize network bandwidth usage
US9135045B2 (en) 2012-05-29 2015-09-15 International Business Machines Corporation Generating user-requested virtual machine templates from super virtual machine templates and cacheable patches
US8880638B2 (en) 2012-06-18 2014-11-04 International Business Machines Corporation Distributed image cache for servicing virtual resource requests in the cloud
US9378060B2 (en) * 2012-08-28 2016-06-28 Oracle International Corporation Runtime co-location of executing logic and frequently-accessed application data
US10757214B2 (en) * 2013-12-20 2020-08-25 Intel Corporation Crowd sourced online application cache management
US9330024B1 (en) 2014-10-09 2016-05-03 Freescale Semiconductor, Inc. Processing device and method thereof
US10387309B2 (en) 2015-10-14 2019-08-20 Elastifile Ltd. High-performance distributed caching
CN107615260B (zh) * 2015-10-22 2021-05-07 甲骨文国际公司 用于在事务处理环境中提供分布式高速缓存的系统和方法
US10594771B2 (en) * 2017-02-09 2020-03-17 International Business Machines Corporation Distributed file transfer with high performance
JP6731123B1 (ja) * 2019-03-18 2020-07-29 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited 合意システムのダウンタイムの回復
SG11201908387SA (en) 2019-03-18 2019-10-30 Alibaba Group Holding Ltd Consensus system downtime recovery
US10938750B2 (en) 2019-03-18 2021-03-02 Advanced New Technologies Co., Ltd. Consensus system downtime recovery
US11169927B2 (en) * 2019-11-22 2021-11-09 EMC IP Holding Company LLC Efficient cache management
US11012511B1 (en) * 2020-01-14 2021-05-18 Facebook, Inc. Smart network interface controller for caching distributed data
US11436534B2 (en) 2020-05-20 2022-09-06 Bank Of America Corporation Distributed artificial intelligence model
US11727306B2 (en) 2020-05-20 2023-08-15 Bank Of America Corporation Distributed artificial intelligence model with deception nodes
CN114063883B (zh) * 2020-07-31 2024-08-23 伊姆西Ip控股有限责任公司 存储数据方法、电子设备和计算机程序产品
KR102202792B1 (ko) * 2020-08-06 2021-01-15 (주)시큐레이어 클러스터 기반 처리 시스템을 이용해 동종 및 이기종 데이터 소스에 대해 멀티 캐싱을 수행하는 방법 및 장치
US11379369B1 (en) 2021-01-15 2022-07-05 Coupang Corp. Systems and methods for dynamic in-memory caching of mappings into partitions

Family Cites Families (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2163631B (en) * 1984-08-29 1988-03-16 Phoenix Engineering Co Ltd The Spreading apparatus
US5394531A (en) * 1989-04-03 1995-02-28 International Business Machines Corporation Dynamic storage allocation system for a prioritized cache
US5261069A (en) * 1990-08-13 1993-11-09 Hewlett-Packard Company Method of maintaining consistency of cached data in a database system
US5220604A (en) * 1990-09-28 1993-06-15 Digital Equipment Corporation Method for performing group exclusion in hierarchical group structures
US5548506A (en) * 1994-03-17 1996-08-20 Srinivasan; Seshan R. Automated, electronic network based, project management server system, for managing multiple work-groups
JP2507235B2 (ja) * 1994-06-24 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション クライアント・サ―バ・コンピュ―タ・システム、及びそのクライアント・コンピュ―タ、サ―バ・コンピュ―タ、並びにオブジェクト更新方法
US5634053A (en) * 1995-08-29 1997-05-27 Hughes Aircraft Company Federated information management (FIM) system and method for providing data site filtering and translation for heterogeneous databases
US5878218A (en) * 1997-03-17 1999-03-02 International Business Machines Corporation Method and system for creating and utilizing common caches for internetworks
US6026464A (en) * 1997-06-24 2000-02-15 Cisco Technology, Inc. Memory control system and method utilizing distributed memory controllers for multibank memory
US6026413A (en) * 1997-08-01 2000-02-15 International Business Machines Corporation Determining how changes to underlying data affect cached objects
DE69822283T2 (de) 1997-12-24 2004-07-29 Nortel Networks Ltd., St. Laurent Verteilte dauerhafte Speicher für Benutzer- Anbieter- Systeme mit manchmal unterbrochenen Verbindungen
US6341311B1 (en) * 1998-05-29 2002-01-22 Microsoft Corporation Directing data object access requests in a distributed cache
US6591347B2 (en) * 1998-10-09 2003-07-08 National Semiconductor Corporation Dynamic replacement technique in a shared cache
JP3481485B2 (ja) * 1999-01-28 2003-12-22 エヌイーシーコンピュータテクノ株式会社 マルチプロセッサシステム
US6321240B1 (en) * 1999-03-15 2001-11-20 Trishul M. Chilimbi Data structure partitioning with garbage collection to optimize cache utilization
US6654771B1 (en) * 1999-07-19 2003-11-25 Microsoft Corporation Method and system for network data replication
US6487562B1 (en) * 1999-12-20 2002-11-26 Emc Corporation Dynamically modifying system parameters in data storage system
US6823377B1 (en) * 2000-01-28 2004-11-23 International Business Machines Corporation Arrangements and methods for latency-sensitive hashing for collaborative web caching
US6678698B2 (en) * 2000-02-15 2004-01-13 Intralinks, Inc. Computerized method and system for communicating and managing information used in task-oriented projects
US6996674B2 (en) * 2001-05-07 2006-02-07 International Business Machines Corporation Method and apparatus for a global cache directory in a storage cluster
US6587921B2 (en) * 2001-05-07 2003-07-01 International Business Machines Corporation Method and apparatus for cache synchronization in a clustered environment
US20020178119A1 (en) * 2001-05-24 2002-11-28 International Business Machines Corporation Method and system for a role-based access control model with active roles
TW579463B (en) * 2001-06-30 2004-03-11 Ibm System and method for a caching mechanism for a central synchronization server
US6772178B2 (en) * 2001-07-27 2004-08-03 Sun Microsystems, Inc. Method and apparatus for managing remote data replication in a distributed computer system
US20030041214A1 (en) * 2001-07-27 2003-02-27 Fujitsu Limited Cache control methods and apparatus for hard disk drives
US20030041215A1 (en) * 2001-08-27 2003-02-27 George Robert T. Method and apparatus for the utilization of distributed caches
US6901410B2 (en) * 2001-09-10 2005-05-31 Marron Pedro Jose LDAP-based distributed cache technology for XML
US6922757B2 (en) * 2002-02-15 2005-07-26 Exanet Inc. Flexible and adaptive read and write storage system architecture
US7016919B2 (en) * 2002-03-29 2006-03-21 Agilent Technologies, Inc. Enterprise framework and applications supporting meta-data and data traceability requirements
US7464400B2 (en) * 2002-04-24 2008-12-09 International Business Machines Corporation Distributed environment controlled access facility
EP1504370A4 (en) * 2002-05-14 2008-05-21 Akamai Tech Inc COMPANY DELIVERY NETWORK WITH A CENTRALIZED CONTROL TO COORDINATE A LOT OF CONTENT SERVER
CN1160639C (zh) 2002-05-17 2004-08-04 联想(北京)有限公司 一种动态组网以实现资源共享的方法
US7370064B2 (en) * 2002-08-06 2008-05-06 Yousefi Zadeh Homayoun Database remote replication for back-end tier of multi-tier computer systems
US6973546B2 (en) * 2002-09-27 2005-12-06 International Business Machines Corporation Method, system, and program for maintaining data in distributed caches
US6957303B2 (en) * 2002-11-26 2005-10-18 Hitachi, Ltd. System and managing method for cluster-type storage
US7703128B2 (en) * 2003-02-13 2010-04-20 Microsoft Corporation Digital identity management
US7484043B2 (en) * 2003-06-25 2009-01-27 International Business Machines Corporation Multiprocessor system with dynamic cache coherency regions
US7617369B1 (en) * 2003-06-30 2009-11-10 Symantec Operating Corporation Fast failover with multiple secondary nodes
US7334062B1 (en) * 2003-07-22 2008-02-19 Symantec Operating Corporation Technique to monitor application behavior and tune replication performance
CN1292346C (zh) * 2003-09-12 2006-12-27 国际商业机器公司 用于在分布式计算体系结构中执行作业的系统和方法
JP2007507768A (ja) * 2003-09-29 2007-03-29 レルム システムズ インコーポレイテッド 可動性装置
US20050097440A1 (en) * 2003-11-04 2005-05-05 Richard Lusk Method and system for collaboration
US8572249B2 (en) * 2003-12-10 2013-10-29 Aventail Llc Network appliance for balancing load and platform services
US9092558B2 (en) * 2004-04-05 2015-07-28 International Business Machines Corporation Grouping frequently referenced data items to co-locate for cache utilization
US7249219B1 (en) * 2004-04-30 2007-07-24 Network Appliance, Inc. Method and apparatus to improve buffer cache hit rate
US7275142B1 (en) * 2004-07-26 2007-09-25 Veritas Operating Corporation Storage layout and data replication
US7630974B2 (en) * 2004-09-28 2009-12-08 Oracle International Corporation Multi-language support for enterprise identity and access management
CA2484694A1 (en) 2004-10-14 2006-04-14 Alcatel Database ram cache
US7607164B2 (en) * 2004-12-23 2009-10-20 Microsoft Corporation Systems and processes for managing policy change in a distributed enterprise
US20060143256A1 (en) * 2004-12-28 2006-06-29 Galin Galchev Cache region concept
US7457918B2 (en) 2004-12-28 2008-11-25 Sap Ag Grouping and group operations
US7656810B2 (en) * 2005-03-25 2010-02-02 Microsoft Corporation System and method for monitoring and reacting to peer-to-peer network metrics
US7831634B2 (en) * 2005-04-29 2010-11-09 Sap Ag Initializing a cache region using a generated cache region configuration structure
WO2006127919A2 (en) * 2005-05-25 2006-11-30 1776 Media Network Data management and distribution
JP2007219608A (ja) * 2006-02-14 2007-08-30 Fujitsu Ltd 負荷分散処理プログラム及び負荷分散装置
US7567956B2 (en) * 2006-02-15 2009-07-28 Panasonic Corporation Distributed meta data management middleware
US7725655B2 (en) * 2006-02-16 2010-05-25 Hewlett-Packard Development Company, L.P. Method of operating distributed storage system in which data is read from replicated caches and stored as erasure-coded data
US8005816B2 (en) * 2006-03-01 2011-08-23 Oracle International Corporation Auto generation of suggested links in a search system
US7526611B2 (en) * 2006-03-22 2009-04-28 International Business Machines Corporation Unified processor cache model in multiprocessor system
US20070233539A1 (en) * 2006-03-30 2007-10-04 Philipp Suenderhauf Providing human capital management software application as enterprise services
US8381306B2 (en) * 2006-05-30 2013-02-19 Microsoft Corporation Translating role-based access control policy to resource authorization policy
US9286595B2 (en) * 2006-08-02 2016-03-15 Emc Corporation System and method for collecting and normalizing entitlement data within an enterprise
US7949841B2 (en) * 2006-12-08 2011-05-24 Microsoft Corporation Protection of critical memory using replication
US8056115B2 (en) * 2006-12-11 2011-11-08 International Business Machines Corporation System, method and program product for identifying network-attack profiles and blocking network intrusions
US20080244736A1 (en) * 2007-03-30 2008-10-02 Microsoft Corporation Model-based access control
WO2009000276A1 (en) 2007-06-22 2008-12-31 Omada A/S An identity management system for assigning end-users with access rights to systems coupled to a central server
US20090043881A1 (en) * 2007-08-10 2009-02-12 Strangeloop Networks, Inc. Cache expiry in multiple-server environment
US8069354B2 (en) * 2007-08-14 2011-11-29 Mips Technologies, Inc. Power management for system having one or more integrated circuits
US20090150511A1 (en) * 2007-11-08 2009-06-11 Rna Networks, Inc. Network with distributed shared memory
US20090144388A1 (en) * 2007-11-08 2009-06-04 Rna Networks, Inc. Network with distributed shared memory
WO2009134772A2 (en) * 2008-04-29 2009-11-05 Maxiscale, Inc Peer-to-peer redundant file server system and methods
US20090300154A1 (en) * 2008-05-29 2009-12-03 International Business Machines Corporation Managing performance of a job performed in a distributed computing system
US8176256B2 (en) * 2008-06-12 2012-05-08 Microsoft Corporation Cache regions
US8117156B2 (en) * 2008-10-26 2012-02-14 Microsoft Corporation Replication for common availability substrate
US8151062B2 (en) * 2008-10-26 2012-04-03 Microsoft Corporation Consistency models in a distributed store
US8161244B2 (en) * 2009-05-13 2012-04-17 Microsoft Corporation Multiple cache directories
US9998536B2 (en) 2013-05-29 2018-06-12 Microsoft Technology Licensing, Llc Metered network synchronization

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104603739A (zh) * 2012-08-30 2015-05-06 微软公司 对并行存储的块级访问
CN104603739B (zh) * 2012-08-30 2018-02-16 微软技术许可有限责任公司 对并行存储的块级访问
US11422907B2 (en) 2013-08-19 2022-08-23 Microsoft Technology Licensing, Llc Disconnected operation for systems utilizing cloud storage
US10114709B2 (en) 2014-02-04 2018-10-30 Microsoft Technology Licensing, Llc Block storage by decoupling ordering from durability
CN104219327B (zh) * 2014-09-27 2017-05-10 上海瀚之友信息技术服务有限公司 一种分布式缓存系统
CN104219327A (zh) * 2014-09-27 2014-12-17 上海瀚之友信息技术服务有限公司 一种分布式缓存系统
US11755202B2 (en) 2015-01-20 2023-09-12 Ultrata, Llc Managing meta-data in an object memory fabric
US11775171B2 (en) 2015-01-20 2023-10-03 Ultrata, Llc Utilization of a distributed index to provide object memory fabric coherency
US11768602B2 (en) 2015-01-20 2023-09-26 Ultrata, Llc Object memory data flow instruction execution
US11755201B2 (en) 2015-01-20 2023-09-12 Ultrata, Llc Implementation of an object memory centric cloud
US11782601B2 (en) 2015-01-20 2023-10-10 Ultrata, Llc Object memory instruction set
US11573699B2 (en) 2015-01-20 2023-02-07 Ultrata, Llc Distributed index for fault tolerant object memory fabric
US11579774B2 (en) 2015-01-20 2023-02-14 Ultrata, Llc Object memory data flow triggers
US11231865B2 (en) 2015-06-09 2022-01-25 Ultrata, Llc Infinite memory fabric hardware implementation with router
US11256438B2 (en) 2015-06-09 2022-02-22 Ultrata, Llc Infinite memory fabric hardware implementation with memory
US11733904B2 (en) 2015-06-09 2023-08-22 Ultrata, Llc Infinite memory fabric hardware implementation with router
CN108885607A (zh) * 2015-12-08 2018-11-23 乌尔特拉塔有限责任公司 使用容错对象的存储器结构操作和一致性
CN108885607B (zh) * 2015-12-08 2022-04-12 乌尔特拉塔有限责任公司 使用容错对象的存储器结构操作和一致性
US11281382B2 (en) 2015-12-08 2022-03-22 Ultrata, Llc Object memory interfaces across shared links
US11269514B2 (en) 2015-12-08 2022-03-08 Ultrata, Llc Memory fabric software implementation
US11899931B2 (en) 2015-12-08 2024-02-13 Ultrata, Llc Memory fabric software implementation
CN108958719B (zh) * 2018-04-03 2020-08-11 北京航空航天大学 数字飞行器缓冲区信息处理源代码人工智能书写方法
CN111966283A (zh) * 2020-07-06 2020-11-20 云知声智能科技股份有限公司 一种基于企业级超算场景的客户端多级缓存方法及系统

Also Published As

Publication number Publication date
CN102057366B (zh) 2017-08-01
WO2009151874A3 (en) 2010-03-04
US20090313438A1 (en) 2009-12-17
EP2288997A4 (en) 2012-02-15
US20150134911A1 (en) 2015-05-14
WO2009151874A2 (en) 2009-12-17
JP2012504262A (ja) 2012-02-16
EP2288997B1 (en) 2020-06-03
US8943271B2 (en) 2015-01-27
EP2288997A2 (en) 2011-03-02
US9952971B2 (en) 2018-04-24

Similar Documents

Publication Publication Date Title
CN102057366A (zh) 分布式高速缓存安排
US8176256B2 (en) Cache regions
CA3040729C (en) Distributed data set indexing
US10372723B2 (en) Efficient query processing using histograms in a columnar database
US20100293334A1 (en) Location updates for a distributed data store
US10922316B2 (en) Using computing resources to perform database queries according to a dynamically determined query size
US11995336B2 (en) Bucket views
US20170185645A1 (en) Database caching in a database system
CN106462545A (zh) 可缩放文件存储服务
US10114846B1 (en) Balanced distribution of sort order values for a multi-column sort order of a relational database
CN106462601A (zh) 针对多盘区操作的原子写入
CN101617311A (zh) 现实实体因特网存储服务
CN101496012A (zh) 非常大数据库上的数据处理
CN102682052A (zh) 过滤数据存储上的查询数据
CN110059033A (zh) 数据中心中的共享存储器控制器
US11762860B1 (en) Dynamic concurrency level management for database queries
US10095738B1 (en) Dynamic assignment of logical partitions according to query predicate evaluations
CN102542036B (zh) 使用优化的表
Benlachmi et al. A comparative analysis of hadoop and spark frameworks using word count algorithm
WO2023278975A1 (en) Making decisions for placing data in a multi-tenant cache
US11537616B1 (en) Predicting query performance for prioritizing query execution
CN101836403A (zh) 压缩表格数据流协议的行中的空列
Chang et al. Development of multiple big data analytics platforms with rapid response
US8977814B1 (en) Information lifecycle management for binding content
Fazul et al. PRBP: A prioritized replica balancing policy for HDFS balancer

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150728

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

Effective date of registration: 20150728

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

GR01 Patent grant
GR01 Patent grant