一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于RPC代理解决多进程访问LevelDB的方法与流程

2022-05-08 06:50:50 来源:中国专利 TAG:

一种基于rpc代理解决多进程访问leveldb的方法
技术领域
1.本发明涉及rpc访问leveldb领域,具体的是一种基于rpc代理解决多进程访问leveldb的方法。


背景技术:

2.leveldb是能够处理十亿级别规模key-value型数据持久性存储的c 程序库,leveldb是由google开发并开源,比较知名的项目如chrome浏览器以及ipfs文件系统底层都使用leveldb作为元数据的管理引擎。随着leveldb被大量广泛的使用,一个明显的缺陷限制了它的继续发展,leveldb只允许单进程访问,如果想实现并发,只能通过单进程下的多线程完成并发的效果,而现实中有两个明显的使用场景:一个进程读写leveldb,其他进程对leveldb做只读操作;一个进程读写leveldb,其他本地进程甚至远程进程也同时读写同一个leveldb。
3.这两种场景leveldb都没有给出理想的方案;第一个问题迂回的解决方案普遍使用的是对其他只读leveldb的进程,需要重新拷贝一份leveldb数据,带来的弊端就是对存储空间不必要的浪费,尤其是在数据量达到tb甚至pb级别而且存在多个只读进程的需求。第二个问题就完全没有成熟的解决方案。


技术实现要素:

