一种基于thrift框架threadpool模式的资源调用方法技术

技术编号:27534888 阅读:7 留言:0更新日期:2021-03-03 11:19
本发明专利技术公开了一种基于thrift框架threadpool模式的资源调用方法,属于远程调用技术领域,包括以下步骤:S1、服务端创建共享内存,将共享内存的地址映射到内存空间;S2、客户端连接服务端时,服务端通过主线程向客户端分配线程,并将该线程ID和客户端所需系统资源进行绑定;S3、客户端向服务端发出RPC请求时,服务端提取线程ID对应的系统资源进行使用;S4、客户端退出服务端时,服务端释放系统资源解除绑定。通过将线程和客户端所需的系统资源进行绑定,当客户端的RPC接口向服务端发出请求时,根据线程ID选择相应的系统资源进行使用,即使客户端使用多个RPC接口时能够快速的查找到当前线程所对应的系统资源。前线程所对应的系统资源。前线程所对应的系统资源。

【技术实现步骤摘要】
一种基于thrift框架threadpool模式的资源调用方法


[0001]本专利技术涉及远程调用
,特别涉及一种基于thrift框架threadpool模式的资源调用方法。

技术介绍

[0002]远程过程调用(英语:Remote Procedure Call,缩写:RPC)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。Thrift是一个跨语言的服务部署框架,最初有Facebook于2007年开发,2008年进入Apache开源项目。Thrift通过一个中间语言(IDL,接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码,并由生成的代码负责RPC协议层和传输层的实现。thrift支持多种服务模式,其中包括threadpool模式(多线程服务模式,使用标准的阻塞式IO)。
[0003]threadpool模式当中,主线程会先创建一定数量的线程池,然后主线程负责阻塞式监听新客户端的到来,将业务交由一个线程池中的线程进行处理。当提供的RPC的接口需要为同一个客户端分配资源时,thrift并没有将线程和分配资源做绑定,因此需要每个客户端进行初始化将资源的指针传回,这样做增加了RPC服务的风险或者每次客户端调用RPC接口都重复申请资源和释放资源,大大降低了RPC接口的性能。

技术实现思路

[0004]本专利技术的目的就在于为了解决上述threadpool模式中向同一个客户端分配资源时,都重复申请资源和释放资源,增加了RPC服务的风险以及降低了RPC接口的性能的问题而提供一种基于thrift框架threadpool模式的资源调用方法,具有线程和分配资源进行绑定,提高RPC接口的性能,减少了服务端对资源的申请和释放以及增加了服务端的安全性的优点。
[0005]本专利技术通过以下技术方案来实现上述目的,一种基于thrift框架threadpool模式的资源调用方法,包括以下步骤:
[0006]S1、服务端创建共享内存,将共享内存的地址映射到内存空间;
[0007]S2、客户端连接服务端时,服务端通过主线程向客户端分配线程,并将该线程ID和客户端所需系统资源进行绑定;
[0008]S3、客户端向服务端发出RPC请求时,服务端提取线程ID对应的系统资源进行使用;
[0009]S4、客户端退出服务端时,服务端释放系统资源解除绑定。
[0010]优选的,所述共享内存的创建方法为:
[0011]S101、服务端的RPC服务监听端口利用ftok函数以及shmget函数计算出内存标识符;
[0012]S102、申请线程池数量乘以数据结构字节数的共享内存;
[0013]S103、使用内存标识符当作参数调用shmat函数将共享内存的地址映射到内存空
间。
[0014]优选的,所述线程ID和客户端所需要的系统资源绑定的方法为:
[0015]S201、获取当前线程ID;
[0016]S202、申请客户端所需要的系统资源;
[0017]S203、将线程ID和申请的资源进行绑定;
[0018]S204、填充至共享内存的映射空间里。
[0019]优选的,所述系统资源的释放和解除绑定的方法为:
[0020]S401、获取当前线程ID;
[0021]S402、查找线程ID所对应的系统资源;
[0022]S403、释放资源;
[0023]S404、删除共享内存映射空间内当前线程ID的信息。
[0024]优选的,所述线程ID对应独立的线程,线程对应独立的客户端。
[0025]与现有技术相比,本专利技术的有益效果是:通过将线程和客户端所需的系统资源进行绑定,当客户端的RPC接口向服务端发出请求时,根据线程ID选择相应的系统资源进行使用,即使客户端使用多个RPC接口时能够快速的查找到当前线程所对应的系统资源,只有客户端与服务端断开连接时,共享内存才开始释放资源,减少了服务端对资源的申请和释放,提高RPC接口的性能,也增加了服务端的安全性。
附图说明
[0026]图1为本专利技术的资源调用方法流程图。
[0027]图2为本专利技术的共享内存创建方法流程图。
[0028]图3为本专利技术的线程ID和客户端所需要的系统资源绑定流程图。
[0029]图4为本专利技术的解除绑定和系统资源释放流程图。
具体实施方式
[0030]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0031]请参阅图1所示,一种基于thrift框架threadpool模式的资源调用方法,包括以下步骤:
[0032]S1、服务端创建共享内存,将共享内存的地址映射到内存空间,共享内存会映射一个内存空间,该内存空间提供线程读取访问,如图2所示,所述共享内存的创建方法为:
[0033]S101、服务端的RPC服务监听端口利用ftok函数以及shmget函数计算出内存标识符;
[0034]S102、申请线程池数量乘以数据结构字节数的共享内存,共享内存映射的内存空间可以放置容量为线程池数量乘以数据结构字节数的数据资源;
[0035]S103、使用内存标识符当作参数调用shmat函数将共享内存的地址映射到内存空间,通过该地址可以在服务端的内存空间内找到该共享内存。;
[0036]S2、客户端连接服务端时,服务端通过主线程向客户端分配线程,并将该线程ID和客户端所需系统资源进行绑定,线程ID和系统资源绑定做为一组结构注册在共享内存当中,所述线程ID对应独立的线程,线程对应独立的客户端,在分配线程时以一个线程分配一个客户端为原则,线程的ID作为被分配线程的身份信息,如图3所示,所述线程ID和客户端所需要的系统资源绑定的方法为:
[0037]S201、获取当前线程ID;
[0038]S202、申请客户端所需要的系统资源;
[0039]S203、将线程ID和申请的资源进行绑定;
[0040]S204、填充至共享内存的映射空间里。;
[0041]S3、客户端向服务端发出RPC请求时,服务端提取线程ID对应的系统资源进行使用,服务端处理客户端RPC接口请求,根据threadpool模式中一个客户端对应一个线程的特性寻找出处理线程所对应的线程ID,再根据线程ID找到客户端所需的系统资源进行使用;
[0042]S4、客户端退出服务端时,服务端释放系统资源解除绑定,在客户端退出时,清除客户端对应的资源,以及删除共享内存当前线程ID所对应的信息,如图4所示,所述系统资源的释放和解除绑定的方法为:
[0043]S401、获取当前线程ID;
[0044]S402、查找线程本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于thrift框架threadpool模式的资源调用方法,其特征在于,包括以下步骤:S1、服务端创建共享内存,将共享内存的地址映射到内存空间;S2、客户端连接服务端时,服务端通过主线程向客户端分配线程,并将该线程ID和客户端所需系统资源进行绑定;S3、客户端向服务端发出RPC请求时,服务端提取线程ID对应的系统资源进行使用;S4、客户端退出服务端时,服务端释放系统资源解除绑定。2.根据权利要求1所述的一种基于thrift框架threadpool模式的资源调用方法,其特征在于,所述共享内存的创建方法为:S101、服务端的RPC服务监听端口利用ftok函数以及shmget函数计算出内存标识符;S102、申请线程池数量乘以数据结构字节数的共享内存;S1...

【专利技术属性】
技术研发人员:庞文俊陈继古传路李小超伊晓强
申请(专利权)人:清创网御合肥科技有限公司
类型:发明
国别省市:

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

1