CN107533543A - 具有本地高速缓存的分布式存储器高速缓存***(Memcached***) - Google Patents
具有本地高速缓存的分布式存储器高速缓存***(Memcached***) Download PDFInfo
- Publication number
- CN107533543A CN107533543A CN201580075743.8A CN201580075743A CN107533543A CN 107533543 A CN107533543 A CN 107533543A CN 201580075743 A CN201580075743 A CN 201580075743A CN 107533543 A CN107533543 A CN 107533543A
- Authority
- CN
- China
- Prior art keywords
- memcached
- client device
- address
- key
- systems
- 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
Links
Classifications
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3226—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Information Transfer Between Computers (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文公开了与memcached***相关联的装置、方法和存储介质。在实施例中,服务器装置可以包括:存储器;一个或多个处理器;网络接口卡,其支持通过客户端设备利用作为具有键的值的存储器的存储位置的物理地址的变形地址的地址针对所述值对存储器进行的远程存储器直接存取;以及由一个或多个处理器操作的服务器侧memcached逻辑。可以描述和/或要求保护其他实施例。
Description
技术领域
本公开涉及数据处理领域。更具体地,本公开涉及具有本地高速缓存的分布式存储器高速缓存***(以下称为memcached***)。
背景技术
本文提供的背景描述是为了总体上呈现本公开的上下文。除非本文另有说明,否则在本节中描述的材料不是本申请中的权利要求的现有技术,并且不被认为是包含在本节中的现有技术。
在计算中,memcached是通用的分布式存储器高速缓存***。它通常用于通过将数据和对象高速缓存在随机存取存储器(RAM)中以减少必须读取外部数据源(例如数据库)的次数,来加速动态数据库驱动的网站。大部分***使用包括多个客户端和服务器的客户端-服务器架构。服务器维护键值关联数组;客户端填充该数组并对其进行查询。客户端使用客户端侧的库来联系服务器。每个客户端都知道所有的服务器;服务器通常不会相互通信。如果客户端希望设置或读取与某个键相对应的值,则客户端的库首先计算键的散列以确定要使用的服务器。然后它联系该服务器。服务器将计算键的第二散列以确定在哪里存储或读取相对应的值。通常,服务器将值保留在RAM中;如果服务器耗尽了RAM,则丢弃最旧的值。
对于大型web应用,例如具有数百万用户的web应用,可能需要数百个memcached服务器来及时地服务于页面请求。为了满足商业需求,服务运营商不仅需要提供尽可能大的总存储器大小以满足所需的服务等级协议(SLA),而且还需要大量CPU功率来处理存储器存取请求,这通常包括获取(GET)、设置(SET)、更新(UPDATE)等。
由于CPU限制,memcached服务器通常不能充分利用实现存储器的物理容量。相反,操作员需要跨多个memcached服务器分散负载,以实现预期的负载平衡,从而实现SLA。这导致至少两个问题:1)不良的存储器带宽使用;以及2)不良的可扩展性。此外,由于CPU参与度很高,每个存储器存取的代价很高。这导致每个键值对存取的不良的功率效率。第三,memcached的访问模式通常是高度随机的,这使得用于存储在memcached中的数据的CPU高速缓存几乎是无用的,而且还浪费循环和功率。
附图说明
通过以下详细描述结合附图将容易理解实施例。为了便于说明,相似的附图标记表示相似的结构元件。在附图的图示中以示例而非限制的方式示出了实施例。
图1是示出了根据所公开的实施例的包括具有本地高速缓存的memcached***的计算装置的框图。
图2-图4是示出了根据所公开的实施例的服务器上的memcached逻辑的各种操作流的流程图。
图5-图7是示出了根据所公开的实施例的客户端上的memcached逻辑的各种操作流的流程图。
图8示出了根据所公开的实施例的适用于实施本公开的各个方面的示例性计算机***。
图9示出了根据所公开的实施例的具有用于实施参考图2-图7描述的方法的指令的存储介质。
图10示出了根据所公开的实施例的由服务器注册客户端的示例性过程。
图11示出了根据所公开的实施例的由服务器清除过期的客户端的示例性过程。
图12示出了根据所公开的实施例的生成变形地址(morph address)的示例性过程。
图13示出了根据所公开的实施例的从变形地址中恢复物理地址的示例性过程。
具体实施方式
本文公开了与具有本地高速缓存的memcached***相关联的装置、方法和存储介质。在实施例中,服务器装置可以包括存储器;一个或多个处理器;网络接口卡,其用于支持由客户端设备使用作为存储器的存储位置的物理地址的变形地址的地址针对键的值来对存储器进行远程存储器直接存取;以及由一个或多个处理器操作的服务器侧memcached逻辑。在实施例中,服务器侧memcached逻辑可以被配置为接收用于获取(Get)与memcached***中的键相对应的值的请求,确定获取请求是否有效,在确定所述获取请求有效时确定键是否导致命中,并且响应于键导致命中,则返回在其中存储值和与该值相关联的状态标志的memcached***的一个或多个存储位置的一个或多个变形地址。
在实施例中,所述memcached逻辑可以进一步被配置为接收用于以第二相对应的值来更新(Update)memcached***中的第二键的请求,确定所述更新请求是否有效,在确定所述更新请求是有效时确定第二键是否导致命中,并且响应于第二键导致命中,利用陈旧的状态更新与产生针对第二键的命中的第一项相关联的第二状态标志,将第一项添加到收集列表,创建用于第二键的第二项,并向第二项分配第二值。在实施例中,memcached逻辑可以被配置为在存储第二值之前对第二值进行加密。
在后续详细描述中,参考形成其部分的附图,在附图中相似的附图标记始终表示相似的部件,并且其中以说明的方式示出了可以实践的实施例。应当理解,在不背离本公开的范围的情况下,可以利用其他实施例并且可以进行结构或逻辑的改变。因此,以下详细描述不应被认为是限制性的含义,并且实施例的范围由所附的权利要求及其等同物来限定。
在所附的说明书中公开了本公开的各方面。在不背离本公开的精神或范围的情况下,可以设计出本公开的替代实施例及其等同物。应当注意,下面描述的相似的元件在附图中由相似的附图标记来指示。
可以以最有助于理解所要求保护的主题的方式依次将各种操作描述为多个离散动作或操作。然而,描述的次序不应该被解释为暗示这些操作必然是依赖于次序的。特别地,这些操作可以不按照呈现的次序来执行。所描述的操作可以以与所描述的实施例不同的次序来执行。在附加的实施例中,可以执行各种附加的操作和/或省略所描述的操作。
为了本公开的目的,短语“A和/或B”表示(A)、(B)或(A和B)。为了本公开的目的,短语“A、B和/或C”表示(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)。
该描述可以使用短语“在实施例中”或“在多个实施例中”,其各自可以指代相同或不同的实施例中的一个或多个。此外,关于本公开的实施例所使用的术语“包括”、“包含”、“具有”等是同义的。
如本文所使用的,术语“模块”可以指代、是其一部分或包括:专用集成电路(ASIC)、电子电路、执行一个或多个软件或固件程序的(共享、专用或分组)处理器和/或(共享、专用或分组)存储器、组合逻辑电路、和/或提供所述功能的其它适合的组件。
现在参考图1,其中示出了根据所公开的实施例的显示了包括具有本地高速缓存的memcached***的计算布置的框图。如图所示,具有memcached***的计算布置100可以包括通过网络104彼此耦合的多个客户端设备102a-102c和多个服务器106a-106b。每个客户端设备102a、102b或102c可以包括相对应的处理器和存储器112a、112b或112c、客户端侧memcached逻辑114a、114b或114c、本地高速缓存116a、116b或116c、以及网络接口卡(NIC)118a、118b或118c。而每个服务器106a或106b可以包括相对应的处理器和存储器122a或122b、服务器侧memcached逻辑124a或124b、以及远程直接存储器存取(RDMA)NIC 126a或126b。在实施例中,服务器侧memcached逻辑124a或124b以及远程直接存储器存取(RDMA)NIC126a或126b可以可选地包括各种安全性特征。当需要增强的安全性时,可以包括可选的安全性特征。客户端侧memcached逻辑114a、114b和114c、(安全的)服务器侧memcached逻辑124a和124b以及(安全的)RDMA NIC126a和126b可以一起实现具有本地高速缓存116a、116b和116c的(安全的)memcached***,提供优于现有的memcached***的潜在优点。客户端侧memcached逻辑114a、114b和114c以及(安全的)服务器侧memcached逻辑124a和124b的操作流,包括本地高速缓存116a、116b和116c的使用和维护以及NIC 118a-118c和(安全的)RDMANIC 126a-126b(特别是当进行对memcached***的直接访问时,绕过memcached逻辑124a和124b)的使用,将在下面更详细地描述。
除了客户端侧memcached逻辑114a、114b或114c以及本地高速缓存116a、116b或116c的实例之外,客户端设备102a、102b或102c是要表示本领域已知的范围宽泛的计算设备,包括但不限于:可从Cupertino,CA的Apple Computers、Palo Alto,CA的HewlettPackard等处获得的智能电话、计算平板计算机、超极本、膝上型计算机、台式计算机或服务器等。因此,处理器和存储器112a-112c和NIC 118a-118c可以是本领域中已知的多个这些元件中的任何一个。
类似地,除了(安全的)服务器memcached逻辑124a或124b以及(安全的)RDMA NIC126a-126b(具有安全性特征)之外,服务器106a或106b是要表示本领域已知的范围宽泛的计算设备,包括但不限于:可从Austin,TX的Dell Computer、Armonk,NY的IBM等处获得的服务器等。为了便于理解,计算布置100被示出并且被描述有三个客户端设备102a、102b和102c以及两个服务器106a和106b,本公开不限于此。在实施例中,计算布置100可以包括任何数量的客户端设备和任何数量的服务器。因此,处理器和存储器122a-122c和RDMA NIC126a-126b(除了它们的安全性特征之外)可以是本领域已知的多个这些元件的中的任何一个。
网络104可以包括本领域已知的一个或多个有线和/或无线的、局域和/或广域、公共和/或私有的网络。网络中的每一个可以包括一个或多个路由器、交换机、网关和/或其他网络设备。
现在参考图2-图4,其中示出了根据所公开的实施例的显示了服务器上(安全的)memcached逻辑的各种操作流的三个流程图。在参考图2-图4描述这些各种操作流之前,还参考图10-图11,其中示出了两个流程图,所述两个流程图示出了根据公开的实施例的用于注册客户端以及用于清除具有过期注册的客户端的服务器memcached逻辑124a-124b的安全实现的各种操作流。在这些实施例中,客户端注册在经过一段时间之后会过期。如图所示,用于注册客户端102a-102c(用于memcached***100的安全实现)的过程1000可以包括在框1002-1008处执行的操作,而用于清除过期的客户端102a-102c的过程1100可以包括在框1102-1108处执行的操作。
过程1000可以在框1002处开始。在框1002处,可以从具有使用memcached***的期望的客户端处接收注册请求。接下来在框1004处,可以针对客户端是否将被赋予访问memcached***的权限进行确定。在实施例中,可以参考一个或多个本地或远程访问控制列表进行确定。
接下来在框1006处,在实施例中,在确定客户端具有访问memcached***的权限时,唯一客户端标识符(UID)被确定、被分配并被提供给客户端(以用于后续访问)。在实施例中,可以例如通过将客户端的互联网协议(IP)地址与服务器生成的随机数一起进行散列来确定(计算)UID。此外,UID可以具有与其相关联的有效时间段(在该时间段之后,UID过期),并且UID被列到客户端UID的过期列表的尾部。此外,当客户端使用UID访问memcached***时,可以更新验证机制以实现操作验证。在实施例中,验证机制可以包括布隆过滤器,并且布隆过滤器可以利用新生成/分配的客户端UID被更新。
返回到框1004,如果确定的结果指示客户端不具有对memcached***的访问权限,则在框1008处,该请求可以被拒绝,并且可以记录所述拒绝。
可以周期性地执行过程1100,并且当执行时,它可以在框1102处开始。在框1102处,可以获得要被检查的下一个被授权的客户端。在实施例中,授权的客户端可以从先前描述的注册的客户端的过期列表中获得。接下来在框1104处,可以检查所获得的客户端的相关联的过期时间。如果检查的结果指示有效时间段已经过期,则可以撤销访问授权。在实施例中,撤销可以包括更新在操作期间所采用的验证机制。在实施例中,更新在操作期间所采用的验证机制可以包括更新移除过期的客户端UID的布隆过滤器。在另一方面,如果检查的结果指示有效时间段尚未过期,则在框1108处,可以暂停过程110的执行(直到下一周期的执行时间)。
现在参考图2-图4,(安全的)服务器侧memcached逻辑124a或124b的操作流可以包括用于服务各种请求的过程200和300以及维护服务器的过程400。操作流可以在框202处开始,其中(安全的)服务器侧memcached逻辑124a或124b可以经历memcached***的典型的服务器初始化过程。然而,在本公开中,与现有的memcached***不同,在初始化过程期间,服务器侧memcached逻辑124a或124b可以将其存储器122a或122b的物理地址映射到memcached***的地址空间。对照虚拟地址,映射物理地址的潜在优点将在后面描述。
接下来在框204处,服务器侧memcached逻辑124a或124b可以接收并开始来自客户端102a、102b或102c的请求的服务。[如前所述,并且稍后将更详细地描述,在随后的请求中,客户端102a、102b或102c可以针对与各种键相关联的值经由(安全的)RDMA NIC 126a-126b、绕过(安全的)服务器侧memcached逻辑124a或124b来直接访问memcached***。]在框206处,在接收到请求时,服务器侧memcached逻辑124a或124b可以首先确定所接收到的请求是否是获取与memcached***中的键相对应的值的获取请求。如果是获取请求,则操作流可以继续到框208,其中服务器侧memcached逻辑124a或124b可以确定键是否导致命中。
在服务器侧memcached逻辑124a或124b的安全实现方式中,在确定接收到的请求是否是获得与memcached***中的键相对应的值的获取请求之前,还可以针对该请求是否是来自授权的(注册的)客户端的请求进行确定。在实施例中,验证可以包括检查验证机制(例如,布隆过滤器)以确认该请求来自授权/注册的客户端。如果确定的结果指示请求不是来自授权/注册的客户端,则该请求可以被拒绝,并且可以记录所述拒绝。
在确定请求来自授权的(注册的)客户端并且请求是获取请求时,过程200可以进行到框208。在框208处,可以针对键是否导致命中进行确定。在实施例中,当键的相对应的值被存储在一个或多个存储位置时,键导致命中。一个或多个存储位置可以由相对应的物理地址来识别。
如果确定的结果指示键没有导致命中,则操作流可以继续到框210,其中服务器侧memcached逻辑124a或124b可以例如利用指示键的请求的值未被发现的消息来进行响应。此后,操作流可以继续回到框204,如前所述。
然而,如果在框208处,确定的结果指示键导致命中,则操作流可以继续到框212,其中服务器侧memcached逻辑124a或124b可以(代替返回请求的值)将memcached***的一个或多个存储位置的一个或多个物理地址返回到请求客户端102a、102b或102c,该memcached***中存储了键的相对应的值以及指示该值是否是陈旧的相关联的状态标志。稍后在参考图5-图7描述客户端设备102a、102b或102c的操作流时,将描述客户端设备102a、102b或102c在接收到一个或多个物理地址之后的后续。在实施例中,相对应的值的存储位置的物理地址和相关联的状态标志的地址被返回。在其他实施例中,用于其中相对应的值和相关联的状态标志所共同位于的存储位置的一个物理地址被返回。
在替代的安全实施例中,替代返回物理地址,物理地址可以被变换或变形为稀疏的地址空间的变换/变形地址,并返回到客户端设备102a、102b或102c。换言之,为了增强memcached***的安全性,memcached***的物理地址不会暴露给客户端设备102a、102b和102c。只有稀疏的地址空间的变换/变形地址(以下简称变形地址)被暴露给客户端设备102a、102b和102c。
现在还参考图12,其中示出了根据所公开的实施例的用于生成变形地址的示例性过程。如图所示,用于生成变形地址的过程1200可以在框1202处开始。在框1202处,首先可以通过将随机数和循环冗余校验(CRC)数附加到物理地址来针对物理地址创建中间地址。例如,对于42位物理地址,可以通过在42位物理地址上附加70位随机数和16位CRC来创建128位中间地址。接下来,在框1204处,可以使用秘密的加密键生成相同长度的变形地址从而加密中间地址。
再次参考图2-图4,返回框206处,如果请求来自授权/注册的客户端,但是确定的结果指示该请求不是获取请求,则操作流可以在图3中继续,在框302处开始。在框302处,可以针对请求是设置请求还是更新请求进行确定。如果确定的结果指示所述请求既不是设置请求也不是更新请求,则可以像在现有的memcached***中一样对请求进行处理和服务。此后,操作流可以继续回到图2的框204,如前所述。
在另一方面,如果在框302处的确定的结果指示它是设置请求或更新请求,则操作流可以继续到框306。在框306处,可以针对设置请求或更新请求的键是否存在旧的相对应的值进行确定。如果框306处的确定的结果指示针对设置请求或更新请求的键不存在旧的相对应的值,则操作流可以继续到框308,其中新项可以被分配到memcached***中以用于所述键,并且可以向该项分配由设置请求或更新请求提供的值。接下来,在框310处,可以例如利用指示设置请求或更新请求已成功完成的消息对该请求进行响应。从框310,操作流可以继续到图2的框204,如前所述。
返回到框306,如果在框306处的确定的结果指示针对设置请求或更新请求的键存在旧的相对应的值,则操作流可以继续到框312,其中服务器侧memcached逻辑124a或124b可以更新与该键相关联的状态标志以将旧的相对应的值反映为陈旧的。此外,服务器侧memcached逻辑124a或124b可以将具有键和旧的相对应的值的项添加到重新收集列表中,以使得分配给该项的存储器随后能够被恢复。在实施例中,重新收集列表可以是先进先出列表。从框312,操作流程可以继续到框308,如前所述。
此外,在memcached***的安全实现方式中,服务器侧memcached逻辑124a或124b还可以被提供有保护存储在memcached***中的值的安全性特征。在实施例中,可以通过在存储该值之前进行加密来保护该值。因此,对于这些实施例,框308和框312可以进一步包括加密操作,在新的/替换值被存储以用于新的项或者替换旧的项值之前,对新的值或替换值进行加密。
除了服务于获取、设置或更新请求的上述操作流之外,服务器侧memcached逻辑124a或124b还可以周期性地执行维护过程400(也称为清除过程)以恢复分配给具有标记为“陈旧的”的值的项的存储器。过程400可以在框402处开始,其中服务器侧memcached逻辑124a或124b等待执行维护过程的时间。过程400可以在框402处连续地循环,直到该执行维护过程400的时间。在这样的时间处,过程400可以继续到框404。在框404处,服务器侧memcached逻辑124a或124b可以确定将任何项添加到重新收集列表的何处。如果确定的结果指示重新收集列表为空,则意味着自上次维护以来没有项的值被标记为陈旧的,过程400可以进入睡眠,即返回到框402并等待将执行维护的下一时间点。
在另一方面,如果在框404处确定重新收集列表不为空,这意味着已经添加了具有陈旧值的一个或多个项,则过程400可以继续到框406。在框406处,服务器侧memcached逻辑124a或124b可以检查重新收集列表中的下一个项,并确定下一个项是否已过期。可以例如基于自放入重新收集列表的时间起的间隔时间的量来确定过期。如果下一个项尚未过期,则对于其中重新收集列表是先进先出列表的说明性实施例,过程400也可以进入睡眠,也就是说,返回到框402,并等待将执行维护的下一时间点,如前所述。在其中重新收集列表不是先进先出列表的替代实施例中,过程400可以返回到框404,并且替代地如之前所描述那样从框404处继续。
在另一方面,如果在框406处确定检查的项已经过期,则接下来在框408处,服务器侧memcached逻辑124a或124b可以将分配给过期项的存储器释放回存储器池中以供重新使用。此后,过程400可以返回到框404,并且如前所述继续。可以重复框404-408处的操作,直到重新收集列表中没有项是过期的为止。在处理重新收集列表中过期的所有项时,过程400可以返回到框402,并且如之前所描述的那样从该处继续。
现在参考图5-图7,其中示出了三个流程图,其示出了根据公开的实施例的在客户端上的memcached逻辑的各种操作流。如图所示,客户端侧memcached逻辑114a、114b或114c的操作流可以包括初始化过程500、服务于获取请求的过程600、以及服务于设置请求的过程700。
初始化过程500可以在图5的框502处开始,其中客户端侧memcached逻辑114a、114b或114c可以在启动时初始化自身,如在现有的memcached***中一样。然而,对于公开的实施例,接下来在框504处,客户端侧memcached逻辑114a、114b或114c可以分配本地存储器的块以用作本地高速缓存116a、116b或116c。
服务于获取请求的过程600可以在框602处开始,其中客户端侧memcached逻辑114a、114b或114c可以尝试在本地高速缓存116a、116b或116c中定位获取请求的键。如果键不产生高速缓存命中(或简单地命中),则在框606处,客户端侧memcached逻辑114a、114b或114c可以将获取请求发送到memcached***的服务器,如在现有的memcached***中一样。作为响应,如前所述,与现有的memcached***不同的是,在框608处,客户端侧memcached逻辑114a、114b或114c可以接收其中存储键的相对应的值和相关联的“陈旧的”状态标志的memcached***的一个或多个存储位置的一个或多个物理地址(或用于安全实现方式的变形地址)。然后,客户端侧memcached逻辑114a、114b或114c缓存其中存储了键的相对应的值和相关联的“陈旧的”状态标志的memcached***的一个或多个存储位置的返回的一个或多个物理/变形地址。接下来,在框610处,客户端侧memcached逻辑114a、114b或114c可以使用返回的值的物理/变形地址来执行RDMA操作,并且取回键的相对应的值。此后,客户端侧memcached逻辑114a、114b或114c可以将取回的值返回给获取请求的请求者。从框610,过程600可以结束。
在先前提到的memcached***的安全实现方式中,服务器106a和106b的RDMA NIC126a-126b可以被提供有安全性特征。特别地,安全的RDMA NIC 126a-126b可以被提供有硬件以检查获取请求是否来自授权/注册的客户端。在实施例中,安全的RDMA NIC 126a-126b可以被提供有硬件以检查由安全的memcached逻辑124a-124b所采用的相同的验证机制,例如布隆过滤器。
此外,对于采用变形地址的安全的实施例,安全的RDMA NIC 126a-126b可以进一步被提供有硬件以从变形地址中恢复物理地址。现在还参考图13,其中示出了根据各种实施例的示出用于恢复物理地址的过程的框图。如图所示,用于从变形地址中恢复物理地址的过程1300可以包括在框1302-1310处执行的操作。过程1300可以在框1302处开始。在框1302处,可以使用相对应的秘密的解密键以恢复中间地址来对变形地址进行解密。接下来在框1304处,可以计算CRC值。然后,在框1306处,将计算出的CRC值与恢复的中间地址的CRC部分进行比较。如果比较不成功,例如CRC值不匹配,则错误可以被返回到框1310处。在另一方面,如果比较成功,例如,CRC值匹配,则可以对中间地址进行掩蔽以恢复物理地址,例如,对于参考图12如前所述生成的变形地址,可以掩蔽低阶位以恢复42位物理地址。
此外,对于其中安全的memcached逻辑124a-124b被额外提供有在存储项值之前对项值进行加密的安全性特征的安全的实施例,安全的RDMA NIC 126a-126b还进一步被提供有相对应的解密硬件,以在将取回的项值返回给客户端102a-102c之前对加密的项值进行解密。
注意,由于RDMA操作的本质,当客户端102a、102b或102c取回值时,服务器侧memcached逻辑124a或124b没有意识到RDMA操作,并因此服务器106a或106b的处理器不涉及服务于键的相对应的值的实际取回。换言之,在本公开中,服务器106a或106b的处理器将不再是限制服务器106a或106b的存储器的量的瓶颈。因此,在本公开中,与现有的memcached***相比期望的是,可以在每个服务器106a或106b上配置更大量的存储器。继而,与现有的memcached***相比,针对应用可以需要较少的服务器106a或106b,并且特别是与RDMA中的物理地址的直接使用(代替虚拟地址)耦合的本公开可以是更有效的和可扩展的。此外,由于处理器的使用显著降低,当与现有的memcached***相比时,服务器106a和106b可以消耗更少的功率,并且更节能。
仍然参考图6,在另一方面,如果在框604处的确定的结果指示键导致命中,则过程600可以进行到框612。在框612处,memcached逻辑114a、114b或114c可以确定产生命中的高速缓存条目是否已过期。如果产生命中的高速缓存条目尚未过期,则memcached逻辑114a、114b或114c可以使用存储于产生高速缓存命中的高速缓存条目中的值的一个或多个物理/变形地址和相关联的状态标志来执行RDMA操作,并取回键的相对应的值和相关联的状态标志。可以例如通过将当前***时间与当从memcached服务器取回一个或多个地址的时间进行比较来确定高速缓存条目的过期。如果时间差大于配置的值,则可以将高速缓存条目确定为过期。接下来在框614-616处,memcached逻辑114a、114b或114c可以检查状态标志以确定取回的值是否是陈旧的。如果在框616处确定取回的值不是陈旧的,则在框618处,memcached逻辑114a、114b或114c可以将取回的值返回给获取请求的请求者。从框618,过程600可以结束。
然而,如果在框612处确定产生命中的高速缓存条目已经过期,或者在框616处确定取回的值是陈旧的,则过程600可以继续到框620。在框620处,memcached逻辑114a、114b或114c可以如在现有的memcached***中一样将获取请求发送到memcached***的服务器。如前所述,与现有的memcached***不同,在框620处,memcached逻辑114a、114b或114c可以作为响应接收其中存储了键的相对应的值和相关联的状态标志的memcached***的一个或多个存储位置的一个或多个物理/变形地址。如先前针对类似的接收所述,memcached逻辑114a、114b或114c可以更新本地高速缓存116a、116b或116c,将返回的一个或多个物理/变形地址存储在本地高速缓存116a、116b或116c中的新的高速缓存条目中,并且使得产生高速缓存命中的先前的高速缓存条目无效。在替代实施例中,memcached逻辑114a、114b或114c可以替代地更新产生高速缓存命中的先前的高速缓存条目。接下来,在框622处,memcached逻辑114a、114b或114c可以使用值的返回的物理/变形地址来执行RDMA操作,以便如先前讨论的那样取回该值,并将取回的值返回给获取请求的请求者。从框622,过程600可以结束。
类似地,服务于设置请求的过程700可以在框702处开始,其中memcached逻辑114a、114b或114c可以尝试在本地高速缓存116a、116b或116c中定位设置请求的键。如果键确实导致高速缓存命中(或简单地,命中)并且未过期,则在框706处,memcached逻辑114a、114b或114c可以使产生高速缓存命中的高速缓存条目无效,然后进行到框708,否则过程700直接进行到框708。在框708处,memcached逻辑114a、114b或114c可以如在现有的memcached***中一样处理和服务设置请求。从框708,过程700可以结束。
图8示出了可以适合用作实施本公开的所选方面的客户端设备或服务器的示例性计算机***。如图所示,计算机900可以包括一个或多个处理器或处理器核心902以及***存储器904。出于包括权利要求的本申请目的,术语“处理器”和“处理器核心”可以被认为是同义的,除非上下文另有明确要求。另外,计算机900可以包括大容量存储设备906(例如软盘、硬驱动、压缩盘只读存储器(CD-ROM)等等)、输入/输出设备908(例如显示器、键盘、光标控制等)以及通信接口910(例如网络接口卡、调制解调器等)。元件可以经由***总线912彼此耦合,***总线912可以表示一条或多条总线。在多条总线的情况下,它们可以由一个或多个总线桥(未示出)来桥接。
这些元件中的每一个可以执行本领域已知的其常规功能。特别地,可以采用***存储器904和大容量存储设备906来存储实现先前描述的客户端或服务器侧memcached逻辑114a、114b、114c、124a或124b(统称为计算逻辑922)的编程指令的工作副本和永久副本。各种元件可以由处理器902支持的汇编器指令或可被编译成这样的指令的高级语言(例如C)来实现。
这些元件910-912的数量、能力和/或容量可以取决于计算机900是否用作客户端设备或服务器而变化。特别地,当用作客户端设备时,这些元件910-912的能力和/或容量可以取决于客户端设备是固定的还是移动的设备(如智能电话、计算平板计算机、超级本或膝上型计算机)而变化。另外,元件910-912的构造是已知的,并因此将不再进一步描述。
如本领域技术人员将理解的是,本公开可以被体现为方法或计算机程序产品。因此,除了如前所述以硬件体现之外,本公开可以采用全软件实施例(包括固件、驻留软件、微代码等),或者可以将全部统称为“电路”、“模块”或“***”的软件和硬件方面进行组合的实施例的形式。此外,本公开可以采用体现在具有在介质中体现的计算机可用程序代码的表达的任何有形或非暂时性介质中的计算机程序产品的形式。图9示出了可以适合用于存储指令的示例性计算机可读非暂时性存储介质,响应于由装置执行指令,该指令使得装置来实施本公开的所选方面。如图所示,非暂时性计算机可读存储介质952可以包括多个编程指令954。编程指令954可以被配置为使得例如计算机900的设备响应于编程指令的执行来执行例如与客户端或服务器侧memcached逻辑114a、114b、114c、124a或124b相关联的各种操作。在替代实施例中,编程指令954可以替代地被设置在多个计算机可读非暂时性存储介质952上。在替代实施例中,编程指令954可以被设置在计算机可读暂时性存储介质952(例如信号)上。
可以利用一个或多个计算机可用或计算机可读介质的任何组合。计算机可用或计算机可读介质可以是例如但不限于电子、磁性、光学、电磁、红外或半导体的***、装置、设备或传播介质。计算机可读介质的更具体的示例(非详尽的列表)将包括以下:具有一条或多条线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、光纤、便携式压缩盘只读存储器(CD-ROM)、光存储设备、诸如那些支持因特网或内联网的传输介质、或磁存储设备。注意,计算机可用或计算机可读介质甚至可以是在其上打印程序的纸张或其他适合的介质,因为程序可以经由例如纸张或其他介质的光学扫描而被电子地捕获,然后进行编译、解释或另外在必要时以适合的方式进行处理,并且然后存储在计算机存储器中。在本文档的上下文中,计算机可用或计算机可读介质可以是能够包含、存储、通信、传播或传送程序以供指令执行***、装置或设备使用或与其相结合使用的任何介质。计算机可用介质可以包括具有被体现在其中的计算机可用程序代码的传播数据信号,其可以在基带中或作为载波的一部分。计算机可用程序代码可以使用任何适当的介质(包括但不限于无线、有线、光纤电缆、RF等)来发送。
用于执行本公开的操作的计算机程序代码可以以一种或多种编程语言的任意组合来编写,所述语言包括:面向对象的编程语言(例如Java、Smalltalk、C++等)和常规的过程编程语言(例如“C”编程语言或类似的编程语言)。程序代码可以完全在用户的计算机上被执行、部分地在用户的计算机上被执行、作为独立的软件包被执行、部分地在用户的计算机上且部分地在远程计算机上被执行、或者完全在远程计算机或服务器上被执行。在后一种场景中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如,通过因特网使用因特网服务提供商)。
参考根据本公开的实施例的方法、装置(***)和计算机程序产品的流程图和/或框图来描述本公开。应当理解,流程图和/或框图的每个框以及在流程图和/或框图中的框的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器来产生机构,使得经由计算机或其他可编程数据处理装置的处理器来执行的指令创建用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的单元。
这些计算机程序指令还可以存储在计算机可读介质中,该指令可以引导计算机或其他可编程数据处理装置以特定方式工作,使得存储于计算机可读介质中的指令产生包括实现在流程图和/或框图的一个或多个框中指定的功能/动作的指令单元的制品。
计算机程序指令还可以被加载到计算机或其他可编程数据处理装置上,以使得在计算机或其他可编程装置上执行一系列操作步骤从而产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的过程。
附图中的流程图和框图示出了根据本公开的各种实施例的***、方法和计算机程序产品的可能的实现方式的架构、功能和操作。在这方面,流程图或框图中的每个框可以表示代码的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。还应该注意的是,在一些替代的实现方式中,在框中所指出的功能可能不按照图中所述的次序进行。例如,连续示出的两个框实际上可以基本上同时执行,或者有时可以以相反的次序来执行框,这取决于所涉及的功能。还将注意到,框图和/或流程图的每个框以及框图和/或流程图中框的组合可以由执行指定功能或动作的专用的基于硬件的***或专用硬件和计算机指令的组合来实现。
本文使用的术语仅用于描述特定实施例的目的,并不是要限制本公开。如本文所使用的,单数形式的“一个(a)”、“一种(an)”和“所述(the)”也是要包括复数形式的,除非上下文另有明确指出。将进一步理解的是,当在本说明书中使用术语“包括”和/或“包含”时,特指存在所述特征、整数、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整数、步骤、操作、元件、组件和/或其组合。
实施例可以被实现为计算机过程、计算***或者制品,例如计算机可读介质的计算机程序产品。计算机程序产品可以是由计算机***可读的计算机存储介质,以及对计算机程序指令进行编码以用于执行计算机过程的计算机存储介质。
在后续权利要求书中的所有单元或步骤以及功能元件的对应结构、材料、动作和等同物是要包括用于执行与明确声明的其他要求保护的元件结合的功能的任何结构、材料或动作。本公开的描述是为了说明和描述的目的而呈现的,而并不是要将本公开穷尽或限制于所公开的形式。在不背离本公开的范围和精神的情况下,许多修改和变化对于那些普通技术人员将是显而易见的。选择并描述了实施例以便最好地解释本公开的原理和实际应用,并且使得本领域普通技术人员中的其他人员能够理解具有适合于所预期的特定用途的各种修改的实施例的公开内容。
返回参考图9,对于一个实施例,处理器902中的至少一个可以与具有计算逻辑922的存储器(代替存储在存储器904和存储装置906上)封装在一起。对于一个实施例,处理器902中的至少一个可以与具有计算逻辑922的存储器封装在一起以形成封装***(SiP)。对于一个实施例,处理器902中的至少一个可以与具有计算逻辑922的存储器集成在同一管芯上。对于一个实施例,处理器802中的至少一个可以与具有计算逻辑922的存储器封装在一起以形成片上***(SOC)。对于至少一个实施例,SoC可以被用于例如但不限于智能电话或计算平板计算机中。
因此,已经描述了本公开的各种示例性实施例,其包括但不限于:
示例1可以是一种memcached***的服务器装置。所述服务器装置可以包括:存储器;与所述存储器耦合的一个或多个处理器;与所述存储器耦合的网络接口卡,用于支持通过客户端设备使用作为具有所述值的所述存储器的存储位置的物理地址的变形地址的地址针对键的值来对所述存储器的远程存储器直接存取;以及由所述一个或多个处理器操作的服务器侧memcached逻辑。
示例2可以是示例1所述的服务器装置,其中,所述网络接口可以支持所述变形地址的还原以恢复所述物理地址。
示例3可以是示例2所述的服务器装置,其中,所述变形地址可以通过对根据所述物理地址生成的中间地址进行加密来生成;并且其中,所述网络接口可以通过对所述变形地址进行解密来恢复所述中间地址来还原所述变形地址以恢复所述物理地址。
示例4可以是示例3所述的服务器装置,其中,所述中间地址可以根据所述物理地址与随机数和循环冗余校验值的级联而生成;并且其中,所述网络接口可以通过以下操作恢复所述物理地址:计算循环冗余校验值与所述中间地址的循环冗余校验部分的比较,并且在成功进行循环冗余校验比较时取消掩蔽所述中间地址的部分以恢复所述物理地址。
示例5可以是示例1所述的服务器装置,其中,所述网络接口可以进一步验证所述客户端设备是否被授权访问所述memcached***。
示例6可以是示例5所述的服务器装置,其中,所述网络接口可以通过检查布隆过滤器来验证所述客户端设备是否被授权访问所述memcached***。
示例7可以是示例1所述的服务器装置,其中,所述键的值当被存储在所述存储器中时可以被加密,并且所述网络接口用于在加密的值被传送到所述客户端设备之前从所述存储器取回所述加密的值时,进一步对所述加密的值进行解密。
示例8可以是示例1-7中的任一项所述的服务器装置,所述客户端设备、请求、所述值、所述键、状态标志、所述物理地址,所述存储位置以及所述变形地址分别是第一客户端设备、第一请求、第一值、第一键、第一状态标志、第一物理地址、第一存储位置以及第一变形地址;并且其中,所述memcached逻辑可以由所述一个或多个处理器操作以:接收来自第二客户端设备的第二请求,所述第二请求用于获取对应于所述memcached***中的第二键的第二值;确定所述第二客户端设备是否被授权访问所述memcached***;以及在确定所述第二客户端设备被授权访问所述memcached***时服务于所述第二请求。
示例9可以是示例8所述的服务器装置,其中,所述memcached逻辑可以由所述一个或多个处理器进一步操作以注册所述第一客户端设备和所述第二客户端设备,并且在注册所述第一客户端设备和所述第二客户端设备时,更新在操作期间使用的布隆过滤器以验证客户端设备从而反映所述第一客户端设备和所述第二客户端设备的注册;其中,所述memcached逻辑用于检查所述布隆过滤器以确定所述第二客户端设备是否被授权访问所述memcached***。
示例10可以是示例8所述的服务器装置,其中,所述memcached逻辑可以由所述一个或多个处理器进一步操作以:在确定所述第二客户端设备被授权访问所述memcached***时,确定所述第二键是否导致命中,以及响应于所述第二键导致命中,返回根据其中存储了所述第二值和与所述第二值相关联的第二状态标志的所述memcached***的一个或多个存储位置的一个或多个第二物理地址变形的一个或多个第二变形地址。
示例11可以是示例10所述的服务器装置,其中,所述memcached逻辑可以通过中间地址的初始生成来生成所述第二变形地址,所述中间地址的初始生成是经由所述第二物理地址与随机数和循环冗余校验值的级联;并且然后对所述中间地址进行加密。
示例12可以是示例8所述的服务器装置,其中,所述memcached逻辑可以进一步接收来自第三客户端设备的第三请求以利用第三相对应的值更新所述memcached***中的第三键;确定所述第三客户端设备是否被授权访问所述memcached***;在确定所述第三客户端设备被授权访问所述memcached***时,确定所述第三键是否导致命中;以及响应于第三键导致命中,利用陈旧的状态更新与产生针对所述第三键的命中的第一项相关联的第三状态标志,将所述第一项添加到收集列表,创建针对所述第三键的第二项,并且将第三值分配到所述第二项。
示例13可以是一种用于存储器高速缓存数据的方法。所述方法可以包括:由memcached***的服务器的memcached逻辑接收来自客户端设备的用于获取与键相对应的值的请求;由所述memcached逻辑来确定所述客户端设备是否被授权访问所述memcached***;以及在确定所述客户端设备被授权访问所述memcached***时,由所述memcached逻辑服务于所述请求。
示例14可以是示例13所述的方法,还包括由所述memcached逻辑注册所述客户端设备,并且在注册所述客户端设备时更新在操作期间使用的布隆过滤器以验证客户端设备从而反映所述客户端设备的注册;其中,确定所述客户端设备是否被授权访问所述memcached***包括检查所述布隆过滤器以确定所述客户端设备是否被授权访问所述memcached***。
示例15可以是示例13所述的方法,其中,服务可以包括确定所述键是否导致命中,以及响应于所述键导致命中,返回其中存储了所述值和与所述值相关联的状态标志的所述memcached***的一个或多个存储位置的一个或多个物理地址的一个或多个变形地址。
示例16可以是示例15所述的方法,其中,返回可以包括生成所述一个或多个变形地址。
示例17可以是示例16所述的方法,其中,生成变形地址可以包括:通过将物理地址与随机数和循环冗余校验值进行级联而初始生成中间地址;并且然后对所述中间地址进行加密。
示例18可以是示例13-17中任一项所述的方法,还包括由所述memcached逻辑接收来自第二客户端设备的第二请求,所述第二请求用于用第二相对应的值更新所述memcached***中的第二键;由所述memcached逻辑来确定所述第二客户端设备是否被授权访问所述memcached***;以及在确定所述第二客户端设备被授权访问所述memcached***时,由所述memcached逻辑服务于所述第二请求。
示例19可以是示例18所述的方法,其中,服务于所述第二请求可以包括:确定所述第二键是否导致命中;以及响应于所述第二键导致命中,利用陈旧的状态更新与产生针对所述第二键的命中的第一项相关联的第二状态标志,将所述第一项添加到收集列表,创建针对所述第二键的第二项,并且将第二值分配到所述第二项。
示例20可以是示例19所述的方法,其中,将第二值分配到所述第二项可以包括对所述第二值进行加密,并且存储加密的第二值。
示例21可以是包括多个指令的一种或多种存储介质,响应于由服务器装置执行所述指令,使得所述服务器装置接收来自客户端设备的用于获取与memcached***中的键相对应的值的请求;确定所述客户端设备是否被授权访问所述memcached***;以及在确定所述客户端设备被授权访问所述memcached***时,服务于所述请求。
示例22可以是示例21所述的存储介质,其中,所述服务器装置可以由一个或多个处理器进一步操作用于注册所述客户端设备,并且在注册所述客户端设备时更新在操作期间使用的布隆过滤器以验证客户端设备从而反映所述客户端设备的注册;其中,所述服务器装置可以进一步被用于检查所述布隆过滤器以确定所述客户端设备是否被授权访问所述memcached***。
示例23可以是示例21所述的存储介质,其中,所述服务器装置可以进一步被用于:在确定所述客户端设备被授权访问所述memcached***时,确定所述键是否导致命中;以及响应于所述键导致命中,返回根据其中存储了所述值和与所述值相关联的状态标志的所述memcached***的一个或多个存储位置的一个或多个物理地址而变形的一个或多个变形地址。
示例24可以是示例23所述的存储介质,其中,所述服务器装置进一步被用于通过中间地址的初始生成来生成所述变形地址,所述中间地址的初始生成是通过所述物理地址与随机数和循环冗余校验值的级联;然后对所述中间地址进行加密。
示例25可以是示例21-24中任一项所述的存储介质,其中,所述服务器装置进一步使得用于:接收来自第二客户端设备的第二请求,所述第二请求用于利用第二相对应的值更新在所述memcached***中的第二键;确定所述第二客户端设备是否被授权访问所述memcached***;以及在确定所述第二客户端设备被授权访问所述memcached***时,确定所述第二键是否导致命中;以及响应于第三键导致命中,利用陈旧的状态更新与产生针对第二键的命中的第一项相关联的第二状态标志,将所述第一项添加到收集列表,创建针对所述第二键的第二项,并且将第二值分配到所述第二项。
示例26可以是一种分布式存储器高速缓存***的服务器装置。所述服务器装置可以包括:用于接收来自客户端设备的用于获取与键相对应的值的请求的单元;用于确定所述客户端设备是否被授权访问所述分布式存储器高速缓存***的单元;以及用于在确定所述客户端设备被授权访问所述分布式存储器高速缓存***时服务于所述请求的单元。
示例27可以是示例26所述的服务器装置,还包括:用于注册所述客户端设备的单元;以及用于更新在操作期间使用的布隆过滤器以在所述客户端设备注册时验证客户端设备以反映所述客户端设备的注册的单元;其中,用于确定所述客户端设备是否被授权访问所述分布式存储器高速缓存***的单元可以包括用于检查所述布隆过滤器以确定所述客户端设备是否被授权访问所述分布式存储器高速缓存***的单元。
示例28可以是示例26所述的服务器装置,其中,用于服务的单元包括:用于确定所述键是否导致命中的单元,以及用于响应于所述键导致命中而返回其中存储了所述值和与所述值相关联的状态标志的所述分布式存储器高速缓存***的一个或多个存储位置的一个或多个物理地址的一个或多个变换地址的单元。
示例29可以是示例28所述的服务器装置,其中,用于返回的单元可以包括用于生成所述一个或多个变形地址的单元。
示例30可以是示例29所述的服务器装置,其中,用于生成变换地址的单元可以包括用于通过将物理地址与随机数和循环冗余校验值的级联来初始生成中间地址的单元;以及用于对所述中间地址进行加密以生成所述变换地址的单元。
示例31可以是示例26-30中的任一项所述的服务器装置,还包括:用于接收来自客户端设备的第二请求的单元,所述第二请求用于利用第二相对应的值更新所述分布式存储器高速缓存***中的第二键;用于确定所述第二客户端设备是否被授权访问所述分布式存储器高速缓存***的单元;以及用于在确定所述第二客户端设备被授权访问所述分布式存储器高速缓存***时服务于所述第二请求的单元。
示例32可以是示例31所述的服务器装置,其中用于服务所述第二请求的单元可以包括:用于确定所述第二键是否导致命中的单元;以及用于响应于所述第二键导致命中而利用陈旧的状态更新与产生针对所述第二键的命中的第一项相关联的第二状态标志、将所述第一项添加到收集列表、创建针对所述第二键的第二项、并且将第二值分配到所述第二项的单元。
示例33可以是示例32所述的服务器装置,其中,用于将第二值分配到所述第二项的单元可以包括用于对第二值进行加密的单元,以及用于存储加密的第二值的单元。
对于本领域的那些技术人员显而易见的是,在用于memcaced的所公开的设备和相关联的方法的公开的实施例中可以进行各种修改和变化,而不背离本公开的精神或范围,包括用于其他高速缓存应用、存储应用或装置的应用。因此,本公开是要涵盖上述公开的实施例的修改和变化,只要这些修改和变化落入任何权利要求及其等同物的范围内。
Claims (25)
1.一种memcached***的服务器装置,包括:
存储器;
与所述存储器耦合的一个或多个处理器;
与所述存储器耦合的网络接口卡,用于支持通过客户端设备使用作为具有键的值的所述存储器的存储位置的物理地址的变形地址的地址针对所述值对所述存储器进行的远程存储器直接存取;以及
由所述一个或多个处理器操作的服务器侧memcached逻辑。
2.根据权利要求1所述的服务器装置,其中,所述网络接口用于支持所述变形地址的还原以恢复所述物理地址。
3.根据权利要求2所述的服务器装置,其中,所述变形地址是通过对根据所述物理地址生成的中间地址进行加密来生成的;并且其中,所述网络接口用于通过对所述变形地址进行解密来恢复所述中间地址从而还原所述变形地址以恢复所述物理地址。
4.根据权利要求3所述的服务器装置,其中,所述中间地址是根据所述物理地址与随机数和循环冗余校验值的级联而生成的;并且其中,所述网络接口通过以下操作恢复所述物理地址:计算循环冗余校验值与所述中间地址的循环冗余校验部分的比较,并且在成功进行循环冗余校验比较时取消掩蔽所述中间地址的部分以恢复所述物理地址。
5.根据权利要求1所述的服务器装置,其中,所述网络接口用于进一步验证所述客户端设备是否被授权访问所述memcached***。
6.根据权利要求5所述的服务器装置,其中,所述网络接口用于通过检查布隆过滤器来验证所述客户端设备是否被授权访问所述memcached***。
7.根据权利要求1所述的服务器装置,其中,所述键的值当被存储在所述存储器中时被加密,并且所述网络接口用于在加密的值被传送到所述客户端设备之前从所述存储器取回所述加密的值时,进一步对所述加密的值进行解密。
8.根据权利要求1-7中的任一项所述的服务器装置,其中,所述客户端设备、请求、所述值、所述键、状态标志、所述物理地址,所述存储位置以及所述变形地址分别是第一客户端设备、第一请求、第一值、第一键、第一状态标志、第一物理地址、第一存储位置以及第一变形地址;并且其中,所述memcached逻辑由所述一个或多个处理器操作用于:
接收来自第二客户端设备的第二请求,所述第二请求用于获取对应于所述memcached***中的第二键的第二值;
确定所述第二客户端设备是否被授权访问所述memcached***;以及
在确定所述第二客户端设备被授权访问所述memcached***时服务于所述第二请求。
9.根据权利要求8所述的服务器装置,其中,所述memcached逻辑由所述一个或多个处理器进一步操作用于注册所述第一客户端设备和所述第二客户端设备,并且在注册所述第一客户端设备和所述第二客户端设备时,更新在操作期间使用的布隆过滤器以验证客户端设备从而反映所述第一客户端设备和所述第二客户端设备的注册;其中,所述memcached逻辑用于检查所述布隆过滤器以确定所述第二客户端设备是否被授权访问所述memcached***。
10.根据权利要求8所述的服务器装置,其中,所述memcached逻辑由所述一个或多个处理器进一步操作用于:
在确定所述第二客户端设备被授权访问所述memcached***时,确定所述第二键是否导致命中,以及
响应于所述第二键导致命中,返回根据存储了所述第二值和与所述第二值相关联的第二状态标志的所述memcached***的一个或多个存储位置的一个或多个第二物理地址变形的一个或多个第二变形地址。
11.根据权利要求10所述的服务器装置,其中,所述memcached逻辑用于通过中间地址的初始生成来生成所述第二变形地址,所述中间地址的初始生成是通过所述第二物理地址与随机数和循环冗余校验值的级联;并且然后对所述中间地址进行加密。
12.根据权利要求8所述的服务器装置,其中,所述memcached逻辑进一步用于:
接收来自第三客户端设备的第三请求,所述第三请求用于利用第三相对应的值更新所述memcached***中的第三键;
确定所述第三客户端设备是否被授权访问所述memcached***;
在确定所述第三客户端设备被授权访问所述memcached***时,确定所述第三键是否导致命中;以及
响应于第三键导致命中,利用陈旧的状态更新与产生针对所述第三键的所述命中的第一项相关联的第三状态标志,将所述第一项添加到收集列表,创建针对所述第三键的第二项,并且将所述第三值分配到所述第二项。
13.一种用于存储器高速缓存数据的方法,包括:
由memcached***的服务器的memcached逻辑接收来自客户端设备的用于获取与键相对应的值的请求;
由所述memcached逻辑来确定所述客户端设备是否被授权访问所述memcached***;以及
在确定所述客户端设备被授权访问所述memcached***时,由所述memcached逻辑服务于所述请求。
14.根据权利要求13所述的方法,还包括:
由所述memcached逻辑注册所述客户端设备,并且在注册所述客户端设备时,更新在操作期间使用的布隆过滤器以验证客户端设备从而反映所述客户端设备的注册;
其中,确定所述客户端设备是否被授权访问所述memcached***包括检查所述布隆过滤器以确定所述客户端设备是否被授权访问所述memcached***。
15.根据权利要求13所述的方法,其中,服务包括:
确定所述键是否导致命中,以及
响应于所述键导致命中,返回其中存储了所述值和与所述值相关联的状态标志的所述memcached***的一个或多个存储位置的一个或多个物理地址的一个或多个变形地址。
16.根据权利要求15所述的方法,其中,返回包括生成所述一个或多个变形地址。
17.根据权利要求16所述的方法,其中,生成变形地址包括:通过将物理地址与随机数和循环冗余校验值进行级联而初始生成中间地址;并且然后对所述中间地址进行加密。
18.根据权利要求13所述的方法,还包括:
由所述memcached逻辑接收来自第二客户端设备的第二请求,所述第二请求用于利用第二相对应的值更新所述memcached***中的第二键;
由所述memcached逻辑来确定所述第二客户端设备是否被授权访问所述memcached***;以及
在确定所述第二客户端设备被授权访问所述memcached***时,由所述memcached逻辑服务于所述第二请求。
19.根据权利要求18所述的方法,其中,服务于所述第二请求包括:
确定所述第二键是否导致命中;以及
响应于所述第二键导致命中,利用陈旧的状态更新与产生针对所述第二键的所述命中的第一项相关联的第二状态标志,将所述第一项添加到收集列表,创建针对所述第二键的第二项,并且将第二值分配到所述第二项。
20.包括多个指令的至少一种存储介质,响应于由服务器装置执行所述指令,使得所述服务器装置执行根据权利要求13-20中的任一项所述的方法。
21.一种分布式存储器高速缓存***的服务器装置,包括:
用于接收来自客户端设备的请求的单元,所述请求用于获取与键相对应的值;
用于确定所述客户端设备是否被授权访问所述分布式存储器高速缓存***的单元;以及
用于在确定所述客户端设备被授权访问所述分布式存储器高速缓存***时服务于所述请求的单元。
22.根据权利要求21所述的服务器装置,还包括:
用于注册所述客户端设备的单元;以及
用于更新在操作期间使用的布隆过滤器以在所述客户端设备注册时验证客户端设备以反映所述客户端设备的注册的单元;
其中,用于确定所述客户端设备是否被授权访问所述分布式存储器高速缓存***的单元包括用于检查所述布隆过滤器以确定所述客户端设备是否被授权访问所述分布式存储器高速缓存***的单元。
23.根据权利要求21所述的服务器装置,其中,用于服务的单元包括:
用于确定所述键是否导致命中的单元,以及
用于响应于所述键导致命中而返回其中存储了所述值和与所述值相关联的状态标志的所述分布式存储器高速缓存***的一个或多个存储位置的一个或多个物理地址的一个或多个变换地址的单元。
24.根据权利要求23所述的服务器装置,其中,用于返回的单元包括:用于生成所述一个或多个变换地址的单元;其中,用于生成变换地址的单元包括:用于通过将物理地址与随机数和循环冗余校验值进行级联来初始生成中间地址的单元;以及用于对所述中间地址进行加密以生成所述变换地址的单元。
25.根据权利要求21-24中的任一项所述的服务器装置,还包括:
用于接收来自客户端设备的第二请求的单元,所述第二请求用于利用第二相对应的值更新所述分布式存储器高速缓存***中的第二键;
用于确定所述第二客户端设备是否被授权访问所述分布式存储器高速缓存***的单元;以及
用于在确定所述第二客户端设备被授权访问所述分布式存储器高速缓存***时服务于所述第二请求的单元;
其中,用于服务于所述第二请求的单元包括:
用于确定所述第二键是否导致命中的单元;以及
用于响应于所述第二键导致命中而利用陈旧的状态更新与产生针对所述第二键的所述命中的第一项相关联的第二状态标志、将所述第一项添加到收集列表、创建针对所述第二键的第二项、并且将第二值分配到所述第二项的单元。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2015/073852 WO2016141522A1 (en) | 2015-03-09 | 2015-03-09 | Memcached systems having local caches |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107533543A true CN107533543A (zh) | 2018-01-02 |
CN107533543B CN107533543B (zh) | 2022-01-18 |
Family
ID=56878536
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580075743.8A Active CN107533543B (zh) | 2015-03-09 | 2015-03-09 | 具有本地高速缓存的分布式存储器高速缓存*** |
Country Status (4)
Country | Link |
---|---|
US (1) | US10146702B2 (zh) |
EP (1) | EP3268873B1 (zh) |
CN (1) | CN107533543B (zh) |
WO (1) | WO2016141522A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112818019A (zh) * | 2021-01-29 | 2021-05-18 | 北京思特奇信息技术股份有限公司 | 一种应用于Redis客户端的查询请求过滤方法及Redis客户端 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8898287B2 (en) * | 2010-02-24 | 2014-11-25 | Salesforce.Com, Inc. | System, method and computer program product for monitoring data activity utilizing a shared data store |
US9787605B2 (en) | 2015-01-30 | 2017-10-10 | Nicira, Inc. | Logical router with multiple routing components |
US10891264B2 (en) * | 2015-04-30 | 2021-01-12 | Vmware, Inc. | Distributed, scalable key-value store |
US10425483B2 (en) * | 2016-05-16 | 2019-09-24 | International Business Machines Corporation | Distributed client based cache for keys using demand fault invalidation |
US10728331B2 (en) * | 2016-06-22 | 2020-07-28 | Excelero Storage Ltd. | Techniques for dynamic cache use by an input/output device |
US9794366B1 (en) * | 2016-10-19 | 2017-10-17 | Red Hat, Inc. | Persistent-memory management |
US10542088B2 (en) | 2017-01-18 | 2020-01-21 | Microsoft Technology Licensing, Llc | Modifying data resources within party-partitioned storage areas |
US12019684B2 (en) | 2017-01-18 | 2024-06-25 | Microsoft Technology Licensing, Llc | Application programming interface arranged to interface with a plurality of data sources |
US10838819B2 (en) | 2017-01-18 | 2020-11-17 | Microsoft Technology Licensing, Llc | Including personal relationship metadata within duplicated resources shared across partitioned storage |
US10536465B2 (en) * | 2017-01-18 | 2020-01-14 | Microsoft Technology Licensing, Llc | Security for accessing stored resources |
US10701367B2 (en) * | 2017-08-09 | 2020-06-30 | Raytheon Company | Method for encoding raw high frame rate video via an existing HD video architecture |
US10680804B2 (en) * | 2017-09-27 | 2020-06-09 | Salesforce.Com, Inc. | Distributed key caching for encrypted keys |
US10779342B2 (en) * | 2017-11-27 | 2020-09-15 | Cypress Semiconductor Corporation | Load balance for dual interface automotive wi-fi controllers for P2P devices |
KR102103782B1 (ko) * | 2018-06-07 | 2020-04-24 | 주식회사 티맥스소프트 | 분산 캐시 환경에서 니어 캐시를 제어하는 방법 및 이를 이용한 분산 캐시 서버 |
US11281670B2 (en) | 2019-03-30 | 2022-03-22 | Oracle International Corporation | High-performance implementation of sharing of read-only data in a multi-tenant environment |
CN110620762A (zh) * | 2019-08-06 | 2019-12-27 | 阿里巴巴集团控股有限公司 | 基于rdma的数据传输方法、网卡、服务器及介质 |
US11082411B2 (en) | 2019-08-06 | 2021-08-03 | Advanced New Technologies Co., Ltd. | RDMA-based data transmission method, network interface card, server and medium |
CN111159144B (zh) * | 2019-11-27 | 2023-09-08 | 北京中交兴路信息科技有限公司 | 一种缓存***和方法 |
CN111522506B (zh) * | 2020-04-03 | 2022-08-02 | 杭州迪普信息技术有限公司 | 一种数据读取的方法及装置 |
US12019623B2 (en) | 2021-09-30 | 2024-06-25 | Salesforce, Inc. | Data transfer resiliency during bulk to streaming transition |
WO2023241676A1 (zh) * | 2022-06-16 | 2023-12-21 | 华为云计算技术有限公司 | 一种内存池的操作方法以及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101164057A (zh) * | 2004-06-30 | 2008-04-16 | 赛特里克斯网络应用有限责任公司 | 用于在数据通信网络中执行结合的高速缓存的方法和设备 |
US20140143364A1 (en) * | 2012-11-21 | 2014-05-22 | International Business Machines Corporation | Rdma-optimized high-performance distributed cache |
CN103870301A (zh) * | 2012-12-15 | 2014-06-18 | 国际商业机器公司 | 软件安装方法、设备和程序产品 |
CN104137084A (zh) * | 2011-12-28 | 2014-11-05 | 英特尔公司 | 提高耐久性和抗攻击性的用于pcm缓存的有效动态随机化地址重映射 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090144388A1 (en) * | 2007-11-08 | 2009-06-04 | Rna Networks, Inc. | Network with distributed shared memory |
US8898186B2 (en) | 2010-10-08 | 2014-11-25 | Salesforce.Com, Inc. | Methods and systems for latency-free contacts search |
US8667012B2 (en) * | 2011-06-09 | 2014-03-04 | Salesforce.Com, Inc. | Methods and systems for using distributed memory and set operations to process social networks |
US20120331084A1 (en) | 2011-06-24 | 2012-12-27 | Motorola Mobility, Inc. | Method and System for Operation of Memory System Having Multiple Storage Devices |
CN102917036A (zh) | 2012-10-08 | 2013-02-06 | 浪潮齐鲁软件产业有限公司 | 一种基于Memcached的分布式缓存数据同步实现方法 |
US20140325160A1 (en) | 2013-04-30 | 2014-10-30 | Hewlett-Packard Development Company, L.P. | Caching circuit with predetermined hash table arrangement |
US9313274B2 (en) * | 2013-09-05 | 2016-04-12 | Google Inc. | Isolating clients of distributed storage systems |
US11132328B2 (en) * | 2013-12-20 | 2021-09-28 | Rambus, Inc. | High level instructions with lower-level assembly code style primitives within a memory appliance for accessing memory |
CA2881206A1 (en) * | 2014-02-07 | 2015-08-07 | Andrew WARFIELD | Methods, systems and devices relating to data storage interfaces for managing address spaces in data storage devices |
US9608863B2 (en) * | 2014-10-17 | 2017-03-28 | Cisco Technology, Inc. | Address autoconfiguration using bloom filter parameters for unique address computation |
-
2015
- 2015-03-09 EP EP15884205.4A patent/EP3268873B1/en active Active
- 2015-03-09 WO PCT/CN2015/073852 patent/WO2016141522A1/en active Application Filing
- 2015-03-09 CN CN201580075743.8A patent/CN107533543B/zh active Active
- 2015-03-09 US US14/911,353 patent/US10146702B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101164057A (zh) * | 2004-06-30 | 2008-04-16 | 赛特里克斯网络应用有限责任公司 | 用于在数据通信网络中执行结合的高速缓存的方法和设备 |
CN104137084A (zh) * | 2011-12-28 | 2014-11-05 | 英特尔公司 | 提高耐久性和抗攻击性的用于pcm缓存的有效动态随机化地址重映射 |
US20140143364A1 (en) * | 2012-11-21 | 2014-05-22 | International Business Machines Corporation | Rdma-optimized high-performance distributed cache |
CN103870301A (zh) * | 2012-12-15 | 2014-06-18 | 国际商业机器公司 | 软件安装方法、设备和程序产品 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112818019A (zh) * | 2021-01-29 | 2021-05-18 | 北京思特奇信息技术股份有限公司 | 一种应用于Redis客户端的查询请求过滤方法及Redis客户端 |
CN112818019B (zh) * | 2021-01-29 | 2024-02-02 | 北京思特奇信息技术股份有限公司 | 一种应用于Redis客户端的查询请求过滤方法及Redis客户端 |
Also Published As
Publication number | Publication date |
---|---|
US20170039145A1 (en) | 2017-02-09 |
CN107533543B (zh) | 2022-01-18 |
EP3268873A1 (en) | 2018-01-17 |
EP3268873A4 (en) | 2018-12-05 |
EP3268873B1 (en) | 2020-06-24 |
WO2016141522A1 (en) | 2016-09-15 |
US10146702B2 (en) | 2018-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107533543A (zh) | 具有本地高速缓存的分布式存储器高速缓存***(Memcached***) | |
CN110169036B (zh) | 用于更新可编程装置的方法、***、机器可读介质 | |
CN110992027B (zh) | 在区块链中实现隐私保护的高效交易方法及装置 | |
EP3622433B1 (en) | Enclave pool shared key | |
US10164963B2 (en) | Enforcing server authentication based on a hardware token | |
EP3900301A1 (en) | Multi-access edge computing node with distributed ledger | |
CN111865920A (zh) | 一种网关认证和身份鉴权的平台及其方法 | |
US20190333057A1 (en) | Systems and methods implementing an independent device-based sub-network of a distributed ledger network | |
JP2020108044A (ja) | トークン管理システムおよびトークン管理方法 | |
CN110249333A (zh) | 联盟区块链网络的事务处理 | |
KR102210429B1 (ko) | 블록체인 기반의 인증을 위한 컨테이너 클러스터 시스템 | |
CN107750363A (zh) | 保护与硬件加速器的通信以增加工作流安全性 | |
CN105046163B (zh) | 保护嵌入式管理程序***中的重要数据结构 | |
CN104620254A (zh) | 用于低开销的存储器重播保护的并行化的计数器攀树 | |
CN109660340B (zh) | 一种基于量子密钥的应用***及其使用方法 | |
US20230089134A1 (en) | Data communication method and apparatus, computer device, and storage medium | |
EP3794536B1 (en) | Methods and systems for safe creation, custody, recovery, and management of a digital asset | |
Ahmed et al. | Tackling cloud security issues and forensics model | |
US11606349B2 (en) | Authentication token refresh | |
JP2022177828A (ja) | 情報漏洩を低減した連合学習の方法、装置およびコンピュータプログラム(分割された動的シャッフルモデル更新を伴う連合学習) | |
Huang et al. | Denial-of-service threat to Hadoop/YARN clusters with multi-tenancy | |
WO2019090344A1 (en) | Limited scope blockchain system | |
EP4357883A1 (en) | Data verification method and apparatus, device and storage medium | |
Hannon et al. | Bitcoin payment-channels for resource limited IoT devices | |
Molo et al. | A Review of Evolutionary Trends in Cloud Computing and Applications to the Healthcare Ecosystem |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |