CN107888657A - 低延迟分布式存储*** - Google Patents
低延迟分布式存储*** Download PDFInfo
- Publication number
- CN107888657A CN107888657A CN201710941988.5A CN201710941988A CN107888657A CN 107888657 A CN107888657 A CN 107888657A CN 201710941988 A CN201710941988 A CN 201710941988A CN 107888657 A CN107888657 A CN 107888657A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- node
- client
- server
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种低延迟分布式存储***,将数据存储在可字节寻址的非易失性内存中,通过远程直接内存访问技术读写存储***的数据,并将数据备份到多个冗余节点,以达到低延迟和高可用性。本发明使用中心化的调度器模块实现对多个服务器的集群及其索引信息的管理。客户端只需在连接到存储***时需要与调度器模块通信,其后的所有请求,都直接发送到存储了相应数据的服务器节点。本发明基于非易失性内存和远程直接内存访问技术,可以向客户端提供键值存储***接口,并提供低延迟的数据存储服务。
Description
技术领域
本发明涉及存储技术领域,具体地,涉及一种基于非易失性内存和远程直接内存访问技术的低延迟分布式存储***。
背景技术
内存键值存储***已被广泛运用于各种大型软件***中以提供高带宽低延时的数据存储服务。目前典型的内存键值存储***通常将数据存储在内存中以减小读写延迟,并周期性的将数据写到磁盘来保证数据的持久性。另外,为了提高容错率,数据通常网络连接会以主从的方式复制到若干个备份机器。因此,磁盘性能和网络连接速度是限制目前内存键值存储***的两个瓶颈因素,如何克服这两个瓶颈从而,因素是本领域急需解决课题。
涉及的专业术语:
RDMA:Remote Direct Memory Access,远程直接内存访问。
NVM:Non-volatile Memory,非易失性内存。
DRAM:Dynamic Random Access Memory,动态随机存储器,即现在广泛使用的内存。
RDMA及其LLP(Lower Layer Protocol)可以在NIC(网卡)上实现(称为RNIC)。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种低延迟分布式存储***。
根据本发明提供的一种低延迟分布式存储***,包括:
调度器模块:管理存储***中的服务器节点和客户端,同时,存储了存储***的索引信息,将客户端导向对应的服务器节点;
非易失性内存存储模块:管理存储在非易失性内存中的数据,同时,向客户端提供并发的低延迟的存储服务;
远程直接内存存取模块:提供对所述非易失性内存存储模块中的数据进行远程访问的能力,使用远程直接内存读写功能直接操作所述非易失性内存存储模块中的数据,同时,通过绕过操作***内核的以太网协议栈,降低存储***的访问延迟;
数据冗余备份模块:对存储***中的数据进行冗余备份,包括将数据和元数据同步到物理隔离的备份节点,和保证主从节点数据的一致性,所述数据冗余备份模块通过对修改的数据进行写日志,以达到维持主从节点数据的一致性。
优选的,管理存储***中的服务器节点和客户端包括:对服务器节点的添加、删除和客户端的加入、离开进行管理,对存储***的索引信息进行更新和维护。
优选的,管理存储在非易失性内存中的数据包括:
数据分片:将存储于单一服务器节点的数据分为若干个tablet表,每个tablet表对应了键值数据哈希空间中连续不相交的一段空间,每个tablet表都有独立的线程进行访问操作;
多线程执行:服务器节点的所有请求,根据其哈希值计算得到相应存在于的tablet表,并被保存在tablet表的请求队列中,tablet表对应的线程总是取得并执行请求队列头部的请求;
基于哈希表的索引结构:每个tablet表中均包含一个独立的哈希表结构,存储了该tablet表中所有键值数据的键值以及键的哈希值,对于冲突的键,采用开链法解决冲突,哈希表提供了对tablet表中的数据进行查询、***和删除的操作;
非易失性内存分配器:每个tablet表的存储空间由一个独立的非易失性内存分配器管理,对于键值数据的***,由非易失性内存分配器分配相应的空间;对于键值数据的删除,由非易失性内存分配器释放相应的空间。
优选的,提供对所述非易失性内存存储模块中的数据进行远程访问的能力包括:
远程过程调用接口:在infiniband所提供的远程直接内存访问原语的基础上,对上层提供远程过程调用接口,由客户端发起操作,通过infiniband协议传输到目的服务器,再由目的服务器在本地执行相应的操作;
通信语义模型:使用基于面向报文的非可靠传输的channel型原语,支持一对多的通信能力,为数据库提供可扩展性;
用户态协议层:使用infiniband提供的原语库,旁路了操作***内核的网络协议层,由用户态程序直接访问infiniband网卡发送和接收数据。
优选的,远程过程调用接口还包括相对于存储***扩展的Add操作,检测提供的键值数据是否已经存在于数据库中。
优选的,所述数据冗余备份模块包括:
收集单次请求的所有修改:通过将一次请求的所有修改同步到备份节点,达到对数据的备份,通过非易失性内存分配器来达到对每一次写入的跟踪,所有的写入数据以及相应的偏移地址都被记录到特定的发送缓冲区中;
备份数据日志:对备份数据进行写日志,所有待备份的数据均被事先写入到非易失性内存中的日志区中,在服务器崩溃重启时,将首先读取日志中的数据并执行相应的写入操作,以达到与其它数据副本的一致性;
面向连接的远程直接内存写入:在主节点与从节点之间的数据传输采用了面向连接的远程直接内存写入技术。
与现有技术相比,本发明具有如下的有益效果:
本发明基于非易失性内存和远程直接内存访问技术,可以向客户端提供键值存储***接口,并提供低延迟的数据存储服务。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明调度器模块与集群的架构图;
图2为本发明空闲链表示意图;
图3为本发明tablet表的工作原理图;
图4为本发明的主从复制示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本发明提供的一种低延迟分布式存储***,包括:调度器模块、非易失性内存存储模块、远程直接内存存取模块以及数据冗余备份模块。
调度器模块:管理存储***中的服务器节点和客户端,包括服务器节点的添加、删除和客户端的加入、离开。同时,存储了存储***的索引信息,对存储***的索引信息进行更新和维护,将客户端导向对应的服务器节点。具体的包括如下步骤:
调度器启动步骤:集群中,调度器首先启动,初始化集群配置信息,准备索引数据结构,并在固定端口等待所有服务器节点的加入请求。
调度器添加服务器节点步骤:1、验证服务器节点合法性,为服务器节点分配全局唯一ID;2、更新索引数据结构,添加该服务器节点。
调度器广播索引信息步骤:在集群的所有服务器节点加入完毕时,调度器更新完成索引信息,并将索引信息广播给所有的服务器节点。
调度器接受客户端请求步骤:1、调度器在固定端口等待客户端的接入请求;2、客户端接入后,将集群的索引信息发送给客户端
非易失性内存存储模块:管理存储在非易失性内存中的数据,包括数据的查询、修改、写入和删除。同时,通过数据分片技术,向客户端提供并发的低延迟的存储服务。其具体包括如下部分:
数据分片:将存储于单一服务器节点的数据分为若干个tablet表,每个tablet表对应了键值数据哈希空间中连续不相交的一段空间,每个tablet表都有独立的线程进行访问操作;
多线程执行:服务器节点的所有请求,根据其哈希值计算得到相应存在于的tablet表,并被保存在tablet表的请求队列中,tablet表对应的线程总是取得并执行请求队列头部的请求;
基于哈希表的索引结构:每个tablet表中均包含一个独立的哈希表结构,存储了该tablet表中所有键值数据的key(键)值以及键的哈希值,对于冲突的键,采用开链法解决冲突,哈希表提供了对tablet表中的数据进行查询、***和删除的操作;
非易失性内存分配器:每个tablet表的存储空间由一个独立的非易失性内存分配器管理,对于键值数据的***,由非易失性内存分配器分配相应的空间;对于键值数据的删除,由非易失性内存分配器释放相应的空间。
远程直接内存存取模块:提供对所述非易失性内存存储模块中的数据进行远程访问的能力,包括优化通信语义模型和提供远程过程调用接口,使用远程直接内存读写功能直接操作所述非易失性内存存储模块中的数据,同时,通过绕过操作***内核的以太网协议栈,降低存储***的访问延迟。其具体包括如下部分:
远程过程调用接口:在infiniband所提供的远程直接内存访问原语的基础上,对上层提供远程过程调用接口,主要包括Put、Get、Delete等***、读取和删除键值数据的操作。由客户端发起操作,通过infiniband协议传输到目的服务器,再由目的服务器在本地执行相应的操作。远程过程调用接口还包括相对于存储***扩展的Add操作,检测提供的键值数据是否已经存在于数据库中;
通信语义模型:infiniband支持两种语义的原语:memory型原语和channel型原语;memory型原语包括远程直接内存读取和写入;channel型原语包括向特定对端发送或接收消息;infiniband同时提供两种传输方式:面向连接的可靠传输和面向报文的非可靠传输;本发明使用基于面向报文的非可靠传输的channel型原语,支持一对多的通信能力,为数据库提供了可扩展性。
用户态协议层:使用infiniband提供的原语库,旁路了操作***内核的网络协议层,由用户态程序直接访问infiniband网卡发送和接收数据。
数据冗余备份模块:对存储***中的数据进行冗余备份,包括将数据和元数据同步到物理隔离的备份节点,和保证主从节点数据的一致性,所述数据冗余备份模块通过对修改的数据进行写日志,以达到维持主从节点数据的一致性。其具体包括如下部分:
收集单次请求的所有修改:通过将一次请求的所有修改同步到备份节点,达到对数据的备份,通过非易失性内存分配器来达到对每一次写入的跟踪,所有的写入数据以及相应的偏移地址都被记录到特定的发送缓冲区中;
备份数据日志:对备份数据进行写日志,所有待备份的数据均被事先写入到非易失性内存中的日志区中,在服务器崩溃重启时,将首先读取日志中的数据并执行相应的写入操作,以达到与其它数据副本的一致性;
面向连接的远程直接内存写入:在主节点与从节点之间的数据传输采用了面向连接的远程直接内存写入技术,充分发挥了低延迟、高带宽的特性。
本发明的具体实现如下所述:
调度器添加服务器节点:调度器与集群的架构如图1所示,调度器启动后,监听TCP9090端口,等待服务器请求接入集群。对于请求接入的服务器,调度器首先将其加入服务器列表。当所有服务器请求加入完毕时,调度器更新集群索引列表,为每一个服务器分配相应的哈希值空间。这样,落入相应哈希值空间的键值数据将被存储到对应的服务器节点。最后,调度器将索引列表发送给每一个服务器节点。
哈希值空间:本发明通过对键值数据进行哈希,以将数据均匀地分布到各个服务器节点。本发明采用的哈希值空间为64位无符号整数。根据集群中服务器的数量,该哈希值空间将被等分,并分配给每一个加入集群的服务器。此分配信息被记录在集群的索引结构中。当客户端接入集群时,将根据此被记录的哈希值空间分配信息,查找到对应的存储了该数据的服务器。
构造并广播索引结构信息:当服务器接入集群时,调度器将按照服务器接入顺序,依次分配等大的哈希值区间。此信息被调度器记录于索引结构中。当所有服务器都接入集群完成时,调度器将此索引结构广播给所有服务器。在集群初始化完毕后,调度器也将此索引信息发送给所有接入的客户端。
服务器初始化:服务器启动后,将首先对其非易失性内存存储区域进行初始化,包括tablet表的初始化,本地存储空间的分配,本地哈希表的初始等。在本地初始化完毕后,服务器将进入就绪状态,并连接到集群中。由调度器发送的索引结构信息被服务器存储到本地的非易失性内存空间中。
客户端接入集群:客户端使用本发明提供的库接入集群。客户端将首先连接到调度器。调度器将已经构造完成的索引结构发送给客户端。客户端在后续的请求中,将根据此索引信息查找对应的服务器。客户端将此索引结构信息缓存于本地。一旦该索引结构信息已接收完毕,客户端即可与调度器断开连接。
客户端发起查询请求:当客户端向集群发起一个查询给定key(键)所对应value(值)的请求时。将首先由缓存的索引结构查找存储该key的服务器。该过程分为:1.计算key的64位哈希值;2.计算该64位哈希值所落入的哈希区间;3.获得拥有该哈希区间的服务器的地址信息。然后,客户端通过Infiniband向对应的服务器发送请求。该请求以非可靠报文(unreliable-datagram)的方式发送到查找到的服务器。该过程分为:1.在非易失性内存中分配发送请求所需的缓冲区;2.将请求复制到发送缓冲区;3.将发送缓冲区以及发送请求送入Infiniband的发送队列中。最后,在客户端顺利发送请求后,客户端将进入接收服务器回复的状态。客户端首先分配接收回复所需的缓冲区。当客户端接收到服务器对于其查询请求的回复时,客户端复制value到指定的地址空间,或报告key不存在的错误。然后,将接收缓冲区释放。
分配与释放发送、接收缓冲区:所有的发送。接收缓冲区已预先分配。本发明为发送、接收缓冲区分别维护一个空闲缓冲区队列。客户端每次发送请求,将在发送缓冲区空闲队列中取得一个发送缓冲区。请求发送完毕时,将此发送缓冲区释放到发送缓冲区空闲队列,并在接收缓冲区空闲队列中取得一个接收缓冲区。在接收请求的回复完毕时,释放该接收缓冲区到接收缓冲区空闲队列中。
服务器接收客户端请求:在本发明中,服务器专门开辟了一个线程,用于轮询客户端的请求。当轮询线程接收到来自客户端的请求时,服务器首先检验请求的key的哈希值是否处于分配给该服务器的哈希区间中。若否,则拒绝该请求,并向客户端返回错误信息。否则,服务器根据请求的key的哈希值,查找对应的本地的tablet表。并将请求加入到此tablet表对应的请求队列的尾部。并唤醒tablet表的工作线程,执行客户端的请求。在请求执行结束后,该工作线程回复客户端对应的信息或报告错误信息。
服务器查找tablet表:对于调度器分配给每个服务器的哈希值区间,服务器将继续对其进行划分。并将各个哈希值子区间分配给服务器本地的tablet表。在服务器接收到请求时,根据本地的哈希值区间分配信息找到请求的key值对应的tablet表。
tablet表:在本发明中,服务器上的每个tablet表都包含独立的:哈希表、64MB非易失内存空间、请求队列和工作线程。
tablet表中的哈希表:此哈希表大小为1000003,即具有1000003个槽位。映射到该tablet表的key的存储地址将被置于此1000003个槽位中。对于不同的key映射到哈希表的同一槽位,本发明采用开链法解决此冲突。即,映射到同一槽位的key的地址将被添加到已存在的key的next指针中。哈希表位于整个tablet表的末尾。
tablet表的存储空间与内存分配:如图2所示,一个tablet表的存储空间,除去哈希表所占据的空间,均被用于存储键值数据。本发明采用了定制的非易失性内存分配器来管理tablet表的存储空间。该内存分配器为从16字节到1024字节,以16字节为递增单位的每一种块大小维护了一个空闲块链表。对于一次内存分配请求,分配器首先将请求分配的空间大小调整为不小于其值的最小块大小。然后在对应的空闲块链表中查找空闲块。若不存在相应的空闲块,则在更大的块的空闲链表中查找,如此往复,直到得到一个不小于请求大小的空闲块。假设请求块大小为N,查找到的空闲块大小为M。则将大小为M的块分为大小为N的块和M-N的块。大小为N的块作为请求的返回值,大小为M-N的块则被添加到其空闲队列中。相应地,释放一个大小为N的块,内存分配至将首先检查该块的相邻块是否为空闲块。若是,则将其从空闲块链表中取出,并与当前块合并为大小为M的更大的块。此过程循环往复,直到不能合并空闲块为止。最后,合并后的空闲块将被添加到对应的空闲链表中。
tablet表的请求队列与工作线程:如图3所示,每个tablet表均分配有独立的请求队列,所有映射到此tablet表的请求都被添加到请求队列的尾部。当请求被添加时,tablet表的工作线程被唤醒,并从请求队列的头部取得一个等待处理的请求。当请求被执行完毕时,工作线程将回复发送给客户端,并检查请求队列是否为空。若不为空,则工作线程重复从头部取请求并执行的过程。否则工作线程持续轮询请求队列头部20us。若此间有请求被添加到请求队列中,则工作线程继续执行头部的请求。否则,工作线程投入睡眠。
tablet表的工作线程执行请求:tablet表工作线程执行查询请求的步骤分为:1.在哈希表中查找指定的key;2.若存在,则返回该key对应的value;否则,返回key不存在的错误。执行***请求的步骤:1.在哈希表中查找指定的key;2.若不存在,则调用本发明的内存分配器,在tablet的存储空间中分配足够存储需被***的键值的空间;若存在:a.已存在的键值数据比新的键值数据占据空间大,则重复利用已存在键值数据的存储空间,并释放多余的空间;b.已存在的键值数据比新的键值数据占据空间小,则释放已存在键值数据的存储空间,并由内存分配器分配更大的存储空间,以存储新的键值数据。执行删除请求的步骤:1.在哈希表中查找指定的key;2.若不存在,则请求完成;否则,释放指定key所占据的存储空间,并将其地址从哈希表中移除。
服务器间的数据复制:为保证单个服务器宕机时,集群仍能够向客户端提供持续的可用性,本发明将每一份数据备份在三个物理隔离的服务器上。当其中一个服务器宕机或不可访问时,剩余的服务器仍可执行客户端的请求服务。这要求三个服务器的数据需要保持一致性。本发明通过将服务器所有的本地修改同步到备份服务器上,来达到数据的一致性。
本发明的主从复制:如图4所示,本发明所述集群中的每一份数据被存储在三个服务器上。其中一个服务器为主节点,其余两个服务器为从节点。所有的客户端请求都被发送到主节点。主节点执行客户端的请求时,若对主节点本地的存储空间进行了修改,则这些修改将被记录。在主节点执行请求完毕时,主节点将首先将这些修改信息同步到两个从节点,并等待从节点的回复。在接收到两个从节点的回复后,主节点回复客户端相应的请求结果。
主节点收集一次请求的所有修改:对于一次查询请求,没有对主节点的本地数据进行修改,因此不必进行主从节点之间的同步操作。对于一次***或删除请求,对主节点的本地非易失性内存存储空间的所有修改都由本发明编写的特定内存分配器所记录。这些修改信息均被存储在一个发送缓冲区中。
主节点同步一次请求的所有修改:在主节点执行完毕客户端请求后,主节点同时发送修改信息缓冲区中的数据到两个从节点,并指定了接收这些数据的从节点的log中的地址。然后,主节点进入等待两个从节点回复的状态。当且仅当两个从节点均回复正常时,主节点向客户端回复正常。否则,主节点向客户端回复相应的错误。
从节点的修改信息log区:从节点中,接收并存储主节点同步的修改信息的区域被称为NMLOG区。每个从节点的tablet中均包含两个NMLOG。主节点的修改信息被顺次写入到1号NMLOG中。当1号NMLOG被写满时,后台的同步线程被唤醒,1号NMLOG中存储的修改信息被同步到从节点相应tablet的对应位置。同时,2号NMLOG被设置为接收修改信息,主节点同步过来的修改信息被存储到2号NMLOG中。
同步过程中主节点崩溃:若在同步修改信息的过程中,主节点崩溃。那么,一个从节点将被选为新的主节点。该新的主节点首先同步两个NMLOG中的修改信息到其本地的非易失性内存存储空间。不完整的修改信息,将被丢弃。如此,新的主节点将达到与原来主节点近似一致的状态(除去可能产生的最后一次不完整的修改信息)。同时,集群将为新的主节点再分配一个从节点,以使其始终具备两个从节点。
同步过程中的从节点崩溃:若同步过程中,从节点崩溃。若从节点可自行恢复,则同步主节点的数据到该从节点。若不可恢复,则集群将为主节点再分配一个从节点,并同步数据到该新的从节点。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的***及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的***及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的***及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (6)
1.一种低延迟分布式存储***,其特征在于,包括:
调度器模块:管理存储***中的服务器节点和客户端,同时,存储了存储***的索引信息,将客户端导向对应的服务器节点;
非易失性内存存储模块:管理存储在非易失性内存中的数据,同时,向客户端提供并发的低延迟的存储服务;
远程直接内存存取模块:提供对所述非易失性内存存储模块中的数据进行远程访问的能力,使用远程直接内存读写功能直接操作所述非易失性内存存储模块中的数据,同时,通过绕过操作***内核的以太网协议栈,降低存储***的访问延迟;
数据冗余备份模块:对存储***中的数据进行冗余备份,包括将数据和元数据同步到物理隔离的备份节点,和保证主从节点数据的一致性,所述数据冗余备份模块通过对修改的数据进行写日志,以达到维持主从节点数据的一致性。
2.根据权利要求1所述的低延迟分布式存储***,其特征在于,管理存储***中的服务器节点和客户端包括:对服务器节点的添加、删除和客户端的加入、离开进行管理,对存储***的索引信息进行更新和维护。
3.根据权利要求1所述的低延迟分布式存储***,其特征在于,管理存储在非易失性内存中的数据包括:
数据分片:将存储于单一服务器节点的数据分为若干个tablet表,每个tablet表对应了键值数据哈希空间中连续不相交的一段空间,每个tablet表都有独立的线程进行访问操作;
多线程执行:服务器节点的所有请求,根据其哈希值计算得到相应存在于的tablet表,并被保存在tablet表的请求队列中,tablet表对应的线程总是取得并执行请求队列头部的请求;
基于哈希表的索引结构:每个tablet表中均包含一个独立的哈希表结构,存储了该tablet表中所有键值数据的键值以及键的哈希值,对于冲突的键,采用开链法解决冲突,哈希表提供了对tablet表中的数据进行查询、***和删除的操作;
非易失性内存分配器:每个tablet表的存储空间由一个独立的非易失性内存分配器管理,对于键值数据的***,由非易失性内存分配器分配相应的空间;对于键值数据的删除,由非易失性内存分配器释放相应的空间。
4.根据权利要求1所述的低延迟分布式存储***,其特征在于,提供对所述非易失性内存存储模块中的数据进行远程访问的能力包括:
远程过程调用接口:在infiniband所提供的远程直接内存访问原语的基础上,对上层提供远程过程调用接口,由客户端发起操作,通过infiniband协议传输到目的服务器,再由目的服务器在本地执行相应的操作;
通信语义模型:使用基于面向报文的非可靠传输的channel型原语,支持一对多的通信能力,为数据库提供可扩展性;
用户态协议层:使用infiniband提供的原语库,旁路了操作***内核的网络协议层,由用户态程序直接访问infiniband网卡发送和接收数据。
5.根据权利要求4所述的低延迟分布式存储***,其特征在于,远程过程调用接口还包括相对于存储***扩展的Add操作,检测提供的键值数据是否已经存在于数据库中。
6.根据权利要求1所述的低延迟分布式存储***,其特征在于,所述数据冗余备份模块包括:
收集单次请求的所有修改:通过将一次请求的所有修改同步到备份节点,达到对数据的备份,通过非易失性内存分配器来达到对每一次写入的跟踪,所有的写入数据以及相应的偏移地址都被记录到特定的发送缓冲区中;
备份数据日志:对备份数据进行写日志,所有待备份的数据均被事先写入到非易失性内存中的日志区中,在服务器崩溃重启时,将首先读取日志中的数据并执行相应的写入操作,以达到与其它数据副本的一致性;
面向连接的远程直接内存写入:在主节点与从节点之间的数据传输采用了面向连接的远程直接内存写入技术。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710941988.5A CN107888657B (zh) | 2017-10-11 | 2017-10-11 | 低延迟分布式存储*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710941988.5A CN107888657B (zh) | 2017-10-11 | 2017-10-11 | 低延迟分布式存储*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107888657A true CN107888657A (zh) | 2018-04-06 |
CN107888657B CN107888657B (zh) | 2020-11-06 |
Family
ID=61781297
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710941988.5A Active CN107888657B (zh) | 2017-10-11 | 2017-10-11 | 低延迟分布式存储*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107888657B (zh) |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109491837A (zh) * | 2018-11-01 | 2019-03-19 | 郑州云海信息技术有限公司 | 一种非易失性内存储器的日志容错处理方法与装置 |
CN109491809A (zh) * | 2018-11-12 | 2019-03-19 | 西安微电子技术研究所 | 一种降低高速总线延迟的通信方法 |
CN109714430A (zh) * | 2019-01-16 | 2019-05-03 | 深圳壹账通智能科技有限公司 | 分布式缓存方法、装置、计算机***及存储介质 |
CN109767247A (zh) * | 2019-01-15 | 2019-05-17 | 武汉费米坊科技有限公司 | 一种分布式商品溯源***及溯源方法 |
CN110109889A (zh) * | 2019-05-09 | 2019-08-09 | 重庆大学 | 一种分布式内存文件管理*** |
CN110262754A (zh) * | 2019-06-14 | 2019-09-20 | 华东师范大学 | 一种面向NVMe和RDMA的分布式存储***及轻量级同步通信方法 |
CN110298031A (zh) * | 2019-05-28 | 2019-10-01 | 北京百度网讯科技有限公司 | 一种词典服务***及模型版本一致性配送方法 |
WO2020024590A1 (en) * | 2018-08-02 | 2020-02-06 | Memverge, Inc. | Persistent memory key-value store in a distributed memory architecture |
CN110968530A (zh) * | 2019-11-19 | 2020-04-07 | 华中科技大学 | 一种基于非易失性内存的键值存储***和内存访问方法 |
CN111049883A (zh) * | 2019-11-15 | 2020-04-21 | 北京金山云网络技术有限公司 | 分布式表格***的数据读取方法、装置及*** |
CN111078607A (zh) * | 2019-12-24 | 2020-04-28 | 上海交通大学 | 面向rdma与非易失性内存的网络访问编程框架部署方法及*** |
CN111368002A (zh) * | 2020-03-05 | 2020-07-03 | 广东小天才科技有限公司 | 一种数据处理方法、***、计算机设备和存储介质 |
CN111381780A (zh) * | 2020-03-06 | 2020-07-07 | 西安奥卡云数据科技有限公司 | 一种持久性存储的高效字节访问存储*** |
CN111400307A (zh) * | 2020-02-20 | 2020-07-10 | 上海交通大学 | 支持远程并发访问的持久哈希表访问*** |
CN111400312A (zh) * | 2020-02-25 | 2020-07-10 | 华南理工大学 | 一种基于改进lsm树的边缘存储数据库 |
CN111459418A (zh) * | 2020-05-15 | 2020-07-28 | 南京大学 | 一种基于rdma的键值存储***传输方法 |
CN112099728A (zh) * | 2019-06-18 | 2020-12-18 | 华为技术有限公司 | 一种执行写操作、读操作的方法及装置 |
WO2021043124A1 (zh) * | 2019-09-06 | 2021-03-11 | 程延辉 | 一种kbroker分布式操作***、存储介质和电子设备 |
CN112597195A (zh) * | 2020-12-16 | 2021-04-02 | 中国建设银行股份有限公司 | 缓存数据刷新方法及分布式*** |
CN112667620A (zh) * | 2020-12-31 | 2021-04-16 | 广州方硅信息技术有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
CN112788082A (zh) * | 2019-11-08 | 2021-05-11 | 内江市下一代互联网数据处理技术研究所 | 一种高可用的内存缓存*** |
CN113326155A (zh) * | 2021-06-28 | 2021-08-31 | 深信服科技股份有限公司 | 一种信息处理方法、装置、***和存储介质 |
CN114338274A (zh) * | 2021-12-30 | 2022-04-12 | 上海交通大学 | 一种异构工业现场总线融合方法及*** |
WO2022089607A1 (zh) * | 2020-10-29 | 2022-05-05 | 第四范式(北京)技术有限公司 | 参数服务器节点的恢复方法和恢复*** |
WO2022252862A1 (zh) * | 2021-06-02 | 2022-12-08 | 北京字节跳动网络技术有限公司 | 计算存储分离***及其数据访问方法、介质和电子设备 |
CN116257521A (zh) * | 2023-01-18 | 2023-06-13 | 深存科技(无锡)有限公司 | 一种基于fpga的kv存储方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101577716A (zh) * | 2009-06-10 | 2009-11-11 | 中国科学院计算技术研究所 | 基于InfiniBand网络的分布式存储方法和*** |
CN102084332A (zh) * | 2008-04-06 | 2011-06-01 | 弗森-艾奥公司 | 将存储请求转换为附加数据存储命令的装置、***和方法 |
CN104364756A (zh) * | 2012-07-11 | 2015-02-18 | 英特尔公司 | 单个数据缓冲器的并行处理 |
CN104750658A (zh) * | 2013-12-27 | 2015-07-01 | 英特尔公司 | 辅助式一致共享存储器 |
US9116819B2 (en) * | 2012-10-17 | 2015-08-25 | Datadirect Networks, Inc. | Reducing metadata in a write-anywhere storage system |
CN105404546A (zh) * | 2015-11-10 | 2016-03-16 | 上海交通大学 | 基于rdma和htm的分布式并发控制方法 |
CN105681402A (zh) * | 2015-11-25 | 2016-06-15 | 北京文云易迅科技有限公司 | 一种基于PCIe闪存卡的分布式高速数据库集成*** |
CN106372013A (zh) * | 2015-07-24 | 2017-02-01 | 华为技术有限公司 | 远程内存访问方法、装置和*** |
-
2017
- 2017-10-11 CN CN201710941988.5A patent/CN107888657B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102084332A (zh) * | 2008-04-06 | 2011-06-01 | 弗森-艾奥公司 | 将存储请求转换为附加数据存储命令的装置、***和方法 |
CN101577716A (zh) * | 2009-06-10 | 2009-11-11 | 中国科学院计算技术研究所 | 基于InfiniBand网络的分布式存储方法和*** |
CN104364756A (zh) * | 2012-07-11 | 2015-02-18 | 英特尔公司 | 单个数据缓冲器的并行处理 |
US9116819B2 (en) * | 2012-10-17 | 2015-08-25 | Datadirect Networks, Inc. | Reducing metadata in a write-anywhere storage system |
CN104750658A (zh) * | 2013-12-27 | 2015-07-01 | 英特尔公司 | 辅助式一致共享存储器 |
CN106372013A (zh) * | 2015-07-24 | 2017-02-01 | 华为技术有限公司 | 远程内存访问方法、装置和*** |
CN105404546A (zh) * | 2015-11-10 | 2016-03-16 | 上海交通大学 | 基于rdma和htm的分布式并发控制方法 |
CN105681402A (zh) * | 2015-11-25 | 2016-06-15 | 北京文云易迅科技有限公司 | 一种基于PCIe闪存卡的分布式高速数据库集成*** |
Non-Patent Citations (2)
Title |
---|
YOUYOU LU等: "Octopus:an RDMA-enabled Distributed Persistent Memory File System", 《PROCEEDINGS OF THE 2017 USENIX ANNUAL TECHNICAL CONFERENCE》 * |
舒继武等: "基于非易失性存储器的存储***技术研究进展", 《科技导报》 * |
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020024590A1 (en) * | 2018-08-02 | 2020-02-06 | Memverge, Inc. | Persistent memory key-value store in a distributed memory architecture |
CN109491837A (zh) * | 2018-11-01 | 2019-03-19 | 郑州云海信息技术有限公司 | 一种非易失性内存储器的日志容错处理方法与装置 |
CN109491809A (zh) * | 2018-11-12 | 2019-03-19 | 西安微电子技术研究所 | 一种降低高速总线延迟的通信方法 |
CN109767247A (zh) * | 2019-01-15 | 2019-05-17 | 武汉费米坊科技有限公司 | 一种分布式商品溯源***及溯源方法 |
CN109714430A (zh) * | 2019-01-16 | 2019-05-03 | 深圳壹账通智能科技有限公司 | 分布式缓存方法、装置、计算机***及存储介质 |
CN110109889A (zh) * | 2019-05-09 | 2019-08-09 | 重庆大学 | 一种分布式内存文件管理*** |
CN110298031A (zh) * | 2019-05-28 | 2019-10-01 | 北京百度网讯科技有限公司 | 一种词典服务***及模型版本一致性配送方法 |
CN110298031B (zh) * | 2019-05-28 | 2023-07-18 | 北京百度网讯科技有限公司 | 一种词典服务***及模型版本一致性配送方法 |
CN110262754A (zh) * | 2019-06-14 | 2019-09-20 | 华东师范大学 | 一种面向NVMe和RDMA的分布式存储***及轻量级同步通信方法 |
CN110262754B (zh) * | 2019-06-14 | 2022-10-04 | 华东师范大学 | 一种面向NVMe和RDMA的分布式存储***及轻量级同步通信方法 |
CN112099728A (zh) * | 2019-06-18 | 2020-12-18 | 华为技术有限公司 | 一种执行写操作、读操作的方法及装置 |
WO2021043124A1 (zh) * | 2019-09-06 | 2021-03-11 | 程延辉 | 一种kbroker分布式操作***、存储介质和电子设备 |
CN112788082A (zh) * | 2019-11-08 | 2021-05-11 | 内江市下一代互联网数据处理技术研究所 | 一种高可用的内存缓存*** |
CN111049883A (zh) * | 2019-11-15 | 2020-04-21 | 北京金山云网络技术有限公司 | 分布式表格***的数据读取方法、装置及*** |
CN111049883B (zh) * | 2019-11-15 | 2022-09-06 | 北京金山云网络技术有限公司 | 分布式表格***的数据读取方法、装置及*** |
CN110968530B (zh) * | 2019-11-19 | 2021-12-03 | 华中科技大学 | 一种基于非易失性内存的键值存储***和内存访问方法 |
CN110968530A (zh) * | 2019-11-19 | 2020-04-07 | 华中科技大学 | 一种基于非易失性内存的键值存储***和内存访问方法 |
CN111078607B (zh) * | 2019-12-24 | 2023-06-23 | 上海交通大学 | 面向rdma与非易失性内存的网络访问编程框架部署方法及*** |
CN111078607A (zh) * | 2019-12-24 | 2020-04-28 | 上海交通大学 | 面向rdma与非易失性内存的网络访问编程框架部署方法及*** |
CN111400307A (zh) * | 2020-02-20 | 2020-07-10 | 上海交通大学 | 支持远程并发访问的持久哈希表访问*** |
CN111400307B (zh) * | 2020-02-20 | 2023-06-23 | 上海交通大学 | 支持远程并发访问的持久哈希表访问*** |
CN111400312A (zh) * | 2020-02-25 | 2020-07-10 | 华南理工大学 | 一种基于改进lsm树的边缘存储数据库 |
CN111400312B (zh) * | 2020-02-25 | 2023-04-28 | 华南理工大学 | 一种基于改进lsm树的边缘存储数据库 |
CN111368002A (zh) * | 2020-03-05 | 2020-07-03 | 广东小天才科技有限公司 | 一种数据处理方法、***、计算机设备和存储介质 |
CN111381780A (zh) * | 2020-03-06 | 2020-07-07 | 西安奥卡云数据科技有限公司 | 一种持久性存储的高效字节访问存储*** |
CN111459418B (zh) * | 2020-05-15 | 2021-07-23 | 南京大学 | 一种基于rdma的键值存储***传输方法 |
CN111459418A (zh) * | 2020-05-15 | 2020-07-28 | 南京大学 | 一种基于rdma的键值存储***传输方法 |
WO2022089607A1 (zh) * | 2020-10-29 | 2022-05-05 | 第四范式(北京)技术有限公司 | 参数服务器节点的恢复方法和恢复*** |
CN112597195A (zh) * | 2020-12-16 | 2021-04-02 | 中国建设银行股份有限公司 | 缓存数据刷新方法及分布式*** |
CN112667620A (zh) * | 2020-12-31 | 2021-04-16 | 广州方硅信息技术有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
WO2022252862A1 (zh) * | 2021-06-02 | 2022-12-08 | 北京字节跳动网络技术有限公司 | 计算存储分离***及其数据访问方法、介质和电子设备 |
CN113326155A (zh) * | 2021-06-28 | 2021-08-31 | 深信服科技股份有限公司 | 一种信息处理方法、装置、***和存储介质 |
CN113326155B (zh) * | 2021-06-28 | 2023-09-05 | 深信服科技股份有限公司 | 一种信息处理方法、装置、***和存储介质 |
CN114338274A (zh) * | 2021-12-30 | 2022-04-12 | 上海交通大学 | 一种异构工业现场总线融合方法及*** |
CN116257521A (zh) * | 2023-01-18 | 2023-06-13 | 深存科技(无锡)有限公司 | 一种基于fpga的kv存储方法 |
CN116257521B (zh) * | 2023-01-18 | 2023-11-17 | 深存科技(无锡)有限公司 | 一种基于fpga的kv存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107888657B (zh) | 2020-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107888657A (zh) | 低延迟分布式存储*** | |
CN110113420B (zh) | 基于nvm的分布式消息队列管理*** | |
US5835908A (en) | Processing multiple database transactions in the same process to reduce process overhead and redundant retrieval from database servers | |
CN101013381B (zh) | 基于对象存储***的分布式锁 | |
CN101019105B (zh) | 使用条带化来存储数据的方法及装置 | |
US8108634B1 (en) | Replicating a thin logical unit | |
US20170024315A1 (en) | Efficient garbage collection for a log-structured data store | |
US7783607B2 (en) | Decentralized record expiry | |
CN112084258A (zh) | 一种数据同步方法和装置 | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
CN103116552A (zh) | 用于在分布式存储***中分配存储空间的方法和装置 | |
CN105426321A (zh) | 采用远程位置信息的rdma友好缓存方法 | |
CN110597452A (zh) | 存储***的数据处理方法及装置、存储服务器及存储介质 | |
CN112307119A (zh) | 数据同步方法、装置、设备及存储介质 | |
CN112000287A (zh) | 一种io请求处理装置、方法、设备及可读存储介质 | |
CN108540510B (zh) | 一种云主机创建方法、装置及云服务*** | |
CN112988680B (zh) | 数据加速方法、缓存单元、电子设备及存储介质 | |
US10284672B2 (en) | Network interface | |
CN113268472A (zh) | 一种分布式数据存储***及方法 | |
CN107181773B (zh) | 分布式存储***的数据存储及数据管理方法、设备 | |
JP2001184248A (ja) | 分散処理システムにおけるデータアクセス管理装置 | |
CN107180082A (zh) | 一种基于多级缓存机制的数据更新***及方法 | |
CN101344882B (zh) | 数据查询方法、***方法及删除方法 | |
CN105320676A (zh) | 一种客户数据查询服务方法及装置 | |
CN113268540B (zh) | 一种数据同步的方法及装置 |
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 |