【技术实现步骤摘要】
一种消息分发方法、设备以及存储介质
[0001]本专利技术涉及消息处理领域,具体涉及一种消息分发方法、设备以及存储介质。
技术介绍
[0002]消息分发系统是一种基于消息队列协议的数据分发应用系统如kafka,RabbitMQ,mosquitto等,消息从源地址如主机内存发送到一到多个目的地址如本机或者网络对端主机内存,常见的消息队列协议有网络套接字协议、发布订阅协议、高级消息队列协议等。
[0003]通常的系统模块交互方法是通过搭建消息服务集群,在消息服务器上运行特定消息通讯协议(如发布订阅协议)中间件,系统各模块在初始化阶段设置订阅的消息类型,当业务进程在系统运行阶段需要发送消息时,先将消息发送到消息服务器,再由消息服务器将消息转发给所有订阅了该消息的目标模块,目标模块收到消息并执行相应处理流程。
[0004]这种做法可有效实现模块之间的消息通讯交互,但是仍然存下以下问题:
[0005]业务进程并发能力较弱:由于协议栈不能为每个业务进程分配单独的输入输出队列,多个业务进程之间共享相同队列,导致进程之间需要互斥同步操作,从而降低并发性能。
[0006]软件协议栈吞吐率较低:由于软件协议栈队列数较少,并且队列深度较低,如依赖网络协议的消息通讯,一般仅提供与硬件线路数和最大传输单元成比例的队列数和深度。
[0007]硬件链路传输性能较低:由于硬件链路DMA通道受限制于软件协议栈的数据吞吐量如网络协议最大传输单元,缓冲区容量等,单次DMA数据量有限,导致硬件链路性能较低。
...
【技术保护点】
【技术特征摘要】
1.一种消息分发方法,其特征在于,包括以下步骤:在主机中根据每一个业务进程的标识分别创建对应的IO请求队列和响应队列;在NVME硬盘中分别创建与每一个所述业务进程对应的发布队列和订阅队列,并建立记录每一个所述业务进程的中断号、发布队列和订阅队列之间映射关系的第一映射表,将所述发布队列和订阅队列的地址返回所述主机以在所述主机中建立记录业务进程的标识、IO请求队列和响应队列、发布队列和订阅队列之间映射关系的第二映射表;响应于所述业务进程向所述NVME硬盘发送消息订阅请求,利用待订阅的消息类型以及根据所述第二映射表确定的订阅队列的地址构建第一IO写命令并写入对应的IO请求队列,并将所述第一IO写命令写入到所述NVME硬盘以在所述NVME硬盘中建立记录消息类型、订阅队列之间映射关系的第三映射表;响应于所述业务进程向所述NVME硬盘发送消息发布请求,利用待发布的消息类型、对应的发布队列以及消息内容构建第二IO写命令并写入对应的IO请求队列并将所述第二IO写命令写入到所述NVME硬盘,根据所述第三映射表将所述消息内容和消息类型转发到与所述待发布的消息类型对应的订阅队列中;响应于检测到有非空的所述订阅队列,根据所述第一映射表将非空的所述订阅队列中的消息内容上报到对应的业务进程。2.如权利要求1所述的方法,其特征在于,还包括初始化流程,所述初始化流程包括:在所述主机中利用管理进程执行主机初始化流程以创建管理请求队列和管理响应队列并将所述管理请求队列和管理响应队列的地址写入所述NVME硬盘以及更新所述NVME硬盘的状态寄存器以表示主机初始化完毕;所述NVME硬盘检测到所述状态寄存器表示主机初始化完毕,申请所述第一映射表和第三映射表的内存并初始化为空,并更新的状态寄存器以表示所述NVME硬盘初始化完毕;响应于所述主机检测到所述状态寄存器表示NVME硬盘初始化完毕,结束初始化流程。3.如权利要求2所述的方法,其特征在于,在NVME硬盘中分别创建与每一个所述业务进程对应的发布队列和订阅队列,并建立记录每一个所述业务进程的中断号、发布队列和订阅队列之间映射关系的第一映射表,将所述发布队列和订阅队列返回所述主机以在所述主机中建立记录业务进程的标识、IO请求队列和响应队列、发布队列和订阅队列之间映射关系的第二映射表,进一步还包括:在所述主机中为每一个所述业务进程分配中断号并以所述业务进程的中断号为参数构建所述发布队列和订阅队列创建命令,将创建命令写入到所述管理请求队列;所述NVME硬盘通过DMA读取所述管理请求队列中的创建命令;根据所述创建命令创建所述发布队列和订阅队列并建立记录中断号、发布队列和订阅队列之间映射关系的第一映射表。4.如权利要求3所述的方法,其特征在于,还包括:以发布队列和订阅队列的地址为参数构建响应信息并将所述响应信息写入到所述管理响应队列;所述主机从所述管理响应队列中获取并解析所述响应信息以得到所述发布队列和订阅队列的地址进而建立记录业务进程的标识、IO请求队列和响应队列、发布队列和订阅队列之间映射关系的第二映射表。
5.如权利要求1所述的方法,其特征在于,响应于所述业务进程向所述NVME硬盘发送消息订阅请求,利用待订阅的消息类型以及根据所述第二映射表确定的订阅队列的地址构建第一IO写命令并写入对应的IO请求队列,并将所述第一IO写命令写入到所述NVME硬盘以在所述NVME硬盘中建立记录消息类型、订阅队列之间映射关系的第三映射表,进一步还包括:获取所述业务进程传入的待订阅的消息类型、数据块地址以及回调函数地址,并建立记录消息类型、数据块地址以及回调函数地址之间映射关系的第四映射表;在所述第二映射表中获取所述业务进程对应的订阅队列的地址;构建第一IO写命令并配置所述第一IO写命令的数据指针为所述消息类型对应的地址,SLBA...
【专利技术属性】
技术研发人员:郑俊飞,陈静静,
申请(专利权)人:山东云海国创云计算装备产业创新中心有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。