一种基于KDBus的RPC通信方法技术

技术编号:38339719 阅读:11 留言:0更新日期:2023-08-02 09:20
本发明专利技术提供了RPC通信技术领域的一种基于KDBus的RPC通信方法,包括:步骤S10、发送端的第一RPC控制程序发布可用服务列表;步骤S20、接收端的第二RPC控制程序基于所述可用服务列表与内核的第二KDBus建立对应的代理连接;步骤S30、发送端基于所述可用服务列表发起RPC服务方法调用,生成调用报文;步骤S40、发送端将所述调用报文转发给内核的第一KDBus,第一KDBus基于所述调用报文与接收端建立连接;步骤S50、发送端将RPC服务方法调用所需的调用数据写入所述调用报文,通过发送线程将所述调用报文发送给接收端;步骤S60、接收端通过接收线程接收所述调用报文,基于所述调用报文执行RPC服务方法调用,向发送端反馈RPC调用结果。本发明专利技术的优点在于:极大的提升了RPC通信效率。极大的提升了RPC通信效率。极大的提升了RPC通信效率。

【技术实现步骤摘要】
一种基于KDBus的RPC通信方法


[0001]本专利技术涉及RPC通信
,特别指一种基于KDBus的RPC通信方法。

技术介绍

[0002]RPC功能允许设备通过网络控制其他设备,目前的RPC框架多为电脑、服务器等高性能设备而设计的,并未针对物联网环境中的性能有限的嵌入式设备进行相应优化,使得嵌入式设备进行RPC通信的效率低下。因此,如何提供一种基于KDBus的RPC通信方法,实现提升RPC通信效率,成为一个亟待解决的技术问题。

技术实现思路