4.为解决上述背景技术中提到的不足,本发明的目的在于提供一种基于rpc代理解决多进程访问leveldb的方法。
5.本发明的目的可以通过以下技术方案实现:
6.一种基于rpc代理解决多进程访问leveldb的方法,所述方法包括以下步骤:
7.s1、在leveldb服务器端,启动rpc代理服务器端模块,完成随后的进程读写操作;
8.s2、在leveldb客户端,启动rpc代理客户端模块,rpc代理客户端模块通过rpc连接模块自动连接到rpc代理服务器端模块,准备就绪后完成随后的进程读写操作。
9.进一步地,所述rpc代理客户端模块、rpc代理服务器端模块和rpc连接模块均为新增模块。
10.进一步地,所述rpc代理客户端模块负责接收从本地或者远程的客户端进程发出的读写请求,包括k-v数据库的get、put、delete、sync、close、batchputdelete、has、getsize、query多种必要接口,并负责通过rpc连接模块转发上述读写请求至rpc代理服务器端模块,同时在第一次启动时连接到rpc代理服务器端模块,将自己的标识发送给rpc代理服务器端模块,随后的读写数据请求使用随机的uuid唯一指定符标识此次请求。
11.进一步地,所述rpc连接模块负责转发和接收rpc代理客户端模块和rpc代理服务器端模块之间的所有通讯。
12.进一步地,所述rpc代理服务器端模块负责接收和响应来在于通过rpc连接模块传递过来的rpc代理客户端模块发来的请求。
13.进一步地,所述rpc代理服务器端模块启动仅有的一个实例,以ip地址和端口的组合方式等待rpc代理客户端模块建立连接,将leveldb的读写接口均登记在自己的模块里,等待rpc代理客户端模块发送建立连接请求,建立连接请求后记载rpc代理客户端的标识;
14.同时,接收读写请求时将rpc代理客户端模块的等待读写请求发送过来时转发给leveldb本身,等读写响应从leveldb返回时,按照从rpc代理客户端模块发送过来的uuid查询到之前的请求,并将响应发送回rpc代理客户端模块相应的那次请求。
15.进一步地,所述s2中新增模块准备就绪后,s2的具体步骤如下:
16.1)、leveldb客户端应用程序试图打开leveldb:
17.①
如果leveldb没有打开,先检查rpc代理服务器端模块是否启动,如果没有则启动rpc代理服务器端模块,将leveldb相应的读写请求接口以回调函数形式保存下来,然后将读写请求发送至leveldb的读写请求模块,最后再发送给leveldb本身,响应原路返回;
18.②
如果leveldb已经打开,先检查是否第一次连接,如果不是将rpc代理客户端必要信息注册给rpc代理服务器端模块,否则将读写请求发送给rpc代理客户端模块;
19.2)、rpc代理客户端模块将读写请求通过rpc连接模块发送给rpc代理服务器端模块;
20.3)、rpc代理服务器端模块将读写请求直接发送到已经保存的leveldb原始的读写请求回调函数接口;
21.4)、leveldb原始的读写请求接口模块将读写请求直接发送给leveldb本身;
22.5)、leveldb处理读写请求并从底层的存储系统获取响应,随后将响应原路返回给客户端应用程序。
23.本发明的有益效果:
24.本发明基于rpc的服务器端和客户端,本地和远程的多个进程都可以对leveldb同时发起各种读写请求,可以为leveldb带来更大的使用弹性和便利性,同时避免了大量不必要的的存储空间浪费。
附图说明
25.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图;
26.图1是本发明基于rpc代理解决多进程访问leveldb的方法示意图;
27.图2是本发明新增模块准备就绪后的具体步骤示意图。
具体实施方式
28.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
29.如图1所示,一种基于rpc代理解决多进程访问leveldb的方法,所述方法包括以下步骤:
30.s1、在leveldb服务器端,启动rpc代理服务器端模块,完成随后的进程读写操作;
31.s2、在leveldb客户端,启动rpc代理客户端模块,rpc代理客户端模块通过rpc连接模块自动连接到rpc代理服务器端模块,准备就绪后完成随后的进程读写操作,rpc代理客户端模块、rpc代理服务器端模块和rpc连接模块均为新增模块。
32.各模块的作用如下:
33.rpc代理客户端模块:负责接收从本地或者远程的客户端进程发出的读写请求,包括k-v数据库的get、put、delete、sync、close、batchputdelete、has、getsize、query多种必要接口,并负责通过rpc连接模块转发上述读写请求至rpc代理服务器端模块,同时在第一次启动时连接到rpc代理服务器端模块,将自己的标识发送给rpc代理服务器端模块,随后的读写数据请求使用随机的uuid唯一指定符标识此次请求。
34.rpc连接模块:负责转发和接收rpc代理客户端模块和rpc代理服务器端模块之间的所有通讯。
35.rpc代理服务器端模块:负责接收和响应来在于通过rpc连接模块传递过来的rpc代理客户端模块发来的请求。
36.rpc代理服务器端模块启动仅有的一个实例,以ip地址和端口的组合方式等待rpc代理客户端模块建立连接,将leveldb的读写接口均登记在自己的模块里,等待rpc代理客户端模块发送建立连接请求,建立连接请求后记载rpc代理客户端的标识;
37.同时,接收读写请求时将rpc代理客户端模块的等待读写请求发送过来时转发给leveldb本身,等读写响应从leveldb返回时,按照从rpc代理客户端模块发送过来的uuid查询到之前的请求,并将响应发送回rpc代理客户端模块相应的那次请求。
38.如图2所示,s2中新增模块准备就绪后,s2的具体步骤如下:
39.1)、leveldb客户端应用程序试图打开leveldb:
40.①
如果leveldb没有打开,先检查rpc代理服务器端模块是否启动,如果没有则启动rpc代理服务器端模块,将leveldb相应的读写请求接口以回调函数形式保存下来,然后将读写请求发送至leveldb的读写请求模块,最后再发送给leveldb本身,响应原路返回;
41.②
如果leveldb已经打开,先检查是否第一次连接,如果不是将rpc代理客户端必要信息注册给rpc代理服务器端模块,否则将读写请求发送给rpc代理客户端模块;
42.2)、rpc代理客户端模块将读写请求通过rpc连接模块发送给rpc代理服务器端模块;
43.3)、rpc代理服务器端模块将读写请求直接发送到已经保存的leveldb原始的读写请求回调函数接口;
44.4)、leveldb原始的读写请求接口模块将读写请求直接发送给leveldb本身;
45.5)、leveldb处理读写请求并从底层的存储系统获取响应,随后将响应原路返回给客户端应用程序。
46.在实现方式方面,考虑到leveldb本身是c 语言实现,同时在它之上有其他编程语言的实现,包括golang,python,rust和java语言等,本发明的实现方式是在golang的基础上完成的,而rpc的实现方式也可以采用多种方式,比如grpc或者golang自带的rpc库,基于性能和简便性的考量,本发明实现方式采用的是golang自带的rpc库。
47.本发明中描述的方法,可以为leveldb带来更大的使用弹性和便利性,同时避免了
大量不必要的的存储空间浪费。
48.以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献