当前位置: 首页 > 专利查询>南京大学专利>正文

一种基于RDMA的键值存储系统及其工作方法技术方案

技术编号:21913879 阅读:27 留言:0更新日期:2019-08-21 12:24
本发明专利技术公开了一种基于RDMA的键值存储系统及其工作方法。所述系统通过使用RDMA的原语实现键值存储的put操作和get操作。其中get操作仅使用RDMA的read原语;put操作有两种实现模式,会根据value的大小来决定使用哪种模式。为了提高get操作的性能,共享hash表使用了线性探测方式解决hash冲突问题,并结合了RDMA的read原语一次可以读取连续内存的特性,允许客户端每次读取多个hash表记录以提高命中率。为了解决客户端与服务器端的读写竞争问题,hash表采用自校验数据结构。通过这些设计,降低了CPU负载,降低网络的时延提升了服务质量,并提高了系统的吞吐量。

A Key Value Storage System Based on RDMA and Its Working Method

【技术实现步骤摘要】
一种基于RDMA的键值存储系统及其工作方法
本专利技术属于RDMA和存储
,具体涉及一种基于RDMA的键值存储系统及其工作方法。
技术介绍
随着移动互联网时代的到来,数据量得到了急速增长。像memcached、redis等分布式内存存储系统得到广泛应用。正是因为内存系统取消了磁盘、SSD的限制,数据存储在系统内存中,所以极大地加速了应用的性能。但是,在一些大型的可扩展的应用中,系统的网络通信往往花费几百微秒,这也成为了应用中新的性能瓶颈。为了提高网络性能,一些内存存储系统使用了RDMA。RDMA可以直接访问远端节点的内存,提供了内核旁路和零拷贝数据传输的优势。与TCP/UDP传输相比,RDMA可以获得更低的时延、更高的吞吐量。RDMA的IBverbs库提供了双边原语操作send/recv和单边原语操作read/write等特性。send/recv原语提供了用户层的信息交换方式,应用层绕开系统内核直接与网卡适配器进行信息交换。send操作需要远端机器的recv操作相互配合来完成,用户层的应用必须使用网卡提供的API重新改写,才可以进行信息传输。read/write原语允许直接读取或者写入远端机器内存里的数据,而这一过程完全不需要远端机器CPU的参与,远端机器完全无感知。同样用户必须重新改写应用,才可以使用read/write原语。基于以太网的分布式系统,CPU往往都是很宝贵的资源。通常一台计算机上会运行多个应用程序,这些程序共享操作环境。如果内核和CPU旁路,服务器端只需要使用很少数量的CPU核就可以使网络达到饱和,充分利用网络性能。而RDMA的单边操作完成不需要远端机器的CPU参与,有效降低CPU的负载。由于read/write的远端机器无感知的特性,针对键值存储系统的put操作和get操作的底层实现也就会有变化。现有的基于RDMA设计的键值存储针对put操作设计,大多采用轮询线程来监听数据的到来。这虽然有利于性能的提高,但极大地耗费了CPU的资源。而且大多数系统设计的时候都有着数据的拷贝操作,对于数据拷贝需要消耗服务器的CPU的资源。如果value的数据量过大,拷贝就会严重影响系统的性能。此外,现有的键值存储系统中,总是服务器端处理所有的数据读写请求,而服务器的处理能力总是有上限的。
技术实现思路
专利技术目的:针对现有技术的缺陷和不足,本专利技术提出了新的基于RDMA的键值存储系统,减少CPU的数据拷贝操作,降低网络的时延提高服务质量,并提高系统的吞吐量。本专利技术的另一目的在于提供上述基于RDMA的键值存储系统的工作方法。技术方案:根据本专利技术的第一方面,提供一种基于RDMA的键值存储系统,所述系统包括:客户端,向服务器端发起操作请求,对服务器端内存中的数据进行查询或修改;服务器端,提供存储服务,接收多个客户端的操作请求,根据请求写入数据到内存或者返回查询结果,其中服务器端在启动的时候会向系统申请一块内存,并向RDMA网卡进行注册,该块内存包含共享hash表和value存储区两部分,hash表用于记录key与value的映射信息,value存储区用于存储value,客户端与服务器端建立连接的时候会获取该块内存的注册信息,这样客户端就可以通过RDMA网卡直接访问该块内存区域。根据本专利技术的第二方面,提供上述基于RDMA的键值存储系统的工作方法,所述方法包括:put操作,客户端将key和value存储到服务器端,客户端根据value数据的大小选择RDMA不同的传输模式,将key和value存储到服务器端的内存中;get操作:客户端根据key值获取到相应的value值,客户端使用RDMA的read原语从服务器端读取key所对应的value,这个过程完全不需要服务器端参与;共享hash表:服务器端采用线性探测hash方式记录key与value的映射关系,所有客户端都可以通过RDMA操作直接访问该hash表。进一步地,所述put操作包括:如果value小于指定阈值S,客户端使用RDMA的send原语,将key和value一同发送给服务器端,服务器接收到key和value后,在hash表记录中存储key和value的地址,在value存储区存储value值;如果value大于或等于指定阈值S,客户端先发送key并请求服务器端分配value存储在服务器端的内存地址,服务器端接收到请求后为value分配存储地址,在hash表记录中存储key和value的地址并将该地址发送给客户端,客户端获得value存储地址后,再通过RDMA的write原语直接将value写到服务器端的value存储区。进一步地,所述get操作包括:a)客户端通过read原语操作获取相应的key在服务器端hash表上的映射记录,若没有找到key所对应的映射记录,返回空值,否则转步骤b);b)查询本地缓存是否有对应的key缓存的value数据,若没有,则转步骤c);c)根据步骤a)获取的value的存储地址,再次使用read原语操作从服务器端读取value值。进一步地,所述服务器端采用线性探测hash方式记录key与value的映射关系包括:服务器端接收到客户端发来的key以后,通过hash函数计算当前key存储在hash表的位置为桶b=hash(key),如果桶b为空就将key存储在该桶里,否则就从桶b开始线性地往下查找一个空的桶将key存储该桶中。进一步地,所述服务器端采用线性探测hash方式记录key与value的映射关系还包括:服务器端将连续的B个桶定义为一个块,存储key的时候探测的桶的个数不超过M*B,如果服务器端无法在M*B个桶里为key找到一个空的桶,则将原来的hash表扩展N倍,N>1。进一步地,所述客户端通过RDMA操作直接访问hash表的过程包括:客户端发起get操作,每次按块的大小从hash表中读取记录,查询当前块里是否包含查询的key,如果不包含继续读取下一个连续的块,最多读取M个块。进一步地,所述hash表的每一条记录都为带有自校验功能的数据结构,自验证数据结构包含:in_use,表示当前的记录是否为空;key,表示实际的键;valuepointer,指向存储value的内存地址;checksum1,表示value的校验和;checksum2,表示整体记录的校验和。有益效果:和现有技术相比,本专利技术具有以下优势:1、高性能:客户端的get操作完全不需要服务器端参与,所有客户端可以并发的请求数据,极大地提高了系统的处理能力。2、低CPU负载:客户端的put操作会根据value的大小选择不同传输数据模式,如果value过大,会采用RDMA的wirte操作直接将value写到服务器端的内存,减少拷贝操作降低CPU负载。同时RDMA网络本身就不需要系统内核的参与,系统发送与接收数据不需要用户态与内核态来回切换。3、高可扩展性:服务器端存储hash表和value的内存都是共享的,客户端对于数据的读取请求不受服务器端性能的影响。附图说明图1是本专利技术的基于RDMA的键值存储系统架构图;图2是本专利技术的put操作流程设计示意图;图3是本专利技术的get操作流程设计示意图;图4是本专利技术的自校验数据结构示意图。具体实施方式下面结合附图对本专利技术本文档来自技高网
...

