一种基于反射内存卡的OpenDDS分布式通信方法与流程

文档序号:17318711发布日期:2019-04-05 21:25阅读:1436来源:国知局
一种基于反射内存卡的OpenDDS分布式通信方法与流程

本发明属于分布式通信技术领域,尤其涉及一种基于反射内存卡的opendds分布式通信方法。



背景技术:

随着分布式系统复杂程度的不断增加和研发规模的迅速扩大,系统集成的难度和风险都在大幅提高。提供实时系统数据分发服务的opendds是用于分发实时应用程序的网络中间件,它简化了分布式应用程序的开发、部署和维护,其以数据为中心的发布订阅模式极大地降低了在网络上发送数据所需的时间消耗,为大容量传输网络提供了针对时间关键数据快速且可预见的分发。此外,opendds规范还定义了大量的qos策略,使得系统可以很好地配置和利用系统资源,协调可预测性和执行效率之间的平衡,以支持复杂多变的数据流需求。

opendds使用规范的idl接口初始化和控制服务,是建立在corba上的应用框架,其中的信息传输分为远程调用和数据传输两部分,远程调用是分布式通信的主要技术,在分布式通信中起到重要作用,默认情况下传输介质为网卡,基于udp的diop协议无需连接,通信效率高。



技术实现要素:

为了降低网络间通讯的时延,屏蔽子网内部频繁通讯对整个网络中其他设备的干扰,本发明提出了一种基于反射内存卡的opendds分布式通信方法。

本发明所采用的技术方案是:

一种基于反射内存卡的opendds分布式通信方法,包括:

s0:在分布式通信计算机中安装反射内存卡,设置每个硬件节点号,并设定相应数据传输地址;

s1:在diop协议工程中加载反射内存卡驱动,在diop接收器中创建监控反射内存卡函数,通过判断指定地址写入标志是否置位,判断监控数据是否已经写入反射内存,监控到有数据写入时,则进入步骤s2;

s2:将写入标志清除,通过socket向本机地址发送1字节数据触发反应器,所述反应器监视到事先注册在其中的socket有数据到来,进而能够回调事先注册在所述反应器中的事件处理函数接收数据;

s3:在diop传输器接收函数中从所述反射内存卡的指定地址中读出数据,并将其读取标志置位;

s4:在diop传输器写入函数中判断指定地址读取标志是否置位,如果置位,则表示已读,进入步骤s5;

s5:在所述diop传输器写入函数中向指定地址写入数据,并将读取标志清除,将写入标志置位;

s6:重新编译diop工程。

较佳的,通过所述diop传输器接收函数和所述diop传输器写入函数获得相关数据和通信信息,将不同通道的数据映射到所述反射内存卡的同一片地址上。

较佳的,通过使用数据读写标识符控制所述反射内存卡中数据的读写顺序,实现不同进程数据的时序同步。

较佳的,所述步骤s6中,在opendds中配置和加载改进的diop协议,其中包括:将diop工程加入到opendds应用链接库中,通过服务配置器动态加载diop协议:在应用路径下创建配置文件,输入动态加载命令,在dcps服务器端声明diop端点,在命令行输入相关参数即可运行程序。

本发明的有益效果是:

以数据为中心的opendds拥有较高的通信效率,同时结合qos策略控制服务行为,增加了通信的灵活性;

反射内存卡允许系统中所有节点同时读取共享的内存数据,无需通信协议,减少了网络中不必要的数据,提高了数据的传输效率,是一种非常适合实时分布式网络应用的底层硬件;

采用较为方便的修改diop协议,使得远程调用数据通过反射内存卡传输,同样实现了高效的通信;

将反射内存卡和发布/订阅模式结合,提供了一种高带宽、低延时的网络通信解决方案,更好地满足分布式系统实时性、可靠性的通信要求。

当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。

附图说明

图1为本发明在corba远程调用中的通信示意图;

图2为corba远程调用基于diop的通信流程图;

图3为本发明基于反射内存卡的opendds分布式通信方法的总体结构图;

图4为本发明使用反射内存卡替换udp的过程示意图;

图5为本发明使用标志位完成进程同步过程示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。

本发明提出了一种基于反射内存卡的opendds分布式通信方法,在opendds已支持的diop协议中快速实现数据重定向至反射内存卡。依据自适配通信环境中反应器监控硬件数据到来并完成通知的机理,以及反射内存卡相关api函数实现相应功能,将本通过diop协议完成远程调用的通信使用反射内存卡实现,完成了opendds中基于diop协议下使用反射内存卡传输数据。

本发明的技术方案是首先研究opendds架构和使用方法,从中研究opendds的通信原理,其中包括分布式系统corba中的远程对象通信和数据传输部分,corba中对象请求代理之间的远程调用结合udp生成diop协议,如图1和图2所示;再通过研究自适配通信环境中反应器的事件监控和分离机制,了解触发方法;最后使用反射内存卡替换原有的diop中的数据传输,并在反应器的架构下进行相应的数据监控,实现基于反射内存卡的opendds通信方法,如图3所示。

本发明提出的一种基于反射内存卡的opendds分布式通信方法,包括:

s0:在分布式通信计算机中安装反射内存卡,设置每个硬件节点号,并设定相应数据传输地址。

s1:在diop协议工程中加载反射内存卡驱动,在diop接收器中创建监控反射内存卡函数,通过判断指定地址写入标志是否置位,判断监控数据是否已经写入反射内存,监控到有数据写入时,则进入步骤s2。

步骤s1中,反射内存卡函数位置既要在数据接收端用于监控网卡数据的socket已经建立并完成监听端口绑定之后,又要在数据发送端给接收端发送第一帧数据之前,发送端还未向对方发送任何数据时创建该线程,以确保接收端能及时准确地监控到发送端写入反射内存卡的所有数据。

s2:如图4所示,将写入标志清除,通过socket向本机地址发送1字节数据触发反应器,反应器监视到事先注册在其中的socket有数据到来,进而能够回调事先注册在反应器中的事件处理函数接收数据。

s3:如图5所示,在diop传输器接收函数中从反射内存卡的指定地址中读出数据,并将其读取标志置位。

s4:如图5所示,在diop传输器写入函数中判断指定地址读取标志是否置位,如果置位,则表示已读,进入步骤s5。

s5:如图5所示,在diop传输器写入函数中向指定地址写入数据,并将读取标志清除,将写入标志置位。

步骤s3、步骤s4和步骤s5中,通过diop传输器接收函数和diop传输器写入函数获得相关数据和通信信息,将不同通道的数据映射到反射内存卡的同一片地址上。

步骤s3、步骤s4和步骤s5中,通过使用数据读写标识符控制反射内存卡中数据的读写顺序,实现不同进程数据的时序同步。

s6:重新编译diop工程。

步骤s6中,在opendds中配置和加载改进的diop协议,其中包括:将diop工程加入到opendds应用链接库中,通过服务配置器动态加载diop协议:在应用路径下创建配置文件,输入动态加载命令,在dcps服务器端声明diop端点,在命令行输入相关参数即可运行程序。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1