[发明专利]轻量级跨平台消息中间件的实现方法及系统有效
申请号: | 201510435554.9 | 申请日: | 2015-07-22 |
公开(公告)号: | CN105007238B | 公开(公告)日: | 2018-04-24 |
发明(设计)人: | 陈龙 | 申请(专利权)人: | 中国船舶重工集团公司第七0九研究所 |
主分类号: | H04L12/863 | 分类号: | H04L12/863;H04L29/08 |
代理公司: | 武汉河山金堂专利事务所(普通合伙)42212 | 代理人: | 胡清堂 |
地址: | 430205 湖北省武汉市*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 轻量级 平台 消息 中间件 实现 方法 系统 | ||
1.一种轻量级跨平台消息中间件的实现方法,其特征在于,包括如下步骤:
S1、配置路由表,路由表包括进程ID、IP地址、组播地址路由关系信息,消息中间件根据路由表解析出消息转发控制规则;
S2、初始化应用进程,创建进程通信所需要的相关资源;
S3、消息队列接收线程实现:调用消息队列接收函数,将消息队列接收线程阻塞,如消息队列收到数据,将数据拷贝至进程专属缓冲区中,并改写消息队列“读“与“写”管道状态;
S4、进程读取数据接口实现:利用POSIX库的I/O复用Select函数,轮询消息队列“写”管道、UDP通信Socket和TCP通信Socket,如收到数据则将数据拷贝至进程专属缓冲区中,并改写消息队列“读“与“写”管道状态;
S5、进程发送数据接口实现:根据发送报文头中的发送进程ID以及预先配置的路由表,判断通信发生在节点间还是节点内;根据发送报文长度,判断通信方式采用UDP还是TCP;
S6、TCP组播线程池的实现:根据预先配置的路由表,解析组播地址中包括的IP地址,创建TCP发送线程池,并通过TCP发送线程池完成多地址TCP报文发送的并行处理;
所述步骤S2包括如下子步骤:
S21、初始化进程通信所需的缓冲区及缓冲区长度;
S22、创建消息队列的“读/写”管道以及相应的文件描述符;
通过“读/写”管理标记消息队列接收或读取数据,将管道的文件描述符作为I/O复用函数Select的参数;Select函数允许进程指示内核等待消息队列、UDP通信Socket、TCP通信Socket中任意一个接收到数据,并仅在一个或多个事件发生或经过预先指定的时间后才唤醒进程;
S23、创建节点间短报文通信所需的UDP通信Socket:
分别创建UDP通信接收和发送Socket,并根据进程ID为每个进程分配唯一的端口号,将接收Socket与接收端口号绑定;
S24、创建节点间短报文通信所需的TCP通信Socket:
分别创建TCP通信接收和发送Socket,并根据进程ID为每个进程分配唯一的端口号,将接收Socket与接收端口号绑定;
S25、创建消息队列接收线程:
创建一个并发性线程,用于消息队列接收数据。
2.如权利要求1所述的轻量级跨平台消息中间件的实现方法,其特征在于,所述步骤S4包括:
分配一个描述字集,并将描述字集初始化;
将“读”管道文件描述符、UDP通信Socket句柄、TCP通信Socket句柄加入到描述字集;使用Select函数轮询描述字集,等待接收数据;
通过查询“读/写”管道的状态,来完成消息中间件的读取数据主线程与消息队列接收线程之间的同步;一旦消息队列线程接收到数据,读取数据主线程可通过查询“读”管道文件描述符的状态变更,获悉消息队列已收到数据,从而将该数据返回给应用进程。
3.如权利要求2所述的轻量级跨平台消息中间件的实现方法,其特征在于,所述步骤S5包括:
为应用进程提供数据发送接口函数,应用进程填入需要发送的数据以及发送的目的进程ID;消息中间件根据预设的路由表和目的进程ID,查找进程ID和目的节点的匹配关系,以获得消息发送的地址;
判断发送的报文长度是否小于大报文数据长度门限值,如小于大报文数据长度门限值,则判断数据发往本节点或外节点;如发往本节点,将数据发送至应用进程所述的消息队列;如发往外节点采用UPD通信Socket发送数据;
如果大于或等于大报文数据长度门限值,则根据发送目的进程ID和预设的路由表,判断数据发送是否为点播,在数据发送为点播时,直接连接目的进程通过TCP通信Socket发送数据;在数据发送为组播时,通过TCP发送线程池发送数据。
4.如权利要求3所述的轻量级跨平台消息中间件的实现方法,其特征在于,所述步骤S6包括:
根据预先配置的路由表,解析组播地址中的IP地址;
创建TCP发送线程池;
将TCP通信Socket设置为非阻塞模式;
连接发送目的地址,通过TCP发送线程池完成多地址TCP报文发送的并行处理。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国船舶重工集团公司第七0九研究所,未经中国船舶重工集团公司第七0九研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510435554.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种橡胶复合材料疲劳分析试验方法
- 下一篇:一种控制微型液滴形状的方法