一种多节点数据交互的实现方法技术

技术编号:11442576 阅读:201 留言:0更新日期:2015-05-13 13:03
本发明专利技术公开了一种多节点数据交互的实现方法,在每个节点上设置数据服务模块,任一节点上的数据服务模块用于实现该节点自身进程之间的数据交互,同时不同节点上的数据服务模块实现不同节点进程之间的数据交互;所述数据服务模块通过远程过程调用协议实现进程间的数据交互,所述远程过程调用协议的底层通过Qt元对象系统实现。使用该方法可以使分布在同一个节点的多个进程或不同节点上的进程之间顺畅的完成业务管理,同时也可以降低传统数据交互方法程序实现的复杂程度。

【技术实现步骤摘要】
一种多节点数据交互的实现方法
本专利技术涉及多节点之间的业务处理,特别涉及一种节点数据交互的实现方法。
技术介绍
随着计算机以及网络的高速发展,分布式处理系统被大规模应用。分布式系统中某个节点为了访问其他机器节点的数据与资源,一般会通过自定义报文格式的方式进行数据交互或业务处理。这种方式的通信效率非常低而且维护开发工作量较大。当增加或修改某个功能时有可能需要增加新的报文格式或对已有的报文格式进行修改,因此系统中模块之间的耦合程度较高,独立性比较差。如果机器节点之间通过过程调用的方式来访问其他机器节点的数据与资源,就可以大大降低进程实现的复杂度,从而降低进程之间的耦合性,让系统设计变得更加简单。从某种意义上来讲,远程过程调用可看作是把分割的程序通过网络进行重组的过程。通过远程过程调用,当要访问其他机器系统上数据的时候就不需每次拷贝整个数据库或它的大部分程序到用户系统,远程机器节点只需要处理来自客户端的处理请求,甚至只执行一些数据计算,把执行的结果再发送给调用者。当数据存放在某个机器节点时,其他机器节点可以很方便的通过远程过程访问其数据,因此极大提高了分布式系统中计算机资源的利用率。过程调用一般是指将控制从调用者传递到被调用者,被调用者在执行结束后将控制交还给调用者。目前大多数调用者和被调用者是在同一台机器上,它们是在生成可执行程序时由编译器链接起来的,这种过程调用一般称为本地过程调用。远程过程调用指的是由本地机器系统上的某个进程激活远程机器系统上的另外一个进程,远程系统调用对调用者表现为本地过程调用,但实际上是调用了远程系统上的过程。处理远程过程调用的进程由本地客户端进程和其他机器节点进程共同作用。远程过程调用对于本地客户端表现为由调用进程在执行某个控制时首先将过程调用需要的参数以及需要调用的过程生成对应的消息,并通过网络发往其他机器节点其他机器节点接到消息后调用相应过程,调用结束后将执行结果通过网络发送至调用者。传统的过程调用是由开发人员在本地编译完成,并只能运行在本地机器上,这种结构已经无法适应分布式系统应用的实际需求。传统过程调用没有办法充分利用网络上其他机器节点的系统资源,也没有办法提高代码在实体间的共享程度,使得分布式系统机器资源没有得到充分的利用。而远程过程调用很好地解决了传统过程调用,通过远程调用可以充分利用非共享内存的多处理器环境并应用分布在多台机器节点上,应用程序就像在一个多处理器的计算机上运行一样,可以方便的实现过程代码共享,提高系统资源的利用率。远程过程调用和通过定义报文传递处理消息相比,前者语义更加清楚、使用更加简单、通用性以及可扩展性更强,而且有着更高的通信效率。当在系统或节点之间采用远程过程调用(RemoteProcedureCall,RPC)之后,原先节点之间的数据及操作处理由图1变成图2的模式,进程在处理其他节点或进程的数据就变得和在自己本进程内处理一样简单,程序代码更加简单,减小了系统设计的复杂性。
技术实现思路
专利技术目的:针对上述现有技术,提出一种多节点数据交互的实现方法,通过远程过程调用实现数据交互,简化业务数据处理流程。技术方案:一种多节点数据交互的实现方法,在每个节点上设置数据服务模块,任一节点上的数据服务模块用于实现该节点自身进程之间的数据交互,同时不同节点上的数据服务模块实现不同节点进程之间的数据交互;所述数据服务模块通过远程过程调用协议实现进程间的数据交互,所述远程过程调用协议的底层通过Qt元对象系统实现。进一步的,所述远程过程调用协议的底层通过Qt元对象系统实现时,Qt元对象系统中QObject子类的Slot函数所对应的输入参数作为过程调用的输入,Slot函数的返回值作为过程调用的输出结果。进一步的,所述远程过程调用中,当客户端任一进程需要获得其他机器节点的变化数据的时候,不同节点之间变化数据的通知包括如下步骤:首先在客户端的数据服务模块上对所述数据或该数据对象类型进行注册;当其它机器节点的数据变化后,将变化数据发送给客户端的数据服务模块;然后由客户端的服务模块通过进程间过程调用通知所述注册数据或数据对象类型所对应的进程,在所述对应进程的进程空间内执行相应的回调函数。进一步的,所述远程过程调用包括如下具体步骤:e.机器节点按照功能分类,从QObject子类继承得到若干个对象,节点之间的远程过程调用通过所述若干个对象所对应的Slot函数实现,并将所述QObject子类实例化为实例对象后加入到服务对象列表;f.客户端当进行远程过程调用时,通过套接字将调用请求传递至对应的机器节点,所述客户端在请求发送后进入阻塞状态,等待所述对应的机器节点的返回结果;所述调用请求包括要执行的对象类名、成员函数名及参数;g.所述对应的机器节点在收到所述调用请求后,首先根据对象类名在服务对象列表中找到对应的实例对象,然后根据成员函数名通过Qt元对象系统找到对应类的Slot函数的元对象方法,再通过解析所述元对象方法的参数类型,依次将传入的参数转换成对应Slot函数所需的参数类型,然后通过元对象的invoke方法执行所述Slot函数,实现客户端的请求;h.所述对应的机器节点将对应的执行结果以及函数返回结果通过套接字发送至客户端,至此所述对应的机器节点完成了一次远程过程调用服务请求;i.客户端在收到所述对应的机器节点的执行结果以及函数返回结果后,首先根据所述执行结果判断执行是否成功:如果执行成功,则提取过程调用的函数返回结果并结束阻塞状态,至此客户端发起的远程过程调用执行结束;如果执行失败,则根据执行结果错误代码进行相应的处理。进一步的,客户端设置过程调用超时时间,如果在指定的时间内所述对应的机器节点没有响应或没有将执行结果或函数返回结果传递至客户端,过程调用自动结束并返回超时的错误代码。有益效果:本专利技术的多节点数据交互的实现方法,通过远程过程调用实现数据交互,远程过程调用的底层采用Qt元对象系统实现。远程过程调用中,从QObject子类定位远程过程调用指定的Slot槽函数并执行,实现了灵活的过程调用处理。根据C++重载的特点,可以在QObject子类定义参数不同的同一个函数,这样调用者就可以根据自己的需要选择适合的函数,让远程过程调用变得更加灵活。利用本专利技术方法实现的基于Qt元对象的远程过程调用机制,当需要添加服务内容时,只需要在QObject子类中增加相应的Slot槽函数或添加新的QObject子类实例,然后远程过程调用客户端在调用时指定函数名称和函数参数即可完成调用。因此,基于Qt元对象系统的远程过程调用服务模块在扩展、升级与维护等方面非常简单,同时让系统模块的开发更加灵活,而且可以在多个平台上运行。附图说明图1是传统方式下节点之间的数据业务处理结构图;图2是采用RPC实现节点之间的数据交互处理结构图;图3是本专利技术多节点数据交互多节点通讯示意图;图4是多节点数据交互的实现方法流程图;图5是客户端在执行远程过程调用时的调用形式。具体实施方式下面结合附图对本专利技术做更进一步的解释。如图3所示,一种多节点数据交互的实现方法,在每个机器节点上布置数据服务模块,任一节点上的数据服务模块用于实现该节点自身进程之间的数据交互,不同节点上的数据服务模块实现不同节点进程之间的数据交互。数据服务模本文档来自技高网
...
一种多节点数据交互的实现方法