[0003]本专利技术要解决的技术问题,在于提供一种基于KDBus的RPC通信方法,实现提升RPC通信效率。
[0004]本专利技术是这样实现的:一种基于KDBus的RPC通信方法,包括如下步骤:
[0005]步骤S10、发送端的第一RPC控制程序发布可用服务列表;
[0006]步骤S20、接收端的第二RPC控制程序基于所述可用服务列表与内核的第二KDBus建立对应的代理连接;
[0007]步骤S30、发送端基于所述可用服务列表发起RPC服务方法调用,生成调用报文;
[0008]步骤S40、发送端将所述调用报文转发给内核的第一KDBus,第一KDBus基于所述调用报文与接收端建立连接;
[0009]步骤S50、发送端将RPC服务方法调用所需的调用数据写入所述调用报文,通过发送线程将所述调用报文发送给接收端;
[0010]步骤S60、接收端通过接收线程接收所述调用报文,基于所述调用报文执行RPC服务方法调用,向发送端反馈RPC调用结果。
[0011]进一步地,所述步骤S10具体为:
[0012]发送端的第一RPC控制程序通过DBus的自动内观功能,从上层应用程序中收集功能以生成可用服务列表,并将所述可用服务列表发布给网络中连接的其他设备。
[0013]进一步地,所述步骤S30中,所述调用报文包括报文头以及负载,所述报文头包括发送端id、接收端id以及负载长度。
[0014]进一步地,所述步骤S40具体为:
[0015]发送端将所述调用报文转发给内核的第一KDBus,第一KDBus解析所述调用报文得到接收端id,判断所述接收端id是否在预设的本地连接列表中,若是,则基于所述接收端id与接收端建立连接;若否,则基于所述接收端id与接收端建立连接后,对接收端的TCP连接列表进行检查。
[0016]进一步地,所述步骤S50具体包括:
[0017]步骤S51、发送端将RPC服务方法调用所需的调用数据写入所述调用报文的负载中,基于所述调用数据的大小更新调用报文的负载长度;
[0018]步骤S52、发送端预先创建一处于睡眠状态的发送线程,将所述调用报文存储至发送线程的消息队列中,唤醒所述发送线程;
[0019]步骤S53、所述发送线程将消息队列中的调用报文发送给接收端。
[0020]进一步地,所述步骤S53具体为:
[0021]设定一文件大小阈值,所述发送线程判断消息队列中的调用报文的大小是否超过文件大小阈值,若是,则所述发送线程基于共享内存技术将消息队列中的调用报文发送给接收端;若否,则所述发送线程将消息队列中的调用报文直接发送给接收端。
[0022]进一步地,所述步骤S60具体包括:
[0023]步骤S61、接收端的第二RPC控制程序创建若干个接收线程,将各所述接收线程注册于内核中;
[0024]步骤S62、各所述接收线程分别启动一个服务端socket来并发接收调用报文,将所述调用报文阻塞在recv()接收函数中;
[0025]步骤S63、接收端校验所述调用报文是否存在对应的代理连接,若是,则进入步骤S64;若否,则将所述调用报文携带的发送端id作为key保存在预先创建的哈希表中,在第二RPC控制程序基于所述调用报文与内核的第二KDBus建立代理连接后,基于所述哈希表存储的发送端id读取调用报文,并进入步骤S64;
[0026]步骤S64、接收端基于所述调用报文执行RPC服务方法调用,将RPC调用结果通过所述代理连接返回给内核的第二KDBus,第二KDBus基于所述发送端id将RPC调用结果反馈给发送端。
[0027]本专利技术的优点在于:
[0028]通过发送端的第一RPC控制程序发布可用服务列表,接收端的第二RPC控制程序基于可用服务列表与内核的第二KDBus建立对应的代理连接;发送端将生成的调用报文转发给内核的第一KDBus,第一KDBus基于调用报文携带的接收端id与接收端建立连接,将RPC服务方法调用所需的调用数据写入调用报文,通过发送线程将调用报文发送给接收端,接收端基于调用报文执行RPC服务方法调用,并向发送端反馈RPC调用结果,即结合KDBus技术来对调用报文进行传输,减少DBus本身频繁的上下文切换与内存拷贝次数,以实现嵌入式设备之间高效的消息传输,最终极大的提升了RPC通信效率。
附图说明
[0029]下面参照附图结合实施例对本专利技术作进一步的说明。
[0030]图1是本专利技术一种基于KDBus的RPC通信方法的流程图。
具体实施方式
[0031]请参照图1所示,本专利技术一种基于KDBus的RPC通信方法的较佳实施例,包括如下步骤:
[0032]步骤S10、发送端的第一RPC控制程序发布可用服务列表;
[0033]步骤S20、接收端的第二RPC控制程序基于所述可用服务列表与本地内核的第二KDBus建立对应的代理连接;每一种将被调用的RPC服务在后续都可以通过所述代理连接转发给内核;某一种RPC服务可能会被删除或被停止,此时第一RPC控制程序会给相连的其他
设备的第二RPC控制程序发送消息,以取消其与内核间针对该RPC服务的代理连接;
[0034]步骤S30、发送端基于所述可用服务列表发起RPC服务方法调用,生成调用报文;
[0035]步骤S40、发送端将所述调用报文转发给本地内核的第一KDBus,第一KDBus基于所述调用报文与接收端建立连接,连接过程基于握手机制进行身份认证;所述第一KDBus运行在发送端的内核,所述第二KDBus运行在接收端的内核;所述第一KDBus和第二KDBus也负责内核空间中RPC控制部分的启动,以实现按需启动;
[0036]步骤S50、发送端将RPC服务方法调用所需的调用数据写入所述调用报文,通过发送线程将所述调用报文发送给接收端;
[0037]步骤S60、接收端通过接收线程接收所述调用报文,基于所述调用报文执行RPC服务方法调用,向发送端反馈RPC调用结果,进而完成发送端和接收端的RPC通信。
[0038]本专利技术基于DBus与KDBus技术,分别针对短数据与长数据在不同的情境下以不同手段传输数据,实现嵌入式设备间的高效消息传输。
[0039]所述步骤S10具体为:
[0040]发送端的第一RPC控制程序通过DBus的自动内观(introspection)功本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于KDBus的RPC通信方法,其特征在于:包括如下步骤:步骤S10、发送端的第一RPC控制程序发布可用服务列表;步骤S20、接收端的第二RPC控制程序基于所述可用服务列表与内核的第二KDBus建立对应的代理连接;步骤S30、发送端基于所述可用服务列表发起RPC服务方法调用,生成调用报文;步骤S40、发送端将所述调用报文转发给内核的第一KDBus,第一KDBus基于所述调用报文与接收端建立连接;步骤S50、发送端将RPC服务方法调用所需的调用数据写入所述调用报文,通过发送线程将所述调用报文发送给接收端;步骤S60、接收端通过接收线程接收所述调用报文,基于所述调用报文执行RPC服务方法调用,向发送端反馈RPC调用结果。2.如权利要求1所述的一种基于KDBus的RPC通信方法,其特征在于:所述步骤S10具体为:发送端的第一RPC控制程序通过DBus的自动内观功能,从上层应用程序中收集功能以生成可用服务列表,并将所述可用服务列表发布给网络中连接的其他设备。3.如权利要求1所述的一种基于KDBus的RPC通信方法,其特征在于:所述步骤S30中,所述调用报文包括报文头以及负载,所述报文头包括发送端id、接收端id以及负载长度。4.如权利要求1所述的一种基于KDBus的RPC通信方法,其特征在于:所述步骤S40具体为:发送端将所述调用报文转发给内核的第一KDBus,第一KDBus解析所述调用报文得到接收端id,判断所述接收端id是否在预设的本地连接列表中,若是,则基于所述接收端id与接收端建立连接;若否,则基于所述接收端id与接收端建立连接后,对接收端的TCP连接列表进行检查。5.如权利要求1所述的一种基于KDBus的RPC通信...

【专利技术属性】
技术研发人员:赵泽钧袁苇
申请(专利权)人:福建新大陆通信科技股份有限公司
类型:发明
国别省市:

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

1