[发明专利]基于消息队列的并发远程调用系统及方法在审
申请号: | 202211051281.4 | 申请日: | 2022-08-31 |
公开(公告)号: | CN115454667A | 公开(公告)日: | 2022-12-09 |
发明(设计)人: | 许晓笛;陈磊 | 申请(专利权)人: | 浪潮软件集团有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 孙园园 |
地址: | 250100 山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 消息 队列 并发 远程 调用 系统 方法 | ||
本发明公开了基于消息队列的并发远程调用系统及方法,属于消息队列技术领域,本发明要解决的技术问题为如何使得RPC系统既可以实现多线程并发处理,又可以实现调用双方解耦,采用的技术方案为:该系统包括在调用方和被调用方的RPC单元之间设置有消息中间件,消息中间件用于调用双方的通信渠道,对消息进行暂存和管理,并对收发消息的双方进行解耦;RPC单元包括回调注册模块、调用转换模块、消息分发模块和消息接收模块;回调注册模块用于记录调用方的回调信息;调用转换模块用于将调用信息转换为消息;消息分发模块用于将收到的消息分发至目的线程;消息接收模块用于监听消息中间件中的消息队列,接收消息。
技术领域
本发明涉及消息队列技术领域,具体地说是一种基于消息队列的并发远程调用系统及方法。
背景技术
近年来,由于互联网的飞速发展,分布式系统有了越来越多的应用。由于整个系统由多个分布式模块组成,一个业务往往会贯穿系统中的多个模块,就需要模块之间有互相调用的能力。远程过程调用(Remote Procedure Call,RPC)系统应运而生。
传统RPC系统有如下缺点:
①业务无法串行化:被调用方需要针对每一个并发调用,启动独立的处理线程,在高并发的场景下,被调用方可能因为启动了过多线程而崩溃。
②调用方和被调用方高度耦合:在进行RPC调用时,如果出现被调用方离线,或者网络中断的情况,RPC调用无法进行,业务整体失败。
故如何使得RPC系统既可以实现多线程并发处理,又可以实现调用双方解耦是目前亟待解决的技术问题。
专利号为CN112685190A的专利文献公开了基于消息队列的同步调用方法、系统、计算机设备及存储介质,包括将当前消息发送至服务器,并将当前线程根据消息ID进行上锁;接收服务器发送的回包消息;将回包消息与当前消息进行合并,得到合并消息;获取所述回包消息对应的消息ID及回包消息接收时间,根据回包消息接收时间与当前消息对应的发送时间之间的时间间隔进行对应的目标操作。该技术方案虽然使用消息队列实现了RPC的串行化,使得被调用方使用单线程即可完成RPC调用;但是该技术方案限制了被调用方的并发性能,同时也存在双方耦合的问题。
发明内容
本发明的技术任务是提供一种基于消息队列的并发远程调用系统及方法,来解如何使得RPC系统既可以实现多线程并发处理,又可以实现调用双方解耦的问题。
本发明的技术任务是按以下方式实现的,一种基于消息队列的并发远程调用系统,该系统包括在调用方和被调用方的RPC单元之间设置有消息中间件,消息中间件用于调用双方的通信渠道,对消息进行暂存和管理,并对收发消息的双方进行解耦;
RPC单元包括回调注册模块、调用转换模块、消息分发模块和消息接收模块;
回调注册模块用于记录调用方的回调信息;
调用转换模块用于将RPC单元调用信息转换为消息;
消息分发模块用于将收到的消息分发至目的线程;
消息接收模块用于监听消息中间件中的消息队列,接收消息。
作为优选,所述消息中间件接收到消息后,将消息暂存在计算机内存中,使得消息的接收方不需要立即处理消息。这个过程类似于手机的短信,用户可以在方便的时间处理短信;消息中间件将消息按照发送的时间,组织成一个队列,接收方获取消息时,按照时间顺序获取消息,保证消息的正确顺序,通过以上手段,消息中间件做到了发送方和接收方的解耦,发送方发送消息时,不需要考虑接收方是否在线,只需要保证消息中间件在线即可,接收方接受消息时,不需要访问发送方,只需要访问消息中间件即可。
作为优选,所述回调注册模块采用HashMap数据结构记录调用方的回调信息;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮软件集团有限公司,未经浪潮软件集团有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211051281.4/2.html,转载请声明来源钻瓜专利网。