【技术保护点】
一种多节点数据交互的实现方法,其特征在于:在每个节点上设置数据服务模块,任一节点上的数据服务模块用于实现该节点自身进程之间的数据交互,同时不同节点上的数据服务模块实现不同节点进程之间的数据交互;所述数据服务模块通过远程过程调用协议实现进程间的数据交互,所述远程过程调用协议的底层通过Qt元对象系统实现。

【技术特征摘要】
1.一种多节点数据交互的实现方法,其特征在于:在每个节点上设置数据服务模块,任一节点上的数据服务模块用于实现该节点自身进程之间的数据交互,同时不同节点上的数据服务模块实现不同节点进程之间的数据交互;所述数据服务模块通过远程过程调用协议实现进程间的数据交互,所述远程过程调用协议的底层通过Qt元对象系统实现;所述远程过程调用协议的底层通过Qt元对象系统实现时,Qt元对象系统中QObject子类的Slot函数所对应的输入参数作为过程调用的输入,Slot函数的返回值作为过程调用的输出结果;所述远程过程调用包括如下具体步骤:a.机器节点按照功能分类,从QObject子类继承得到若干个对象,节点之间的远程过程调用通过所述若干个对象所对应的Slot函数实现,并将所述QObject子类实例化为实例对象后加入到服务对象列表;b.客户端当进行远程过程调用时,通过套接字将调用请求传递至对应的机器节点,所述客户端在请求发送后进入阻塞状态,等待所述对应的机器节点的返回结果;所述调用请求包括要执行的对象类名、成员函数名及参数;c.所述对应的机器节点在收到所述调用请求后,首先根据对象类名在服务对象列表中找到对应的实例对象,然后根据成员函数名通过Qt元对象系统找到对应类的Slot函数的元对象方法,再通过解析所述元对象方法的参数类型,依次将传入的参数转换成...

【专利技术属性】
技术研发人员:朱伟高明
申请(专利权)人:江苏大烨智能电气股份有限公司
类型:发明
国别省市:江苏;32

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

1