【技术保护点】
1.一种基于RDMA的键值存储系统,其特征在于,所述系统包括:客户端,向服务器端发起操作请求,对服务器端内存中的数据进行查询或修改;服务器端,提供存储服务,接收多个客户端的操作请求,根据请求写入数据到内存或者返回查询结果,其中服务器端在启动的时候会向系统申请一块内存,并向RDMA网卡进行注册,该块内存包含共享hash表和value存储区两部分,hash表用于记录key与value的映射信息,value存储区用于存储value,客户端与服务器端建立连接的时候会获取该块内存的注册信息,这样客户端就可以通过RDMA网卡直接访问该块内存区域。

【技术特征摘要】
1.一种基于RDMA的键值存储系统,其特征在于,所述系统包括:客户端,向服务器端发起操作请求,对服务器端内存中的数据进行查询或修改;服务器端,提供存储服务,接收多个客户端的操作请求,根据请求写入数据到内存或者返回查询结果,其中服务器端在启动的时候会向系统申请一块内存,并向RDMA网卡进行注册,该块内存包含共享hash表和value存储区两部分,hash表用于记录key与value的映射信息,value存储区用于存储value,客户端与服务器端建立连接的时候会获取该块内存的注册信息,这样客户端就可以通过RDMA网卡直接访问该块内存区域。2.根据权利要求1所述的基于RDMA的键值存储系统的工作方法,其特征在于,所述方法包括:put操作,客户端将key和value存储到服务器端,客户端根据value数据的大小选择RDMA不同的传输模式,将key和value存储到服务器端的内存中;get操作:客户端根据key值获取到相应的value值,客户端使用RDMA的read原语从服务器端读取key所对应的value,这个过程完全不需要服务器端参与;共享hash表:服务器端采用线性探测hash方式记录key与value的映射关系,所有客户端都可以通过RDMA操作直接访问该hash表。3.根据权利要求2所述的基于RDMA的键值存储系统的工作方法,其特征在于,所述put操作包括:如果value小于指定阈值S,客户端使用RDMA的send原语,将key和value一同发送给服务器端,服务器接收到key和value后,在hash表记录中存储key和value的地址,在value存储区存储value值;如果value大于或等于指定阈值S,客户端先发送key并请求服务器端分配value存储在服务器端的内存地址,服务器端接收到请求后为value分配存储地址,在hash表记录中存储key和value的地址并将该地址发送给客户端,客户端获得value存储地址后,再通过RDMA的write原语直接将value写到服务器端的value存储区。4.根据权利要求3所述的基于RDMA的键值存储系统的工作方法,其特征在于,所述指定阈值S为1KB。5...

【专利技术属性】
技术研发人员:王成唐斌叶保留陆桑璐王剑钱琳
申请(专利权)人:南京大学国网浙江省电力有限公司南瑞集团有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1