CN102782670B - 存储器高速缓存数据中心 - Google Patents

存储器高速缓存数据中心 Download PDF

Info

Publication number
CN102782670B
CN102782670B CN201180013647.2A CN201180013647A CN102782670B CN 102782670 B CN102782670 B CN 102782670B CN 201180013647 A CN201180013647 A CN 201180013647A CN 102782670 B CN102782670 B CN 102782670B
Authority
CN
China
Prior art keywords
data
memory
data center
center
memory 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.)
Active
Application number
CN201180013647.2A
Other languages
English (en)
Other versions
CN102782670A (zh
Inventor
V.拉文希
B.J.巴罗斯
M.J.麦肯
H.戈迪尔
陈新光
O.V.奥巴桑乔
P.R.C.明
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 Technology Licensing LLC
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 Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN102782670A publication Critical patent/CN102782670A/zh
Application granted granted Critical
Publication of CN102782670B publication Critical patent/CN102782670B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/314In storage network, e.g. network attached cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/465Structured object, e.g. database record
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种数据中心系统包括耦合到数据中心控制器的存储器高速缓存。存储器高速缓存包括易失性存储器并且存储数据,该数据持久存储于远离数据中心系统设置的不同数据中心系统中的数据库中而不是第一数据中心系统中。数据中心控制器从存储器高速缓存读取数据并且向存储器高速缓存写入数据。

Description

存储器高速缓存数据中心
背景技术
向全世界用户提供各种功能的联网服务是可用的。假如有可以访问这样的服务的大量用户,可以构建大型数据中心,这些数据中心包括用于为这些服务的各种用户存储信息的数据库。然而这样的大型数据中心并非没有它们的问题。一个这样的问题在于随着用户数目增加而变得难以让单个数据中心管理服务的所有用户。另一这样的问题在于一些用户可能位于远离数据中心处,从而给这样的用户增加网络延时。
发明内容
提供这一发明内容以简化形式介绍下文在具体实施方式中进一步描述的概念选集。这一发明内容并非旨在于标识要求保护的主题的关键特征或者必要特征,它也并非旨在于用来限制要求保护的主题的范围。
根据一个或者多个方面,在第一数据中心的存储器高速缓存中维护数据,存储器高速缓存包括易失性存储器。数据持久存储于位于远离第一数据中心的第二数据中心中的数据库中。响应于在第一数据中心接收的针对数据的请求,如果数据在存储器高速缓存中,则从存储器高速缓存获取被请求的数据并且将其返回给从其接收请求的请求者。如果数据未在存储器高速缓存中,则从位于远离第一数据中心的不同数据中心获得数据、将其添加到存储器高速缓存并且返回给请求者。响应于在第一数据中心接收的对在第一数据中心中存储附加数据的请求,在已经向第二数据中心中的数据库添加附加数据之后,在存储器高速缓存中存储附加数据。
根据一个或者多个方面,第一数据中心系统可以包括耦合到数据中心控制器的存储器高速缓存。存储器高速缓存可以包括易失性存储器并且存储数据,该数据持久存储于第二数据中心系统中的数据库中而不是第一数据中心系统中。这一第二数据中心系统位于远离第一数据中心系统之处。数据中心控制器从存储器高速缓存读取数据并且向存储器高速缓存写入数据。
附图说明
相同编号在附图全篇中用来指代相似特征。
图1图示了实施根据一个或者多个实施例的存储器高速缓存数据中心的例子系统。
图2图示了根据一个或者多个实施例的例子存储器高速缓存数据中心。
图3是图示了根据一个或者多个实施例的用于操作存储器高速缓存数据中心的例子过程的流程图。
图4是图示了根据一个或者多个实施例的用于从存储器高速缓存数据中心读取数据的例子过程的流程图。
图5是图示了根据一个或者多个实施例的用于向存储器高速缓存数据中心写入数据的例子过程的流程图。
图6图示了例子计算设备,该计算设备可以被配置成实施根据一个或者多个实施例的存储器高速缓存数据中心的方面。
具体实施方式
这里讨论存储器高速缓存数据中心。使用多个数据中心来使服务可用于跨越宽泛地理范围的用户。这些多个数据中心中的一个或者多个数据中心包括数据库,该数据库是服务维护的各种数据的持久存储库。此外,这些多个数据中心中的一个或者多个数据中心是包括存储器高速缓存的存储器高速缓存数据中心,该存储器高速缓存存储服务维护的数据中的至少一些数据。然而存储器高速缓存数据中心未包括用于服务的数据库;实际上,存储器高速缓存数据中心与包括数据库的另一数据中心通信以使数据存储于持久存储库中。虽然存储器高速缓存数据中心可以出于其它原因而包括数据库,但是根据这里讨论的技术的存储器高速缓存数据中心未包括作为服务维护的各种数据的持久存储库的数据库。另外,这些多个数据中心中的一个或者多个数据中心可以包括数据库(该数据库是数据的持久存储库)和存储器高速缓存。
图1图示了例子系统100,该系统实施根据一个或者多个实施例的存储器高速缓存数据中心。系统100包括可以经由网络108相互通信的多个数据中心102、104和106。网络108可以是多种不同网络(包括因特网、局域网(LAN)、蜂窝或者其它电话网络、内部网、其它公用和/或专用网络、其组合等)。
数据中心102、104和106操作用于向跨越宽泛地理范围的多个(z个)计算设备110提供服务。计算设备110可以处于全世界各种地区、国家和大陆并且经由网络108访问数据中心102、104和106。数据中心102、104和106通常处于不同地理位置并且各自通常对来自地理上与数据中心最近的计算设备110的请求做出响应。取而代之,数据中心可以对来自以除了地理距离之外的方式确定(比如基于网络延时、基于网络带宽等确定)为与数据中心最近的计算设备110的请求做出响应。数据中心102、104和106可以由多种不同类型的计算设备110(比如桌面型计算机、膝上型计算机、移动站、娱乐装置、电视、以通信方式耦合到显示设备的机顶盒、蜂窝或者其它无线电话、游戏控制台、汽车计算机等)访问。
数据中心102、104和106可以向计算设备110提供多种不同服务中的一个或者多个服务。例如数据中心102、104和106可以提供社交联网服务、电子邮件服务、消息接发服务、图像和/或视频共享服务、游戏或者其它娱乐服务等中的一个或者多个服务。数据中心102、104和106维护各种数据作为提供服务的部分。维护的特定数据可以基于特定服务(比如用于用户的账户信息、用户发送和/或接收的电子邮件、用户上传的图像等)而变化。
每个数据中心102、104和106包括操作用于提供一个或者多个服务的一个或者多个服务器计算机。与计算机设备110的上文讨论相似,这些服务器计算机可以是多种不同类型的计算设备。每个数据中心102、104和106通常包括多个服务器计算机(例如大约数以十计、数以百计或者甚至更多服务器计算机)。数据中心102、104和106也称为服务器群(farm)。然而应当注意任何数目的数据中心102、104和106可以包括小数目的服务器计算机(例如少于十个服务器计算机)。
数据中心104包括数据库112和存储器高速缓存114,而数据中心106包括数据库116和存储器高速缓存118。数据库112和116是数据的持久存储库并且可以使用多种不同数据库技术(例如包括关系或者非关系数据库、大规模非关系存储库等)来实施。例如可以使用Microsoft SQL Server®数据库或者Microsoft AzureTM表服务来实施数据库112和116。数据库112和116是用于数据(该数据由数据中心102、104和106提供的服务维护)的持久储存库并且可以是用于数据(该数据由数据中心102、104和106提供的服务维护)的权威储存库。数据库112和116中的不同数据库可以存储不同数据(例如用于不同用户的数据)或者取而代之可以存储相同数据中的至少一些数据。
存储器高速缓存114和118是存储于数据库112和116中的数据的高速缓存。存储器高速缓存114和118通常是比数据库112和116更小并且存储来自数据库112和116的一些数据的易失性存储设备(例如随机存取存储器(RAM))。通常可以比数据库112和116更快地访问存储器高速缓存114和118,因此存储器高速缓存114和118通常存储新近已经访问过的、或者以别的方式被认为更可能在不久的将来被再次访问的数据(因此可以被数据中心104和106更快访问)。
另一方面,数据中心102包括存储器高速缓存122。存储器高速缓存122与存储器高速缓存114和118相似之处在于存储器高速缓存122存储已经新近访问的、或者以别的方式被认为更可能在不久的将来再次被访问的数据。然而数据中心102未包括作为存储于数据中心102、104和106中的数据的持久储存库的数据库。数据中心102与用于持久存储数据的远程数据中心(数据中心104或106之一)而不是拥有数据中心102本地的数据库。由于数据中心102无数据库,所以数据中心102也称为存储器高速缓存数据中心。应当注意存储器高速缓存数据中心未包括数据库(该数据库是针对由数据中心102、104和106提供的服务维护的数据的持久储存库),但是可以出于其它原因而可选地包括维护其它数据的数据库。
图示了系统100包括两个数据中心104和106,这些数据中心包括存储器高速缓存和数据库二者。然而系统100可以包括任何数目的数据中心,每个数据中心包括存储器高速缓存和数据库二者。类似地,虽然系统100可以包括任何数目的存储器高速缓存数据中心,但是在系统100中图示了存储器高速缓存数据中心102。此外,系统100还可以包括任何数目的数据中心,这些数据中心包括数据库、但是未包括存储器高速缓存。
图2图示了根据一个或者多个实施例的示例存储器高速缓存数据中心200。数据中心200是未包括本地数据库的数据中心的例子,该本地数据库是针对由数据中心(例如图1的数据中心102)提供的服务维护的数据的持久存储库。存储于数据中心200中的数据持久存储于远程数据中心(例如图1的数据中心104或者106之一)的数据库中而不是包括本地数据库。在数据中心200中无这样的数据库通过减少数据中心200中包括的硬件数量来降低数据中心200的成本。另外可以由于在数据中心200中无这样的数据库而减少在数据中心之间的通信量,因为数据中心200未添加需要与其它数据中心中的其它数据库同步的这样的数据库。
数据中心200包括数据中心控制器202和存储器高速缓存204。数据中心控制器202从计算设备接收针对数据的请求并且响应于这样的请求来获取和返回请求的数据。如下文更具体讨论的那样,可以从存储器高速缓存204或者另一数据中心获取这一数据。数据中心控制器202也从计算设备接收对存储数据的请求并且响应于这样的请求在存储器高速缓存204中存储接收的数据。如下文更具体讨论的那样,也可以向另一数据中心传达接收的数据。数据中心控制器202也在维护存储器高速缓存204时执行附加操作(如下文更具体讨论的那样,比如向存储器高速缓存204的各种部分中回填数据)。
应当注意数据中心200可以是包括大量(例如数以百计或者数以千计)服务器计算机的数据中心或者取而代之包括少量服务器计算机的数据中心。包括少量服务器计算机的数据中心可能通常未视为“数据中心”并且可以例如是经由多种不同网络或者耦合技术耦合在一起的多个服务器计算机的汇集、在可以耦合到网络的小外罩(例如存储2-5个服务器计算机)中包括的多个服务器计算机的汇集等。
数据中心控制器202由多个(m个)服务器计算机206(1)、…、206(m)实施。虽然在图2中图示了多个服务器计算机,但是取而代之,数据中心控制器202可以由单个服务器计算机实施。每个服务器计算机可以是如上文讨论的多种不同类型的计算设备。
存储器高速缓存204包括两个或者更多(n个)存储器组212(1) 、…、212(n)。每个存储器组212包括多个服务器计算机214、216。存储器组212内存储特定数据的特定服务器计算机可以由数据中心控制器202或者取而代之由存储器组212的服务器计算机确定。存储器组212内存储特定数据的特定服务器计算机可以用不同方式来确定,并且可以至少部分依赖于数据中心200提供的特定服务。例如与特定用户关联的数据可以存储于特定服务器计算机上,与特定日期或者类别关联的数据可以存储于特定服务器计算机上,等等。
不同存储器组212可以包括相同数目或者取而代之不同数目的服务器计算机。每个服务器计算机214、216通常包括易失性存储介质(比如RAM)和非易失性存储介质(比如只读存储器(ROM)、闪存、光盘、磁盘等)。用于服务器计算机的操作的各种数据和指令可以存储于易失性存储介质和/或非易失性存储介质中。然而在一个或者多个实施例中,数据中心200存储的用于提供数据中心200的服务的数据存储于易失性存储介质中。
存储器组212作为彼此的备用存储介质来操作,存储相同数据的重复副本。可以响应于多种事件(比如由于服务器计算机的故障、由于安装附加软件等)使存储器组212中的一个或者多个服务器计算机掉电。由于数据中心200存储的数据存储于易失性存储介质中,所以当使存储器组212中的服务器计算机掉电时,存储于该服务器计算机上的数据丢失。然而由于数据的重复副本存储于另一存储器组212的服务器计算机上,所以数据中心200仍然让数据被存储。在一个或者多个实施例中,预计不同存储器组212存储相同数据的重复副本。在替选实施例中,不同存储器组212可以存储存储器高速缓存204存储的整个数据集的部分。例如,如果有四个存储器组212,则每个存储器组212可以存储存储器高速缓存204存储的整个数据集的仅75%。
当存储器组212的服务器计算机在已经被掉电之后被重启时,先前存储于该服务器计算机上的数据再次存储于该服务器计算机上。可以用不同方式自动执行数据在服务器计算机上的这一重新存储。在一个或者多个实施例中,数据中心控制器202标识服务器计算机先前被掉电、但是后来已经被上电并且当前正在运行。数据中心控制器202标识将存储于该服务器计算机上的数据(例如用于特定用户的数据)并且指引另一存储器组212的适当一个或者多个服务器计算机向该服务器计算机发送该数据。取而代之,可以用不同方式执行数据在服务器上的重新存储,比如作为如下文更具体讨论的前摄回填(proactive backfilling)过程的部分。
回填过程指代从一个存储器组向另一存储器组复制数据,从而相同数据存储于每个存储器组中。回填过程也可以指代从与存储器组相同的数据中心中的数据库或者取而代之从与存储器组不同的数据中心中的数据库向存储器组复制数据。前摄回填过程指代尝试在请求未在特定存储器组中的数据之前标识该数据而不是响应于请求未在特定存储器组中的数据来标识该数据。
在一个或者多个实施例中,根据特定固定排序在服务器计算机214、216的易失性存储介质中存储数据。可以使用多种不同固定排序(比如按姓名依字母顺序存储用户的数据、向数据(例如用于特定用户的各种数据)分配特定标识符(ID)和基于ID按数值升序存储数据等)。
此外,存储于服务器计算机214、216上的数据具有关联版本号。这一版本号例如由数据中心控制器202或者服务器计算机214、216分配。每当更新数据时(比如每当用户请求改变他的或者她的数据时)版本号递增。
通过比较来自两个存储器组212中的每个存储器组的ID和版本号集合以标识在集合之间的任何不同来执行前摄回填。由于数据通常按相同固定排序存储于存储器组212的服务器计算机上,所以依次比较集合中的数据以标识在集合之间的任何不同。例如可以获得来自第一存储器组212的始于特定位置(例如在存储器组的第一服务器中的第一存储位置)的用于数据的50个ID和版本号的第一集合并且可以获得来自第二存储器组212的始于对应位置的用于数据的50个ID和版本号的第二集合。如果在第一集合中有未在第二集合中的任何ID,则从第一存储器组向第二存储器组传送针对该ID的数据并且反之亦然。类似地,如果在第一集合中有比第二集合中的对应标识符的版本号更大(指示数据的更新版本)的任何版本号,则从第一存储器组向第二存储器组传送针对该ID和版本号的数据并且反之亦然。集合的这一获得和比较可以由数据中心控制器202或者取而代之由一个或者多个服务器计算机214、216执行。
取而代之,可以用不同方式执行前摄回填。例如可以比较数据(例如始于特定位置的针对前50个用户的数据)而不是比较ID和版本号。应当注意在比较数据本身的情形中,ID和版本号无需在存储器组212中维护。作为另一示例,无需按固定排序存储数据。实际上,可以获得来自第一存储器组的数据并且搜索第二存储器组以确定来自第一存储器组的该数据是否存在于第二存储器组中。
从存储器组212读取和向存储器组212写入数据的粒度可以变化并且由数据中心控制器202管理。例如可以作为组从存储器组212读取和向存储器组212写入针对特定用户的各种数据。因而按特定固定排序(例如按姓名依字母顺序)存储针对用户的数据,并且50个ID和版本号的每个集合是用于50个不同用户的数据的ID和版本号。作为另一示例,可以从存储器组212读取和向存储器组212写入按某一数据量(例如1兆字节)分组的数据。因而按特定固定次序(例如按向每1兆字节数据组分配的标识符依数值)存储针对用户的数据,并且50个ID和版本号的每个集合是用于50个不同的1兆字节数据组的ID和版本号。
图3是图示了根据一个或者多个实施例的用于操作存储器高速缓存数据中心的例子过程300的流程图。过程300由存储器高速缓存数据中心(比如图2的存储器高速缓存数据中心200)执行并且可以用软件、固件、硬件或者其组合来实施。过程300是用于操作存储器高速缓存数据中心的例子过程;这里参照不同图包括对操作存储器高速缓存数据中心的附加讨论。
在过程300中,在存储器高速缓存中维护用于数据中心的数据(动作302)。虽然如上文讨论的那样,存储器高速缓存中的数据持久存储于位于远离实施过程300的数据中心的另一数据中心中,但是如上文讨论的那样,所述数据中心未包括本地数据库,该本地数据库作为由数据中心提供的服务所维护的数据的持久储存库。这一维护例如包括对从数据中心读取数据的请求做出响应、对向数据中心写入数据的请求做出响应、执行回填过程等。
可以在数据中心接收对读取数据的请求。一般而言,响应于对读取数据的请求,从存储器高速缓存获取所请求的数据(动作304)并且将其返回给从其接收请求的计算设备(动作306)。下文更具体讨论对读取请求做出响应的数据中心。
也可以在数据中心接收对写入或者存储数据的请求。一般而言,响应于对写入或者存储数据的请求,向具有持久存储数据的数据库的另一数据中心发送请求的数据(动作308)。在数据持久存储于数据库中之后,数据存储于存储器高速缓存中(动作310)。下文更具体讨论对写入请求做出响应的数据中心。
回到图2,数据中心200可以从请求者接收针对数据的请求。请求者通常是计算设备(比如用户的计算设备,该用户希望使用数据中心200提供的服务)。针对数据的请求由数据中心控制器202接收,数据中心控制器202又尝试从存储器高速缓存204获取请求的数据。如果请求的数据未存储于存储器高速缓存204中,则控制器202访问一个或者多个其它数据中心以获得请求的数据。如果从另一数据中心获得,则控制器202在存储器高速缓存204中存储获得的数据并且也向请求者返回获得的数据。
在访问另一数据中心以获得请求的数据的情形中,可以用不同方式标识所访问的其它一个或者多个数据中心。在一个或者多个实施例中,数据中心控制器202包括或者访问记录,该记录指示哪个数据中心具有持久存储特定数据的数据库(例如基于向数据分配的ID、基于请求数据的计算机设备的用户的姓名等)。包括持久存储该特定数据的数据库的数据中心是被访问的数据中心。取而代之,控制器202可以用其它方式标识一个或者多个其它数据中心,例如通过选择与数据中心200最近(基于地理距离或者以别的方式确定)的数据中心(并且如果不能从该数据中心获得数据则继续选择下一最近数据中心直至获得数据或者选择所有数据中心)。作为另一示例,控制器202可以随机、根据(例如由系统管理员)配置到控制器202中的预定顺序、根据一些其它规则或者标准等选择数据中心。
取而代之,如果请求的数据未存储于存储器高速缓存204中,则所请求的数据的指示被置于队列中。数据中心控制器202工作遍历队列(例如按先入先出(FIFO)顺序)从而从另一数据中心获得队列中标识的数据并且向存储器高速缓存204添加数据。因此,可以向请求者通知数据暂时不可用而不是从另一数据中心获得请求的数据并且向请求者返回获得的数据。将随后在已经获得数据并且将其添加到存储器高速缓存204之后的将来某一时间点使数据可用。
在一个或者多个实施例中,向另一数据中心发送的针对数据的请求可以一起分批,从而向另一数据中心发送单个组合请求而不是多个个别请求。对单个组合请求中的个别请求的响应由另一数据中心生成并且也分批在一起作为单个组合响应向数据中心200返回。个别请求和响应的这一分批在一起减少了在数据中心之间发送的通信次数。
可以用不同方式确定多个个别请求是否可以由数据中心控制器202分批在一起。在一个或者多个实施例中,当将向另一数据中心发送请求时,数据中心控制器202等待特定时间量(例如100毫秒、1秒等)并且将在特定时间量期间接收的所有请求(或者取而代之上至阈值数量的所有请求)分批成单个组合请求。在其它实施例中,使用其它技术(比如等待直至将向另一数据中心发送阈值数目的请求)。其它数据中心可以在确定何时将响应分批在一起以向数据中心200返回时使用类似技术。
图4是图示了根据一个或者多个实施例的用于从存储器高速缓存数据中心读取数据的例子过程400的流程图。过程400由数据中心(比如图2的数据中心200)执行并且可以用软件、固件、硬件或者其组合来实施。过程400是用于从存储器高速缓存数据中心读取数据的例子过程;这里参照不同图包括从存储器高速缓存数据中心读取数据的附加讨论。
在过程400中,从请求者接收针对数据的请求(动作402)。请求的存储器组与请求关联。请求者可以标识请求的存储器组(例如先前已经由数据中心通知其中存储数据的存储器组),或者取而代之,另一部件或者设备可以标识请求的存储器组(例如数据中心控制器202的部件)。在一个或者多个实施例中,请求的存储器组是默认存储器组(例如在请求者或者其它部件或者设备未标识请求的存储器组的情形中)。应当注意默认存储器组可以对于多个请求而言相同或者取而代之可以变化。如果默认存储器组对于不同请求而言变化,则可以用不同方式(例如随机选择、按照遍历存储器组的轮询过程选择、根据其它规则或者标准选择等)标识用于特定请求的默认存储器组。
访问请求的存储器组(动作404),并且过程400基于请求的数据是否存储于请求的存储器组中而继续(动作406)。如果请求的数据存储于请求的存储器组中,则从请求的存储器组获取(408)请求的数据并且将其返回给请求者(动作410)。
然而如果请求的数据未存储于请求的存储器组中,则关于针对请求的数据是否有尚未被校验的附加存储器组进行校验(动作412)。如果针对请求的数据有尚未被校验的一个或多个存储器组,则标识和访问另一这样的存储器组(动作414)。可以用多种不同方式(比如按存储器组标识符的数值顺序(例如存储器组1、继而存储器组2、继而存储器组3等))、基于随机选择、根据某一其它规则或者标准等标识另一这样的存储器组。
过程400基于请求的数据是否存储于标识的存储器组中而继续(动作416)。如果请求的数据未存储于标识的存储器组中,则过程400返回以校验针对请求的数据是否有尚未被校验的附加存储器组(动作412)。
然而如果请求的数据未存储于标识的存储器组中,则从标识的存储器组获取请求的数据并且将其回填到请求的存储器组中(动作418)。因而下次请求数据时预计数据将在请求的存储器组中。除了向请求的存储器组中回填请求的数据之外,还向请求者返回请求的数据(动作410)。
回到动作412,如果针对请求的数据无尚未被校验的附加存储器组,则从另一数据中心获得请求的数据(动作420)。向另一数据中心发送针对数据的请求,并且作为响应,从另一数据中心接收请求的数据。如上文讨论的那样,从其获得请求的数据的该另一数据中心可以是多种其它数据中心。
向一个或者多个存储器组添加(动作422)从另一数据中心获得的请求的数据并且也将其返回给请求者(动作410)。在动作422中,可以向一个存储器组(例如请求的存储器组)添加请求的数据,并且依赖于前摄回填向其它存储器组复制数据。取而代之,可以在动作422中向多个存储器组添加请求的数据。
过程400讨论在动作406和412中校验存储器组从而造成在从另一数据中心获得请求的数据之前校验所有存储器组。取而代之,可以从另一数据中心获得请求的数据而无须已校验所有存储器组。如果请求的数据未在校验的存储器组中,则过程400继续动作420以从另一数据中心获得请求的数据。例如可以校验存储器组中阈值数目的存储器组(比如存储器组中固定数目的存储器组(例如存储器组中的三个存储器组)或者相对数目的存储器组(例如存储器组中的75%))。作为另一示例,另一机制或者技术可以用来在校验存储器组中的至少阈值数目(固定或者可变数目)的存储器组之后确定存储器组最可能未包括请求的数据。
应当注意可以出现如下情形,其中请求的数据在存储器组中不可用并且从另一数据中心不可获得。在这样的情形中,向请求者返回请求的数据不可用这样的指示。取而代之,根据数据的性质,请求的数据可以可选地由存储器高速缓存数据中心生成或者创建。
回到图2,数据中心200也可以从请求者接收对存储数据的请求。对存储数据的请求由数据中心控制器202接收,数据中心控制器又在存储器高速缓存204中存储数据。控制器202也向包括数据库的另一数据中心传达数据,该数据库持久存储该数据。可以用多种不同方式(类似于如上文讨论的那样标识将从其读取数据的数据中心的方式)标识控制器202向其传达数据的数据中心。传达给另一数据中心的数据可以在个别请求基础上(例如控制器202可以针对每个对存储数据的请求而发送单独通信)传达,或者取而代之,来自对存储数据的多个请求的数据可以分批在一起并且发送到另一数据中心作为单个组合存储请求(类似于上文关于将针对数据的请求分批的讨论)。
图5是图示了根据一个或者多个实施例的用于向存储器高速缓存数据中心写入数据的例子过程500的流程图。可以用软件、固件、硬件或者其组合实施过程500。过程500的在图5的左手侧上图示的动作由第一数据中心(数据中心1)(比如图2的数据中心200或者图1的数据中心102)执行。过程500的在图5的右手侧上图示的动作由第二数据中心(数据中心2)(比如图1的数据中心104或者106)执行。过程500是用于向存储器高速缓存数据中心写入数据的例子过程;这里参照不同图包括向存储器高速缓存数据中心写入数据的附加讨论。
在过程500中,接收待存储的数据(动作502)。接收所述数据作为写入请求的部分。接收的数据可以是新数据(比如用于新用户的数据)。取而代之,接收的数据可以是对现有数据的改变(比如改变已经存储于存储器高速缓存中的关于特定用户的数据)。
向第二数据中心发送接收的数据(动作504)。如上文讨论的那样,第一数据中心是存储器高速缓存数据中心,因而在动作504中向具有持久存储数据的数据库的另一数据中心发送接收的数据。
第二数据中心接收数据(动作506)并且向第二数据中心的数据库添加数据(动作508)。在向第二数据中心的数据库添加数据之后,第二数据中心向第一数据中心发送已经向第二数据中心的数据库添加数据这样的指示(动作510)。
第一数据中心接收指示(动作512)并且向存储器高速缓存的一个或者多个存储器组添加接收的数据(来自动作502)(动作514)。如果接收的数据是新数据,则向存储器高速缓存添加这一新数据。如果接收的数据是对现有数据的改变,则可以向存储器高速缓存添加该接收的数据并且无效或者删除先前数据,或者取而代之,该接收的数据可以重写先前数据。
在动作514中,可以向一个存储器组(例如默认存储器组)添加接收的数据,并且依赖于前摄回填向其它存储器组复制数据。取而代之,可以在动作514中向多个存储器组添加接收的数据。
第二数据中心在动作510中发送的指示可以采用多种不同形式。在一个或者多个实施例中,在动作510中发送的指示是在动作502中接收的数据。在这样的实施例中,第一数据中心无需保持对在动作502中接收的数据的跟踪、但是可以简单地向第二数据中心转发接收的数据、然后响应于在动作512中从第二数据中心接收数据而向一个或者多个存储器组添加从第二数据中心接收的数据。在其它实施例中,在动作510中发送的指示是特定数据的标识符。例如第一数据中心可以暂时存储在动作502中接收的数据并且在动作504中将这一暂时存储的数据的标识符与数据一起提供到第二数据中心。第二数据中心在动作510中发送的指示是暂时存储的数据的这一标识符。响应于在动作512中接收暂时存储的数据的标识符,第一数据中心可以在动作514中向一个或者多个存储器组添加暂时存储的数据而无须第二数据中心已在动作510中发送数据。
第二数据中心也可以可选地向第二数据中心的存储器高速缓存添加数据(动作516)。通常仅在被请求改变的现有数据已经存储于第二数据中心的存储器高速缓存中的情形中向第二数据中心的存储器高速缓存添加数据。
回到图2,在一个或者多个实施例中,一个或者多个存储器组212为非易失性盘存储介质而不是易失性存储介质。多种不同类型的盘和盘驱动可以用作非易失性盘存储介质(比如磁硬盘驱动、光盘和驱动等)。非易失性盘存储介质可以比易失性存储介质成本更少,因而使用非易失性盘存储介质的存储器组可以是一种用于在存储器高速缓存204中存储数据的成本有效技术。
应当注意存储器组212(该存储器组为非易失性盘存储介质)不同于数据库。没有管理向非易失性盘存储介质存储器组212存储数据和从非易失性盘存储介质存储器组212获取数据的数据库应用。实际上,将与存储于易失性盘存储介质存储器组212中相同的数据存储于非易失性盘存储介质存储器组212中,并且这样的数据无论存储介质为易失性还是非易失性存储介质都按相同顺序存储或者布置于存储介质上。
具有非易失性盘存储介质存储器组212有助于在存储器组212被掉电并且易失性存储介质中的数据丢失的情况下回填易失性存储介质。在这样的情形中,当存储器组212再次被上电时,可以从非易失性盘存储介质回填易失性存储介质而不是从具有包括数据的数据库的另一数据中心获得数据。例如假设多个服务器计算机214、216在基本上相同时间被掉电并且还假设存储特定数据的重复副本的服务器计算机214、216是掉电的服务器计算机。当这些服务器被恢复上电时,存储于易失性存储介质中的特定数据已经丢失并且可以从非易失性盘存储介质回填(如果具有非易失性盘存储介质的服务器未被掉电或者当具有非易失性盘存储介质的服务器被恢复上电时)。因此可以从非易失性盘存储介质回填而不是从另一数据中心获得由于服务器计算机214、216的掉电而丢失的数据。从非易失性盘存储介质复制数据通常比从另一数据中心获得数据更快并且也减少了在数据中心之间传送的请求数目和数据量。
应当注意可能出现如下情形,其中在从非易失性盘存储介质向存储器组212复制数据之时在存储器组212接收计算设备请求存储的数据。在这样的情形中,存储器组212维护更新记录,该记录包括接收的存储请求。在已经从非易失性盘存储介质向存储器组212复制数据之后,向存储器组212写入在更新记录中包括的存储请求。
对于一些非易失性盘存储介质,用于访问存储介质(包括从存储介质读取数据和向存储介质写入数据)的时间比用于访问易失性存储介质的时间明显更慢。因而在这样的情形中,在尝试从非易失性盘存储介质获取数据之前尝试从一个或者多个易失性存储介质存储器组获取数据。此外,在这样的情形中,非易失性盘存储介质存储器组可以被配置成改进用于访问存储器高速缓存204中的存储介质的时间。非易失性盘存储介质存储器组可以被配置成部分通过在非易失性盘存储介质中依次存储数据来访问存储介质。例如存储用于特定用户的数据,从而可以从非易失性盘存储介质依次读取数据而不造成发现数据的一个或者多个随机存储部分的寻找时间损失。
在一个或者多个实施例中,在向非易失性盘存储介质存储器组写入数据时,在易失性存储器中维护对非易失性盘存储介质的改变的日志。当日志满足或者超过阈值大小(例如阈值字节数目、阈值写入次数、用于阈值数目的用户的数据等)时,向非易失性盘存储介质写入日志中的数据。取而代之,可以响应于其它事件或者阈值(比如当数据已经在日志中持续至少阈值时间量时)向非易失性盘存储介质写入日志中的数据。当向非易失性盘存储介质写入日志时,写入日志,从而在非易失性盘存储介质上依次写入数据。在非易失性盘存储介质上依次写入数据指代写入数据使得可以从存储介质读取数据而不必寻找存储介质的新随机位置以读取数据的特定部分。例如数据可以在存储介质上物理上邻近地设置。在非易失性盘存储介质上依次写入数据的具体方式可以基于非易失性盘存储介质的特定设计而变化。
向非易失性盘存储介质写入日志可以包括仅从日志向非易失性盘存储介质写入数据并且也可以包括从非易失性盘存储介质读取与日志中的数据组合、然后向非易失性盘存储介质写入的数据。例如可以在日志中包括用于用户的附加数据。如果在非易失性盘存储介质的区域中有充分空间用于写入附加数据并且仍然让用于用户的数据依次存储于非易失性盘存储介质上则才可以向非易失性盘存储介质写入这一附加数据。如果无这样的充分空间,则可以从非易失性盘存储介质读取用于用户的数据,向其添加来自日志的数据,并且可以向非易失性盘存储介质依次写入用于用户的这一新数据(包括来自日志的附加数据)。
此外,日志中的每个条目可以具有关联的时间戳(例如指示条目何时被添加到日志、指示数据中心控制器202何时接收改变等)。可以按各种规律或者不规律间隔(例如近似按小时)取得易失性存储介质存储器组(该存储器组存储非易失性盘存储介质存储器组中的数据的重复副本)的快照。这一快照是易失性存储介质存储器组的副本并且向非易失性盘存储介质写入。从日志删除日志中的任何如下条目,这些条目具有比取得快照的时间更晚的关联时间戳(无需向非易失性盘存储介质写入这样的条目,因为作为向非易失性盘存储介质写入快照的部分已经将它们写入非易失性盘存储介质)。
在数据依次存储于非易失性盘存储介质上的情形中,向非易失性盘存储介质依次读取或者写入分组在一起的数据,并且可以用各种方式将数据分组在一起。例如可以将用于特定用户的数据分组在一起。作为另一示例,可以将非易失性盘存储介质上的数据一起分组成称为桶(bucket)的组,并且每个桶可以包括用于一个或者多个用户的数据(例如桶可以是200兆字节)。
应当注意可以出现以下情形,其中用于访问非易失性盘存储介质的时间与用于访问易失性存储介质的时间近似相同。例如可以出现如下情形,其中非易失性盘存储介质是固态驱动(例如闪存驱动)。在这样的情形中,可以将非易失性盘存储介质视为如同它是易失性存储介质一样。例如无需在进行尝试以从非易失性盘存储介质获取数据之前尝试从易失性存储介质获取数据,并且非易失性盘存储介质无需被配置成改进用于访问存储介质的时间。
在一个或者多个实施例中,存储于存储器高速缓存204中的数据具有关联期满时间或者生存时间(TTL)。期满时间关联的数据的粒度可以变化。例如用于不同用户的数据可以具有单独关联期满时间,用于用户的个别数据段(例如电子邮件地址、当前照片等)可以具有单独关联期满时间,更大数量(例如200兆字节块)的数据可以具有单独关联期满时间,等等。当接收针对数据的请求并且与请求的数据关联的期满时间已经过去(也称为数据过时)时,即使数据过时仍然可以向请求者返回请求的数据。此外,可以从另一数据中心或者另一存储器组获得请求的数据的新副本(未过时),因此将用未过时的数据对针对请求的数据的后续请求做出响应。
除了数据中心200已经请求的数据之外,数据中心200还可以从其它数据中心接收附加数据。这也称为从其它数据中心向数据中心200推送数据。可以出于多种不同原因(比如当对数据的改变出现在其它数据中心时)从其它数据中心向数据中心200推送数据。
向数据中心200以及向其它数据中心的这一推送允许对数据库发生的更新将在各存储器高速缓存中存储,无论这些存储器高速缓存所位于的数据中心如何。响应于向在数据中心的数据库写入数据,该数据中心向各其它数据中心通知对数据库的更新,从而各其它数据中心(包括数据中心200)中的存储器高速缓存可以包括所述更新。向数据库写入的这一数据可以是对先前存储的数据(例如先前为特定用户存储的数据)的改变或者先前版本尚未存储的其它新数据(例如用于新用户的数据)。对数据库的改变因此与各数据中心中的各存储器高速缓存同步。
这里关于管理在多个存储器组上和/或多个数据中心中存储数据的多个副本讨论各种技术。一般而言,可以用多种不同方式执行数据在不同存储库(无论那些存储库是存储器组还是数据中心)之间的这样的复写并且可以使用多种不同同步或者复写技术或者过程来执行这样的复写。
在一个或者多个实施例中,当向数据中心200推送数据时,数据中心控制器202校验接收的数据的先前版本是否已经存储于存储器高速缓存204中。例如可以响应于哪个数据中心控制器202校验用于该特定用户的数据是否已经存储于存储器高速缓存204中来向数据中心200推送用于该特定用户的新数据或者改变的数据。如果接收的数据的先前版本已经存储于存储器高速缓存204中,则控制器202更新存储器高速缓存204中的接收数据。这一更新通常不(虽然取而代之可以)影响近来使用的该数据如何存储于存储器高速缓存204中,因而仅仅由于向数据中心200推送数据而未将数据反映为已经在存储器高速缓存204中被新近使用。然而如果接收的数据的先前版本未已经存储于存储器高速缓存204中,则控制器202未在存储器高速缓存204中存储接收的数据并且忽略或者丢弃接收的数据。如果接收的数据的先前版本未已经存储于存储器高速缓存204中,则控制器202认为数据中心200近来尚未接收针对该数据的请求,因而控制器202无需保持存储器高速缓存204中的该数据。
也应当注意可以出现如下情形,其中接收在存储器高速缓存204中存储数据的请求,但是在存储器高速缓存204中用于该数据的存储空间不足。在这样的情形中,可以删除存储器高速缓存204的部分以便为新接收的数据腾出空间。可以用多种不同方式(比如通过标识存储器高速缓存204的近来最少使用(LRU)的部分、通过标识存储器高速缓存204的过时部分等)标识存储器高速缓存204的删除部分。作为删除部分的数据的粒度可以变化。例如,可以维护用于不同用户的数据的近来访问信息并且部分可以是用于特定用户的数据。作为另一示例,可以维护用于特定数量的数据(例如200兆字节块)的近来访问信息并且部分可以是这一特定的数据量。如果在从存储器高速缓存204删除数据之后接收针对删除的数据的请求,则从另一数据中心获得删除的数据。
此外,数据中心200以及数据中心200与之通信的其它数据中心可以使用各种技术来减少传送的数据量和/或在数据中心之间传送数据时消耗的带宽。一种这样的技术是运用压缩算法以压缩通信的数据、由此减少传送的数据量。在一个或者多个实施例中运用的另一技术是标识其它数据中心需要的特定数据段并且仅传送那些特定段。这些特定段例如是新添加的数据段或者已经改变的数据段。例如假设数据中心维护关于不同用户的数据用于社交联网服务,并且这一数据包括用户的姓名、电子邮件地址、最喜爱照片等。如果改变用户的电子邮件地址,则仅需向另一数据中心传送这一数据段(新电子邮件地址)和数据段是什么的指示。无需传送其它数据段(例如最喜爱照片),因为未出现对该数据的改变。在数据中心的控制器(例如数据中心控制器202)配置有或者以别的方式具有对在存储器高速缓存(例如存储器高速缓存204)中存储数据的方式的了解。因而控制器可以容易将特定数据段与特定数据段的指示一起传送,并且接收控制器可以容易向存储器高速缓存添加该特定数据段。
这里描述的存储器高速缓存数据中心技术也有助于管理数据中心200中的服务器计算机。存储器高速缓存数据中心技术可以例如通过允许数据中心200在一个或者多个服务器计算机被掉电时继续操作并且在它们被恢复上电时向适当服务器计算机自动复制数据(例如回填)来有助于这样的管理。例如一个或者多个服务器计算机可以在各种时间被掉电以便修复损坏的服务器计算机、更换服务器计算机、在服务器计算机上安装新软件或者软件升级等。数据中心200是弹性的并且能够适应这样的情形从而如上文讨论的那样在服务器计算机被恢复上电之后向它们复制数据。
此外应当注意通常预计存储于存储器高速缓存204中的数据未确切地是存储于其它数据中心(例如图1的数据中心104和106)的存储器高速缓存中的相同数据。预计数据中心20接收和处置来自特定一组计算机设备(比如(基于地理距离或者别的方式确定)与数据中心200接近的计算设备)的针对数据的请求。类似地,预计其它数据中心接收和处置来自不同组计算设备(基于地理距离或者以别的方式确定与那些其它数据中心接近的计算设备)的针对数据的请求。当预计不同计算设备的用户具有和请求对不同数据的访问时,预计存储于存储器高速缓存204中的数据不同于存储于其它数据中心的存储器高速缓存中的数据。
此外,上文讨论当在数据中心控制器202处接收对存储数据的请求时,数据在存储器高速缓存204中存储并且也向具有持久存储数据的数据库的数据中心发送。取而代之,可以出现如下情形,其中未向具有持久存储数据的数据库的这样的数据中心发送数据。数据中心控制器202配置有或者以别的方式标识如下信息,该信息指示无需向具有数据库的这样的数据中心发送的数据。在一个或者多个实施例中,无需向具有数据库的这样的数据中心发送多种不同类型的数据(比如频繁改变的数据(例如按照比特定阈值更大来接收对存储数据的请求)、如果丢失则可以容易重新计算(例如基于已经存储于数据库中的数据重新计算)的数据等)。
因此,这里讨论的存储器高速缓存数据中心允许各自包括多个服务器计算机的数据中心相互组合工作以向跨越宽泛地理范围设置的计算设备提供服务。存储器高速缓存数据中心无数据库,这些数据库是用于由数据中心提供的服务所维护的数据的持久储存库,这减少了存储器高速缓存数据中心的成本和在数据中心之间通信的数据量(因为存储器高速缓存数据中心未包括需要保持与其它数据中心的数据库同步的数据库)。
这里进行如下讨论,这些讨论涉及在可以跨越宽泛地理范围遍布的数据中心内包括存储器高速缓存和数据库。然而将理解这里讨论的技术也可以应用于其它系统。例如这里讨论的技术可以与数据中心内的不同机架而不是不同数据中心系统一起使用。一些机架可以包括具有存储器高速缓存和数据库(这些数据库是用于数据的持久储存库,该数据由机架提供的服务维护)的服务器计算机,其它机架可以包括具有存储器高速缓存、但是无数据库(这些数据库是用于数据的持久储存库,该数据由机架提供的服务维护)的服务器计算机,而更多其它机架可以包括具有数据库(这些数据库是用于数据的持久储存库,该数据由机架提供的服务维护)、但是无存储器高速缓存的服务器计算机。作为另一示例,这里讨论的技术可以使用于数据中心内的不同服务器计算机群集而不是不同数据中心系统内。一些群集可以包括具有存储器高速缓存和数据库(这些数据库是用于数据的持久储存库,该数据由群集提供的服务维护)的服务器计算机,其它群集可以包括具有存储器高速缓存、但是无数据库(这些数据库是用于数据的持久储存库,该数据由群集提供的服务维护)的服务器计算机,而更多其它群集可以包括具有数据库(这些数据库是用于数据的持久储存库,该数据由群集提供的服务维护)、但是无存储器高速缓存的服务器计算机。
图6图示了例子计算设备600,该计算设备可以被配置成实施根据一个或者多个实施例的存储器高速缓存数据中心的方面。计算设备600可以用来例如实施图1的数据中心102、数据中心104或者数据中心106的部分或者可以是图2的服务器计算机206、214或者216。
计算设备600包括一个或者多个处理器或者处理单元602、一个或者多个计算机可读介质604(其可以包括一个或者多个存储器和/或存储部件606)、一个或者多个输入/输出(I/O)设备608以及允许各种部件和设备相互通信的总线610。可以包括计算机可读介质604和/或一个或者多个I/O设备608作为计算设备600的部分,或者取而代之可以耦合到计算设备600。总线610代表使用多种不同总线架构的若干类型的总线结构(包括存储器总线或者存储器控制器、外围总线、加速图形端口、处理器或者本地总线等)中的一个或者多个类型。总线610可以包括有线和/或无线总线。
存储器/存储部件606代表一个或者多个计算机存储介质。部件606可以包括易失性介质(比如随机存取存储器(RAM))和/或非易失性介质(比如只读存储器(ROM)、闪存、光盘、磁盘等)。部件606可以包括固定介质(例如RAM、ROM、固定硬驱动等)以及可拆卸介质(例如闪存驱动、可拆卸硬驱动、光盘等)。
可以用软件实施这里讨论的技术而指令由一个或者多个处理单元602执行。将理解不同指令可以存储于计算设备600的不同部件中(比如处理单元602中、处理单元602的各种高速缓存存储器中、设备600的其它高速缓存存储器(未示出)中、其它计算机可读介质上,等等)。此外将理解指令在计算设备600中存储的位置可以随时间改变。
一个或者多个输入/输出设备608允许用户向计算设备600录入命令和信息并且也允许向用户和/或其它部件或者设备呈现信息。输入设备的例子包括键盘、光标控制设备(例如鼠标)、麦克风、扫描仪等。输出设备的例子包括显示器设备(例如监视器或者投影仪)、扬声器、打印机、网卡等。
这里可以在一般软件背景中描述各种技术。一般而言,软件包括执行特定任务或者实施特定抽象数据类型的例程、程序、对象、部件、数据结构等。可以在某一形式的计算机可读介质上存储或者跨越该计算机可读介质传输这些技术的实施方式。计算机可读介质可以是计算设备可以访问的任何一个或者多个可用介质。举例而言而无限制,计算机可读介质可以包括“计算机存储介质”和“通信介质”。
“计算机存储介质”包括用任何用于存储信息的方法或者技术实施的易失性和非易失性 、可拆卸和不可拆卸介质(所述信息比如计算机可读指令、数据结构、程序模块或者其它数据)。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或者其它存储器技术、CD-ROM、数字多功能盘(DVD)或者其它光学储存器、磁盒、磁带、磁盘储存器或者其它磁存储设备或者可以用来存储所需信息并且可以由计算机访问的任何其它介质。
“通信介质”通常在调制的数据信号(比如载波或者其它传送机制)中包含计算机可读指令、数据结构、程序模块或者其它数据。通信介质也包括任何信息递送介质。术语“调制的数据信号”意味着如下信号,该信号让它的特性中的一个或者多个特性以在信号中对信息编码这样的方式来设置或者改变。举例而言而未限制,通信介质包括有线介质(比如有线网络或者直接接线连接)和无线介质(比如声学、RF、红外线和其它无线介质)。也在计算机可读介质的范围内包括上述介质中的任何介质的组合。
一般而言,可以使用软件、固件、硬件(例如固定逻辑电路)、人工处理或者这些实施方式的组合来实施这里描述的操作或者技术中的任何操作或者技术。在软件实施方式的情况下,使用当在处理器(例如一个或者多个CPU)上执行时执行指定任务的程序代码来实施所述操作或者技术。程序代码可以存储于一个或者多个计算机可读存储器设备(可以参照图6发现其进一步的描述)上。这里描述的存储器高速缓冲数据中心技术的特征是平台独立的,这意味着可以在具有多种处理器的多种商用计算机平台上实施技术。
虽然已经用结构特征和/或方法动作特有的语言描述了主题内容,但是将理解在所附权利要求中限定的主题未必限于上文描述的特定特征或者动作。实际上,上文描述的特定特征和动作作为实施权利要求的示例形式公开。

Claims (14)

1.一种在第一数据中心中实施的方法,所述方法包括:
在所述第一数据中心的存储器高速缓存中维护数据,所述第一数据中心是存储器高速缓存数据中心,其中所述数据持久存储于远离第一数据中心设置的第二数据中心中的数据库中,并且其中所述存储器高速缓存包括易失性存储器;
响应于在所述第一数据中心接收的针对数据的请求,如果所述数据在所述存储器高速缓存中,则从所述存储器高速缓存获取所请求的数据,否则从远离第一数据中心设置的不同数据中心获得所请求的数据并且向所述存储器高速缓存添加所请求的数据;
向从其接收所述请求的请求者返回所请求的数据;并且
响应于在所述第一数据中心接收的对在所述第一数据中心中存储附加数据的请求、以及在已经向所述第二数据中心中的所述数据库添加所述附加数据之后,在所述存储器高速缓存中存储所述附加数据;
将所述附加数据与来自多个附加请求的数据一起分批以将所得到的附加数据存储到单个组合的存储请求中;并且向所述第二数据中心发送所述单个组合的存储请求。
2.如权利要求1所述的方法,其中维护所述数据包括当在所述第一数据中心中无持久存储所述数据的数据库时维护所述数据。
3.如权利要求1所述的方法,其中所述存储器高速缓存包括多个存储器组,并且其中所述维护包括在所述多个存储器组中的每个存储器组中存储所述数据的副本。
4.如权利要求3所述的方法,其中所述多个存储器组中的第一存储器组包括易失性存储器,并且所述多个存储器组中的第二存储器组包括一个或者多个盘驱动。
5.如权利要求4所述的方法,其中所述一个或者多个盘驱动包括一个或者多个固态驱动。
6.如权利要求4所述的方法,还包括:在易失性存储器中的日志中存储所得到的附加数据,然后随后将所述日志中的数据依次写到所述一个或者多个盘驱动。
7.如权利要求4所述的方法,其中从所述存储器高速缓存获取所请求的数据包括:在尝试从所述第二存储器组获取所请求的数据之前尝试从所述第一存储器组获取所请求的数据。
8.如权利要求3所述的方法,其中所述多个存储器组中的每个存储器组包括多个服务器计算机中的不同服务器计算机。
9.如权利要求3所述的方法,其中获取所请求的数据包括:
访问所述多个存储器组中的第一存储器组以获取所请求的数据;
如果所请求的数据在所述第一存储器组中,则从所述第一存储器组获取所请求的数据;并且
如果所请求的数据未在所述第一存储器组中,则从所述多个存储器组中的第二存储器组获取所请求的数据并且向所述第一存储器组添加所请求的数据。
10.如权利要求3所述的方法,其中在所述存储器高速缓存中维护数据包括:
比较所述多个存储器组中的第一存储器组中的第一数据集与所述多个存储器组中的第二存储器组中的第二数据集;
向所述第二存储器组复制在所述第一数据集中、未在所述第二数据集中的数据;并且
向所述第一存储器组复制在所述第二数据集中、未在所述第一数据集中的数据。
11.如权利要求1所述的方法,其中所述不同数据中心是第二数据中心,并且其中从所述不同数据中心获得所请求的数据包括:从所述第二数据中心的数据库获得所请求的数据。
12.如权利要求1所述的方法,还包括:
从所述第二数据中心接收新数据,其中响应于对在所述第二数据中心中的所述数据库中存储的数据的更新从所述第二数据中心接收所述新数据;
校验接收的新数据的先前版本是否已经存储于所述存储器高速缓存中;并且
仅在接收的新数据的先前版本已经存储于所述存储器高速缓存中的情况下,才在所述存储器高速缓存中存储所接收的新数据。
13.一种第一存储器高速缓存数据中心,包括:
存储数据的存储器高速缓存,其中所述数据持久存储于第二数据中心中的数据库中而不是所述第一存储器高速缓存数据中心中,其中所述第二数据中心远离所述第一存储器高速缓存数据中心设置,并且其中所述存储器高速缓存包括易失性存储器;以及
数据中心控制器,其耦合到所述存储器高速缓存,其中所述数据中心控制器从所述存储器高速缓存读取数据并且向所述存储器高速缓存写入附加数据;其中所述数据中心控制器将所述附加数据与来自多个请求的数据一起分批以将所得到的附加数据存储到单个组合的存储请求中;向所述第二数据中心发送所述单个组合的存储请求;以及在已经向所述第二数据中心中的所述数据库添加所述附加数据之后将所述附加数据存储在所述存储器高速缓存中。
14.如权利要求13所述的第一存储器高速缓存数据中心,其中所述存储器高速缓存包括多个存储器组,并且其中所述数据中心控制器用于在多个存储器组的每个存储器组中存储所述数据的副本。
CN201180013647.2A 2010-03-12 2011-03-09 存储器高速缓存数据中心 Active CN102782670B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US12/723153 2010-03-12
US12/723,153 2010-03-12
US12/723,153 US8380931B2 (en) 2010-03-12 2010-03-12 Memory cache data center
PCT/US2011/027791 WO2011112750A2 (en) 2010-03-12 2011-03-09 Memory cache data center

Publications (2)

Publication Number Publication Date
CN102782670A CN102782670A (zh) 2012-11-14
CN102782670B true CN102782670B (zh) 2015-08-19

Family

ID=44561030

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180013647.2A Active CN102782670B (zh) 2010-03-12 2011-03-09 存储器高速缓存数据中心

Country Status (4)

Country Link
US (1) US8380931B2 (zh)
EP (1) EP2545458B1 (zh)
CN (1) CN102782670B (zh)
WO (1) WO2011112750A2 (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8380931B2 (en) 2010-03-12 2013-02-19 Microsoft Corporation Memory cache data center
US8260816B1 (en) * 2010-05-20 2012-09-04 Vmware, Inc. Providing limited access to a file system on shared storage
US8996672B2 (en) * 2012-04-05 2015-03-31 Ca, Inc. Application data layer coverage discovery and gap analysis
US10102266B2 (en) * 2012-04-24 2018-10-16 Oracle International Corporation Method and system for implementing a redo repeater
US20150350381A1 (en) * 2013-01-15 2015-12-03 Hewlett-Packard Development Company, L.P. Vertically-Tiered Client-Server Architecture
US20140201434A1 (en) * 2013-01-15 2014-07-17 Hewlett-Packard Development Company, L.P. Managing Volatile File Copies
WO2014191966A1 (en) * 2013-05-31 2014-12-04 Stmicroelectronics S.R.L. Communication interface for interfacing a transmission circuit with an interconnection network, and corresponding system and integrated circuit
CA2932712C (en) * 2013-12-13 2022-07-19 Bombardier Inc. Apparatus and methods for providing network security on a mobile platform
CN107003882B (zh) * 2014-12-18 2020-12-29 英特尔公司 用于转换高速缓存闭包和持久快照的方法、系统和装置
CN104468337B (zh) * 2014-12-24 2018-04-13 北京奇艺世纪科技有限公司 消息传输方法及装置、消息管理中心设备及数据中心
CN106888164A (zh) * 2015-12-15 2017-06-23 阿里巴巴集团控股有限公司 一种异地多活下的业务数据路由方法及装置
CN105472024B (zh) * 2015-12-28 2018-09-28 北京赛思信安技术股份有限公司 一种基于消息推送模式的跨地域数据同步方法
US10075549B2 (en) * 2016-01-25 2018-09-11 Quest Software Inc. Optimizer module in high load client/server systems
US10146454B1 (en) 2016-06-30 2018-12-04 EMC IP Holding Company LLC Techniques for performing data storage copy operations in an integrated manner
US10061540B1 (en) * 2016-06-30 2018-08-28 EMC IP Holding Company LLC Pairing of data storage requests
US10353588B1 (en) 2016-06-30 2019-07-16 EMC IP Holding Company LLC Managing dynamic resource reservation for host I/O requests
JP6734536B2 (ja) * 2016-07-29 2020-08-05 富士通株式会社 情報処理装置及びメモリコントローラ
US10454908B1 (en) * 2016-09-23 2019-10-22 Wells Fargo Bank, N.A. Storing call session information in a telephony system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1432248A (zh) * 2000-03-30 2003-07-23 英特尔公司 分布式高速缓存的方法和设备
US6820180B2 (en) * 2002-04-04 2004-11-16 International Business Machines Corporation Apparatus and method of cascading backup logical volume mirrors
CN101523360A (zh) * 2006-09-29 2009-09-02 微软公司 安全的对等高速缓存共享

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446109B2 (en) 1998-06-29 2002-09-03 Sun Microsystems, Inc. Application computing environment
US6314491B1 (en) * 1999-03-01 2001-11-06 International Business Machines Corporation Peer-to-peer cache moves in a multiprocessor data processing system
US6842869B2 (en) * 2001-06-08 2005-01-11 International Business Machines Corporation Method to maintain nonvolatile system information cached in a distributed control network
US6813690B1 (en) * 2001-06-12 2004-11-02 Network Appliance, Inc. Caching media data using content-sensitive identifiers
US7152096B2 (en) 2001-08-06 2006-12-19 Hitachi, Ltd. High performance storage access environment
US20030070063A1 (en) 2001-10-05 2003-04-10 Adc Telecommunications, Inc. Configuration file caching
TW573257B (en) * 2002-03-29 2004-01-21 Hon Hai Prec Ind Co Ltd Automatic data download system and method
US7293048B2 (en) * 2003-10-29 2007-11-06 Hewlett-Packard Development Company, L.P. System for preserving logical object integrity within a remote mirror cache
US20050188055A1 (en) * 2003-12-31 2005-08-25 Saletore Vikram A. Distributed and dynamic content replication for server cluster acceleration
IL160494A0 (en) * 2004-02-19 2004-07-25 Crescendoo Networks Ltd Use of cache memory for decreasing the number of requests forwarded to server computers
US20050210152A1 (en) * 2004-03-17 2005-09-22 Microsoft Corporation Providing availability information using a distributed cache arrangement and updating the caches using peer-to-peer synchronization strategies
US8799396B2 (en) * 2008-02-04 2014-08-05 Cisco Technology, Inc. Method and system for an efficient distributed cache with a shared cache repository
US8261026B2 (en) 2008-03-07 2012-09-04 Apple Inc. Application cache population from peer application
US8380931B2 (en) 2010-03-12 2013-02-19 Microsoft Corporation Memory cache data center

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1432248A (zh) * 2000-03-30 2003-07-23 英特尔公司 分布式高速缓存的方法和设备
US6820180B2 (en) * 2002-04-04 2004-11-16 International Business Machines Corporation Apparatus and method of cascading backup logical volume mirrors
CN101523360A (zh) * 2006-09-29 2009-09-02 微软公司 安全的对等高速缓存共享

Also Published As

Publication number Publication date
WO2011112750A3 (en) 2011-12-29
US20110225367A1 (en) 2011-09-15
WO2011112750A2 (en) 2011-09-15
EP2545458B1 (en) 2018-09-19
CN102782670A (zh) 2012-11-14
EP2545458A2 (en) 2013-01-16
US8380931B2 (en) 2013-02-19
EP2545458A4 (en) 2014-05-14

Similar Documents

Publication Publication Date Title
CN102782670B (zh) 存储器高速缓存数据中心
KR100776047B1 (ko) 서버의 주소 정보를 업데이트하는 dns의 동작 방법 및그 방법을 채용한 dns
JP4265245B2 (ja) 計算機システム
US20120150930A1 (en) Cloud storage and method for managing the same
CN100593165C (zh) 用于自动升级无线设备的系统和方法
JP5264277B2 (ja) データストレージシステム、動的チャンク割り当て方法、およびコンピュータ可読媒体
US20090240880A1 (en) High availability and low capacity thin provisioning
CN108363641B (zh) 一种主备机数据传递方法、控制节点以及数据库系统
US7913250B2 (en) Automated state migration while deploying an operating system
CN103138912B (zh) 数据同步方法及系统
JP2013545166A (ja) クラウドコンピューティングシステム及びそのデータ同期化方法
CN114756519A (zh) 与无状态同步节点的托管文件同步
US7818390B2 (en) Method for transferring data between terminal apparatuses in a transparent computation system
CN108540510B (zh) 一种云主机创建方法、装置及云服务系统
CN104023058A (zh) 一种存储资源的管理和分配方法和系统
CN107992270B (zh) 一种多控存储系统全局共享缓存的方法及装置
KR20210040864A (ko) 파일 디렉터리 순회 방법, 장치, 기기, 매체 및 컴퓨터 프로그램
CN112256676A (zh) 一种数据库迁移的方法、装置、设备和介质
JP2001184248A (ja) 分散処理システムにおけるデータアクセス管理装置
CN111158851B (zh) 一种虚拟机快速部署方法
US20090100436A1 (en) Partitioning system including a generic partitioning manager for partitioning resources
US8266634B2 (en) Resource assignment system with recovery notification
WO2012136828A1 (en) Multi-user cache system
KR102202645B1 (ko) 관계형 엣지 서버들 간 데이터 공조 방법
KR20120073799A (ko) 클라우드 스토리지 기반의 데이터 동기화 및 서비스 제공 장치와 방법

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

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

Effective date of registration: 20150611

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant