基于消息队列的并发远程调用系统及方法技术方案

技术编号:35906521 阅读:23 留言:0更新日期:2022-12-10 10:44
本发明专利技术公开了基于消息队列的并发远程调用系统及方法,属于消息队列技术领域,本发明专利技术要解决的技术问题为如何使得RPC系统既可以实现多线程并发处理,又可以实现调用双方解耦,采用的技术方案为:该系统包括在调用方和被调用方的RPC单元之间设置有消息中间件,消息中间件用于调用双方的通信渠道,对消息进行暂存和管理,并对收发消息的双方进行解耦;RPC单元包括回调注册模块、调用转换模块、消息分发模块和消息接收模块;回调注册模块用于记录调用方的回调信息;调用转换模块用于将调用信息转换为消息;消息分发模块用于将收到的消息分发至目的线程;消息接收模块用于监听消息中间件中的消息队列,接收消息。接收消息。接收消息。

【技术实现步骤摘要】
基于消息队列的并发远程调用系统及方法


[0001]本专利技术涉及消息队列
,具体地说是一种基于消息队列的并发远程调用系统及方法。

技术介绍

[0002]近年来,由于互联网的飞速发展,分布式系统有了越来越多的应用。由于整个系统由多个分布式模块组成,一个业务往往会贯穿系统中的多个模块,就需要模块之间有互相调用的能力。远程过程调用(Remote Procedure Call,RPC)系统应运而生。
[0003]传统RPC系统有如下缺点:
[0004]①
业务无法串行化:被调用方需要针对每一个并发调用,启动独立的处理线程,在高并发的场景下,被调用方可能因为启动了过多线程而崩溃。
[0005]②
调用方和被调用方高度耦合:在进行RPC调用时,如果出现被调用方离线,或者网络中断的情况,RPC调用无法进行,业务整体失败。
[0006]故如何使得RPC系统既可以实现多线程并发处理,又可以实现调用双方解耦是目前亟待解决的技术问题。
[0007]专利号为CN112685190A的专利文献公开了基于消息队列的同步调用方法、系统、计算机设备及存储介质,包括将当前消息发送至服务器,并将当前线程根据消息ID进行上锁;接收服务器发送的回包消息;将回包消息与当前消息进行合并,得到合并消息;获取所述回包消息对应的消息ID及回包消息接收时间,根据回包消息接收时间与当前消息对应的发送时间之间的时间间隔进行对应的目标操作。该技术方案虽然使用消息队列实现了RPC的串行化,使得被调用方使用单线程即可完成RPC调用;但是该技术方案限制了被调用方的并发性能,同时也存在双方耦合的问题。

技术实现思路

[0008]本专利技术的技术任务是提供一种基于消息队列的并发远程调用系统及方法,来解如何使得RPC系统既可以实现多线程并发处理,又可以实现调用双方解耦的问题。
[0009]本专利技术的技术任务是按以下方式实现的,一种基于消息队列的并发远程调用系统,该系统包括在调用方和被调用方的RPC单元之间设置有消息中间件,消息中间件用于调用双方的通信渠道,对消息进行暂存和管理,并对收发消息的双方进行解耦;
[0010]RPC单元包括回调注册模块、调用转换模块、消息分发模块和消息接收模块;
[0011]回调注册模块用于记录调用方的回调信息;
[0012]调用转换模块用于将RPC单元调用信息转换为消息;
[0013]消息分发模块用于将收到的消息分发至目的线程;
[0014]消息接收模块用于监听消息中间件中的消息队列,接收消息。
[0015]作为优选,所述消息中间件接收到消息后,将消息暂存在计算机内存中,使得消息的接收方不需要立即处理消息。这个过程类似于手机的短信,用户可以在方便的时间处理
短信;消息中间件将消息按照发送的时间,组织成一个队列,接收方获取消息时,按照时间顺序获取消息,保证消息的正确顺序,通过以上手段,消息中间件做到了发送方和接收方的解耦,发送方发送消息时,不需要考虑接收方是否在线,只需要保证消息中间件在线即可,接收方接受消息时,不需要访问发送方,只需要访问消息中间件即可。
[0016]作为优选,所述回调注册模块采用HashMap数据结构记录调用方的回调信息;
[0017]其中,HashMap是一种由Key和Value组成的键值对型数据结构;在回调注册模块中,Key表示调用ID,Value表示回调函数指针;具体如下:
[0018]当调用发送时,调用方会生成一个调用ID,放入消息中;
[0019]当调用结果返回后,消息分发模块会解析消息中的调用ID,并找到HashMap中相关的键值对,即可找到回调函数的指针;
[0020]通过回调函数指针,调用回调函数。
[0021]作为优选,所述调用转换模块使用JSON规范将PRC单元调用信息转换为字符串,字符串作为消息体,同时将调用ID作为消息头,使字符串和调用ID组成一个完整的消息。
[0022]作为优选,所述消息分发模块收到消息后,访问回调注册模块中的HashMap,找到回调函数的指针,通过回调函数指针,调用回调函数。
[0023]更优地,所述消息接收模块是一个实现了AMQP协议的消息客户端,使用Pull模式定时访问消息中间件,将消息中间件暂存的消息拉取至本地。
[0024]更优地,该系统的工作过程具体如下:
[0025](1)、调用方调用线程将自身信息注册在回调注册模块;
[0026](2)、调用方的调用转换模块将调用信息转换为消息;
[0027](3)、将消息发送至消息中间件;
[0028](4)、被调用方的消息接收模块从消息中间件接收消息;
[0029](5)、被调用方的消息分发模块确定被调用线程,执行调用;
[0030](6)、被调用线程处理业务;
[0031](7)、被调用线程处理完业务后,将调用结果回传至被调用方的调用转换模块;
[0032](8)、被调用方的调用转换模块将调用结果转换为消息,发送至消息中间件;
[0033](9)、调用方的消息接收模块收到消息;
[0034](10)、调用方的消息分发模块根据之前注册的回调信息,找到初始的调用线程;
[0035](11)、调用线程收到调用结果,调用完成。
[0036]一种的基于消息队列的并发远程调用方法,该方法是在调用方和被调用方之间引入消息中间件,作为调用双方的通信渠道,并将RPC单元调用转换为消息,通过消息的发送和回发发送调用信息和回发调用结果;具体如下:
[0037]消息中间件接收到消息后,将消息暂存在计算机内存中,使得消息的接收方不需要立即处理消息。这个过程类似于手机的短信,用户可以在方便的时间处理短信;
[0038]消息中间件将消息按照发送的时间,组织成一个队列,接收方获取消息时,按照时间顺序获取消息,保证消息的正确顺序,通过以上手段,消息中间件做到了发送方和接收方的解耦,发送方发送消息时,不需要考虑接收方是否在线,只需要保证消息中间件在线即可,接收方接受消息时,不需要访问发送方,只需要访问消息中间件即可。
[0039]作为优选,所述RPC单元包括回调注册模块、调用转换模块、消息分发模块和消息
接收模块;
[0040]回调注册模块用于记录调用方的回调信息;
[0041]调用转换模块用于将RPC单元调用信息转换为消息;
[0042]消息分发模块用于将收到的消息分发至目的线程;
[0043]消息接收模块用于监听消息中间件中的消息队列,接收消息。
[0044]更优地,所述回调注册模块采用HashMap数据结构记录调用方的回调信息;
[0045]其中,HashMap是一种由Key和Value组成的键值对型数据结构;在回调注册模块中,Key表示调用ID,Value表示回调函数指针;具体如下:
[0046]当调用发送时,调用方会生本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于消息队列的并发远程调用系统,其特征在于,该系统包括在调用方和被调用方的RPC单元之间设置有消息中间件,消息中间件用于调用双方的通信渠道,对消息进行暂存和管理,并对收发消息的双方进行解耦;RPC单元包括回调注册模块、调用转换模块、消息分发模块和消息接收模块;回调注册模块用于记录调用方的回调信息;调用转换模块用于将调用信息转换为消息;消息分发模块用于将收到的消息分发至目的线程;消息接收模块用于监听消息中间件中的消息队列,接收消息。2.根据权利要求1所述的基于消息队列的并发远程调用系统,其特征在于,所述消息中间件接收到消息后,将消息暂存在计算机内存中;消息中间件将消息按照发送的时间,组织成一个队列,接收方获取消息时,按照时间顺序获取消息。3.根据权利要求1所述的基于消息队列的并发远程调用系统,其特征在于,所述回调注册模块采用HashMap数据结构记录调用方的回调信息;其中,HashMap是一种由Key和Value组成的键值对型数据结构;在回调注册模块中,Key表示调用ID,Value表示回调函数指针;具体如下:当调用发送时,调用方会生成一个调用ID,放入消息中;当调用结果返回后,消息分发模块会解析消息中的调用ID,并找到HashMap中相关的键值对,即可找到回调函数的指针;通过回调函数指针,调用回调函数。4.根据权利要求1所述的基于消息队列的并发远程调用系统,其特征在于,所述调用转换模块使用JSON规范将PRC单元调用信息转换为字符串,字符串作为消息体,同时将调用ID作为消息头,使字符串和调用ID组成一个完整的消息。5.根据权利要求1所述的基于消息队列的并发远程调用系统,其特征在于,所述消息分发模块收到消息后,访问回调注册模块中的HashMap,找到回调函数的指针,通过回调函数指针,调用回调函数。6.根据权利要求1

5中任一项所述的基于消息队列的并发远程调用系统,其特征在于,所述消息接收模块是一个实现了AMQP协议的消息客户端,使用Pull模式定时访问消息中间件,将消息中间件暂存的消息拉取至本地。7.根据权利要求6项所述的基于消息队列的并发远程调用系统,其特征在于,该系统的工作过程具体如下:(1)、调用方调用线程将自身信息注册在回调注册模块;(2)、调用方的调用转换模块将调用信息转换为消息;(3)、将消息发送至消息中间件;(...

【专利技术属性】
技术研发人员:许晓笛陈磊
申请(专利权)人:浪潮软件集团有限公司
类型:发明
国别省市:

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

1