CN116225742A - 一种消息分发方法、设备以及存储介质 - Google Patents
一种消息分发方法、设备以及存储介质 Download PDFInfo
- Publication number
- CN116225742A CN116225742A CN202310239212.4A CN202310239212A CN116225742A CN 116225742 A CN116225742 A CN 116225742A CN 202310239212 A CN202310239212 A CN 202310239212A CN 116225742 A CN116225742 A CN 116225742A
- Authority
- CN
- China
- Prior art keywords
- queue
- message
- subscription
- address
- mapping table
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 213
- 230000008569 process Effects 0.000 claims abstract description 167
- 230000004044 response Effects 0.000 claims abstract description 118
- 238000013507 mapping Methods 0.000 claims description 136
- 230000015654 memory Effects 0.000 claims description 27
- 230000006870 function Effects 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 9
- 238000001514 detection method Methods 0.000 claims description 4
- 238000013403 standard screening design Methods 0.000 description 67
- 238000007726 management method Methods 0.000 description 30
- 230000005540 biological transmission Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 230000003993 interaction Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000013468 resource allocation Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000007717 exclusion Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种消息分发方法,包括以下步骤:在主机中根据每一个业务进程的标识分别创建对应的IO请求队列和响应队列;在NVME硬盘中分别创建与每一个业务进程对应的发布队列和订阅队列;响应于业务进程向NVME硬盘发送消息订阅请求,构建第一IO写命令并写入对应的IO请求队列,并将第一IO写命令写入到NVME硬盘;响应于业务进程向NVME硬盘发送消息发布请求,利用待发布的消息类型、对应的发布队列以及消息内容构建第二IO写命令并写入对应的IO请求队列并将第二IO写命令写入到NVME硬盘,将消息内容和消息类型转发到与待发布的消息类型对应的订阅队列中;响应于检测到有非空的订阅队列,将非空的订阅队列中的消息内容上报到对应的业务进程。
Description
技术领域
本发明涉及消息处理领域,具体涉及一种消息分发方法、设备以及存储介质。
背景技术
消息分发系统是一种基于消息队列协议的数据分发应用系统如kafka,RabbitMQ,mosquitto等,消息从源地址如主机内存发送到一到多个目的地址如本机或者网络对端主机内存,常见的消息队列协议有网络套接字协议、发布订阅协议、高级消息队列协议等。
通常的系统模块交互方法是通过搭建消息服务集群,在消息服务器上运行特定消息通讯协议(如发布订阅协议)中间件,系统各模块在初始化阶段设置订阅的消息类型,当业务进程在系统运行阶段需要发送消息时,先将消息发送到消息服务器,再由消息服务器将消息转发给所有订阅了该消息的目标模块,目标模块收到消息并执行相应处理流程。
这种做法可有效实现模块之间的消息通讯交互,但是仍然存下以下问题:
业务进程并发能力较弱:由于协议栈不能为每个业务进程分配单独的输入输出队列,多个业务进程之间共享相同队列,导致进程之间需要互斥同步操作,从而降低并发性能。
软件协议栈吞吐率较低:由于软件协议栈队列数较少,并且队列深度较低,如依赖网络协议的消息通讯,一般仅提供与硬件线路数和最大传输单元成比例的队列数和深度。
硬件链路传输性能较低:由于硬件链路DMA通道受限制于软件协议栈的数据吞吐量如网络协议最大传输单元,缓冲区容量等,单次DMA数据量有限,导致硬件链路性能较低。
系统处理器使用率较高:由于消息通讯协议全部由软件实现,如基于网络协议栈的套接字传输协议,并且缺少专用的高速硬件DMA数据传输通道,当模块之间消息通讯交互过于频繁时,将占用消息服务器大量处理器资源,从而导致服务器处理器使用率较高。
系统整体的性能较低:处理器使用率的升高,进一步限制了消息通讯中间件的数据传输性能,并可能导致其他需要处理器资源的模块如网络通讯或者存储器读写性能下降。
消息协议可靠性较低:由于消息缺少硬件错误恢复方法,当数据传输过程中软硬件环境变化造成消息通讯异常时,可能会出现消息丢失现象,从而使得传输可靠性较低。
消息协议的功耗较高:由于缺乏软硬件功耗状态自动切换机制,系统长时间无数据传输也处于全速运行状态,如网络协议栈的存活心跳检测过程,导致系统耗电量较高。
消息协议的延迟较高:由于消息协议栈软件层次较多,如基于网络协议实现的消息分发系统,协议栈包含应用层到物理层多个层次,层次数据格式转换造成传输延迟较高。
发明内容
有鉴于此,为了克服上述问题的至少一个方面,本发明实施例提出一种消息分发方法,包括以下步骤:
在主机中根据每一个业务进程的标识分别创建对应的IO请求队列和响应队列;
在NVME硬盘中分别创建与每一个所述业务进程对应的发布队列和订阅队列,并建立记录每一个所述业务进程的中断号、发布队列和订阅队列之间映射关系的第一映射表,将所述发布队列和订阅队列的地址返回所述主机以在所述主机中建立记录业务进程的标识、IO请求队列和响应队列、发布队列和订阅队列之间映射关系的第二映射表;
响应于所述业务进程向所述NVME硬盘发送消息订阅请求,利用待订阅的消息类型以及根据所述第二映射表确定的订阅队列的地址构建第一IO写命令并写入对应的IO请求队列,并将所述第一IO写命令写入到所述NVME硬盘以在所述NVME硬盘中建立记录消息类型、订阅队列之间映射关系的第三映射表;
响应于所述业务进程向所述NVME硬盘发送消息发布请求,利用待发布的消息类型、对应的发布队列以及消息内容构建第二IO写命令并写入对应的IO请求队列并将所述第二IO写命令写入到所述NVME硬盘,根据所述第三映射表将所述消息内容和消息类型转发到与所述待发布的消息类型对应的订阅队列中;
响应于检测到有非空的所述订阅队列,根据所述第一映射表将非空的所述订阅队列中的消息内容上报到对应的业务进程。
在一些实施例中,还包括初始化流程,所述初始化流程包括:
在所述主机中利用管理进程执行主机初始化流程以创建管理请求队列和管理响应队列并将所述管理请求队列和管理响应队列的地址写入所述NVME硬盘以及更新所述NVME硬盘的状态寄存器以表示主机初始化完毕;
所述NVME硬盘检测到所述状态寄存器表示主机初始化完毕,申请所述第一映射表和第三映射表的内存并初始化为空,并更新的状态寄存器以表示所述NVME硬盘初始化完毕;
响应于所述主机检测到所述状态寄存器表示NVME硬盘初始化完毕,结束初始化流程。
在一些实施例中,在NVME硬盘中分别创建与每一个所述业务进程对应的发布队列和订阅队列,并建立记录每一个所述业务进程的中断号、发布队列和订阅队列之间映射关系的第一映射表,将所述发布队列和订阅队列返回所述主机以在所述主机中建立记录业务进程的标识、IO请求队列和响应队列、发布队列和订阅队列之间映射关系的第二映射表,进一步还包括:
在所述主机中为每一个所述业务进程分配中断号并以所述业务进程的中断号为参数构建所述发布队列和订阅队列创建命令,将创建命令写入到所述管理请求队列;
所述NVME硬盘通过DMA读取所述管理请求队列中的创建命令;
根据所述创建命令创建所述发布队列和订阅队列并建立记录中断号、发布队列和订阅队列之间映射关系的第一映射表。
在一些实施例中,还包括:
以发布队列和订阅队列的地址为参数构建响应信息并将所述响应信息写入到所述管理响应队列;
所述主机从所述管理响应队列中获取并解析所述响应信息以得到所述发布队列和订阅队列的地址进而建立记录业务进程的标识、IO请求队列和响应队列、发布队列和订阅队列之间映射关系的第二映射表。
在一些实施例中,响应于所述业务进程向所述NVME硬盘发送消息订阅请求,利用待订阅的消息类型以及根据所述第二映射表确定的订阅队列的地址构建第一IO写命令并写入对应的IO请求队列,并将所述第一IO写命令写入到所述NVME硬盘以在所述NVME硬盘中建立记录消息类型、订阅队列之间映射关系的第三映射表,进一步还包括:
获取所述业务进程传入的待订阅的消息类型、数据块地址以及回调函数地址,并建立记录消息类型、数据块地址以及回调函数地址之间映射关系的第四映射表;
在所述第二映射表中获取所述业务进程对应的订阅队列的地址;
构建第一IO写命令并配置所述第一IO写命令的数据指针为所述消息类型对应的地址,SLBA为所述订阅队列的地址;
在所述第二映射表中获取所述业务进程对应的IO请求队列并将所述第一IO写命令写入到对应的所述IO请求队列中;
所述NVME硬盘从所述IO请求队列中获取所述第一IO写命令并解析得到待订阅的消息类型以及订阅队列的地址从而建立记录消息类型、订阅队列之间映射关系的第三映射表;
以订阅队列的地址为参数构建响应信息并将所述响应信息写入到所述业务进程对应的响应队列;
所述主机从所述业务进程对应的响应队列中获取到所述响应信息,结束消息订阅。
在一些实施例中,响应于检测到有非空的所述订阅队列,根据所述第一映射表将非空的所述订阅队列中的消息内容上报到对应的业务进程,进一步包括:
查询所述第一映射表获取与所述非空的订阅队列对应的中断号;
将非空的订阅队列中的消息内容的长度和消息类型更新到状态寄存器并通过所述触发MSI中断将消息内容的长度和消息类型通知主机;
根据所述消息类型查询所述第四映射表获取数据块地址,并查询所述第二映射表获取与所述对应的业务进程相对应的订阅队列地址;
构建IO读命令并配置所述IO读命令的数据指针为所述数据块对应的地址,SLBA为与所述对应的业务进程相对应的订阅队列地址的地址,NLB为所述消息内容的长度;
根据所述第二映射表将所述IO读命令发送到与所述对应的业务进程对应的IO请求队列中并通知所述NVME硬盘执行所述IO读命令以使所述非空的所述订阅队列中的消息内容搬运到与所述对应的业务进程相对应的所述数据块对应的地址中。
在一些实施例中,还包括:
所述非空的所述订阅队列的地址为参数构建响应信息并将所述响应信息写入到所述对应的业务进程对应的响应队列;
所述主机从所述对应的业务进程对应的响应队列中获取到所述响应信息,结束消息上报;
根据所述消息类型查询所述第四映射表获取回调函数的地址以通过回调函数处理所述数据块对应的地址中的消息内容。
在一些实施例中,响应于所述业务进程向所述NVME硬盘发送消息发布请求,利用待发布的消息类型、对应的发布队列以及消息内容构建第二IO写命令并写入对应的IO请求队列并将所述第二IO写命令写入到所述NVME硬盘,根据所述第三映射表将所述消息内容和消息类型转发到与所述待发布的消息类型对应的订阅队列中,进一步还包括:
获取所述业务进程传入的待发布的消息类型、消息内容、数据块地址;
在所述第二映射表中获取所述业务进程对应的订阅队列的地址;
构建第二IO写命令并配置所述第二IO写命令的数据指针为所述消息类型对应的地址和消息内容对应的地址,SLBA为所述发布队列的地址;
在所述第二映射表中获取所述业务进程对应的IO请求队列并将所述第二IO写命令写入到对应的所述IO请求队列中;
所述NVME硬盘从所述IO请求队列中获取所述第二IO写命令并解析得到待发布的消息类型的地址和消息内容的地址,执行DMA以根据待发布的消息类型的地址和消息内容的地址获取待发布的消息类型和消息内容并传输到对应的发布队列;
根据所述第三映射表将对应的发布队列中的消息类型和所述消息内容转发到与所述待发布的消息类型对应的订阅队列中;
以发布队列的地址为参数构建响应信息并将所述响应信息写入到所述业务进程对应的响应队列;
所述主机从所述业务进程对应的响应队列中获取到所述响应信息,结束消息发布。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机程序,所述处理器执行所述程序时执行如上所述的任一种消息分发方法的步骤。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时执行如上所述的任一种消息分发方法的步骤。
本发明具有以下有益技术效果之一:本发明提出的方案基于NVMe协议的主机端消息发布/订阅命令提交流程,通过引入多IO请求/响应队列,实现了高并发、异步的消息发布/订阅命令提交。同时基于NVMe协议的硬盘端消息发布/订阅命令提交流程,通过引入多IO请求/响应队列、发布/订阅队列、消息转发模块,充分利用了硬件电路的流水线并行执行特性,既降低了处理器使用率,也提高了传输性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明的实施例提供的消息分发方法的流程示意图;
图2为本发明的实施例提供的系统的模块层次结构示意图;
图3为本发明的实施例提供的消息分发方法的软硬件模块交互流程示意图;
图4为本发明的实施例提供的队列结构示意图;
图5为本发明的实施例提供的映射表结构示意图;
图6为本发明的实施例提供的初始化流程图;
图7为本发明的实施例提供的队列创建流程图;
图8为本发明的实施例提供的消息订阅流程图;
图9为本发明的实施例提供的消息上报流程图;
图10为本发明的实施例提供的消息发布流程图;
图11为本发明的实施例提供的计算机设备的结构示意图;
图12为本发明的实施例提供的计算机可读存储介质的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
在本发明的实施例中,SLBA为NVMe协议的IO命令包含的设备端起始逻辑块地址,设备以逻辑块为单位划分地址空间,主机在提交IO命令时,指定逻辑块地址,即表示要从设备空间哪个地址读写数据。NLB为NVMe协议的IO命令包含的设备端逻辑块个数,主机在提交IO命令时,通过在IO命令中指定逻辑块个数,即表示要从设备空间的SLBA处读写多少个逻辑块长度的数据。
根据本发明的一个方面,本发明的实施例提出一种消息分发方法,如图1所示,其可以包括步骤:
S1,在主机中根据每一个业务进程的标识分别创建对应的IO请求队列和响应队列;
S2,在NVME硬盘中分别创建与每一个所述业务进程对应的发布队列和订阅队列,并建立记录每一个所述业务进程的中断号、发布队列和订阅队列之间映射关系的第一映射表,将所述发布队列和订阅队列的地址返回所述主机以在所述主机中建立记录业务进程的标识、IO请求队列和响应队列、发布队列和订阅队列之间映射关系的第二映射表;
S3,响应于所述业务进程向所述NVME硬盘发送消息订阅请求,利用待订阅的消息类型以及根据所述第二映射表确定的订阅队列的地址构建第一IO写命令并写入对应的IO请求队列,并将所述第一IO写命令写入到所述NVME硬盘以在所述NVME硬盘中建立记录消息类型、订阅队列之间映射关系的第三映射表;
S4,响应于所述业务进程向所述NVME硬盘发送消息发布请求,利用待发布的消息类型、对应的发布队列以及消息内容构建第二IO写命令并写入对应的IO请求队列并将所述第二IO写命令写入到所述NVME硬盘,根据所述第三映射表将所述消息内容和消息类型转发到与所述待发布的消息类型对应的订阅队列中;
S5,响应于检测到有非空的所述订阅队列,根据所述第一映射表将非空的所述订阅队列中的消息内容上报到对应的业务进程。
本发明提出的方案基于NVMe协议的主机端消息发布/订阅命令提交流程,通过引入多IO请求/响应队列,实现了高并发、异步的消息发布/订阅命令提交。同时基于NVMe协议的硬盘端消息发布/订阅命令提交流程,通过引入多IO请求/响应队列、发布/订阅队列、消息转发模块,充分利用了硬件电路的流水线并行执行特性,既降低了处理器使用率,也提高了传输性能。
在一些实施例中,本发明将系统分为主机和NVMe硬盘(以SSD为例)两部分,主机通过PCIe接口连接多个NVMe SSD。
系统的模块层次结构如图2所示,主机包括管理进程、若干业务进程、用户链接库、NVMe驱动模块,用于通过NVMe协议的多IO队列机制,并发地提交业务进程的消息发布/订阅请求到NVMe SSD。
NVMe SSD包括硬件、固件模块,用于通过SSD硬件执行消息的发布/订阅过程。
下面结合图3所示的基于NVMe SSD的消息分发系统加速方法的软硬件模块交互流程对主机和NVMe SSD的各模块功能进行说明:
主机侧:
1)管理进程,进一步划分为:
a)框架初始化,用于初始化消息分发系统;
b)资源分配,用于创建业务进程并为其分配资源。
2)业务进程,用于执行特定的功能业务,进一步划分为:
a)数据块地址,用于填充待发布/订阅消息的数据地址;
b)回调函数指针,用于处理订阅消息的回调函数地址。
3)用户链接库,进一步划分为:
a)链接库初始化,用于初始化消息类型--回调函数地址---数据块地址映射表结构和调用NVMe驱动的初始化接口;
消息类型--回调函数地址---数据块地址映射表(第四映射表)定义如下:
利用操作系统链接库机制,为每一个业务进程生成一份映射表,每个表项保存进程订阅的消息类型、消息处理回调函数地址、接收消息的数据地址;
b)队列获取,用于调用NVMe驱动的队列创建接口;
c)消息订阅,用于向业务进程提供消息订阅接口;
d)消息发布,用于向业务进程提供消息发布接口;
e)消息读取,用于在收到NVMe驱动的中断通知后,读取待处理的消息数据;
f)队列释放。用于调用NVMe驱动的队列删除接口。
4)NVMe驱动,进一步划分为:
a)NVMe主机初始化。用于通过操作系统的用户态NVMe驱动如Linux SPDK框架实现NVMe协议的主机初始化流程(创建管理请求/响应队列),和初始化进程标识---IO请求/响应队列地址---SSD发布/订阅队列地址映射表(第二映射表),其定义为:每个表项保存业务进程标识、主机IO请求/响应队列地址、SSD发布/订阅队列地址,使得每个业务进程有唯一的IO请求/响应队列和SSD发布/订阅队列;
b)队列创建,用于在主机内存中为业务进程创建IO请求/响应队列;
c)IO请求/响应队列读写,用于读写某个业务进程的IO请求/响应队列;
d)中断处理,用于接收NVMe SSD的订阅中断请求,并将其转发到业务进程;
e)队列删除,用于删除业务进程的IO请求/响应队列。
SSD各模块功能定义如下:
1)硬件,进一步划分为:
a)状态寄存器,作为主机和SSD固件的共享内存,用于主机和SSD固件同步;
b)队列地址寄存器,用于主机和SSD配置IO请求/响应队列、SSD发布/订阅队列地址,硬件可结合队列Head、Tail寄存器值从该地址读写队列数据;
c)队列Head、Tail寄存器1~n。用于记录每个IO请求/响应队列、SSD发布/订阅队列的头尾指针,硬件通过该指针从队列读取数据;
d)队列读写,用于读写IO请求/响应队列、SSD发布/订阅队列数据;
e)消息转发,用于分发消息数据到所有订阅了该消息类型的业务进程;
f)中断请求,用于通知主机IO响应队列或者SSD订阅队列有待读取数据;
g)缓存管理,用于定时同步缓存SSD发布/订阅队列数据到Flash,避免掉电丢失;
2)固件,进一步划分为:
a)NVMe设备初始化,用于执行NVMe协议的设备初始化流程(创建NVMe命名空间、枚举NVMe设备、获取硬件状态),和初始化如下两个映射表:
i.消息类型—(SSD订阅队列地址集合)映射表(第三映射表)
每个表项保存消息类型、订阅该消息类型的进程SSD订阅队列地址。
ii.进程中断号—SSD订阅队列地址映射表(第一映射表)
每个表项保存业务进程的订阅通知中断号、进程SSD订阅队列地址。
b)缓存队列创建,用于将缓存/Flash划分为固定大小的分区,并从分区中选择一个作为与业务进程一一对应的SSD发布/订阅队列;
c)缓存队列删除,用于解除业务进程和SSD发布/订阅队列之间的映射关系;
d)异常通知,用于在固件运行出错时通知主机;
系统可连接多个SSD,从而利用多个PCIe链路传输数据,成倍地提升数据传输性能。
在一些实施例中,如图4所示的管理请求/响应队列、IO请求/响应队列、SSD发布/订阅队列结构示意图,每个数据页的最后一个64bit为下一个数据页地址;第一个数据页为消息控制字段,包括消息类型、是否广播、是否加密、校验值、下一个数据页地址等,SSD硬件通过该字段对消息转发过程执行更多控制操作。如图5所示的映射表结构示意图,通过操作系统动态链接库机制,使得每个进程都有一份消息类型--回调函数地址---数据块地址映射表副本,从而避免了多进程访问同一个表的同步开销。
在一些实施例中,还包括初始化流程,所述初始化流程包括:
在所述主机中利用管理进程执行主机初始化流程以创建管理请求队列和管理响应队列并将所述管理请求队列和管理响应队列的地址写入所述NVME硬盘以及更新所述NVME硬盘的状态寄存器以表示主机初始化完毕;
所述NVME硬盘检测到所述状态寄存器表示主机初始化完毕,申请所述第一映射表和第三映射表的内存并初始化为空,并更新的状态寄存器以表示所述NVME硬盘初始化完毕;
响应于所述主机检测到所述状态寄存器表示NVME硬盘初始化完毕,结束初始化流程。
具体的,如图6所示的初始化流程图,在进行初始化时,执行以下步骤(图3中1)a到1)d):
a)管理进程执行框架初始化流程,在其中调用链接库初始化流程;
b)用户链接库执行链接库初始化流程,在其中调用NVMe主机初始化流程,
c)NVMe驱动创建管理请求/响应队列、将队列地址配置到SSD硬件寄存器、更新SSD硬件状态寄存器表示NVMe主机端初始化完毕;
d)SSD固件轮询到SSD状态寄存器为“主机端初始化完毕”后,执行NVMe协议的设备端初始化流程,然后更新SSD状态寄存器表示设备初始化完毕。
在一些实施例中,在NVME硬盘中分别创建与每一个所述业务进程对应的发布队列和订阅队列,并建立记录每一个所述业务进程的中断号、发布队列和订阅队列之间映射关系的第一映射表,将所述发布队列和订阅队列返回所述主机以在所述主机中建立记录业务进程的标识、IO请求队列和响应队列、发布队列和订阅队列之间映射关系的第二映射表,进一步还包括:
在所述主机中为每一个所述业务进程分配中断号并以所述业务进程的中断号为参数构建所述发布队列和订阅队列创建命令,将创建命令写入到所述管理请求队列;
所述NVME硬盘通过DMA读取所述管理请求队列中的创建命令;
根据所述创建命令创建所述发布队列和订阅队列并建立记录中断号、发布队列和订阅队列之间映射关系的第一映射表。
在一些实施例中,还包括:
以发布队列和订阅队列的地址为参数构建响应信息并将所述响应信息写入到所述管理响应队列;
所述主机从所述管理响应队列中获取并解析所述响应信息以得到所述发布队列和订阅队列的地址进而建立记录业务进程的标识、IO请求队列和响应队列、发布队列和订阅队列之间映射关系的第二映射表。
具体的,如图7所示的队列创建流程图,在创建队列时,执行以下步骤(图3中的2)a到2)h):
a)管理进程执行资源分配流程,在其中调用用户链接库的队列获取流程;
b)用户链接库执行队列获取流程,在其中调用NVMe驱动的队列创建流程;
c)NVMe驱动为业务进程创建一一对应的IO请求/响应队列;
d)NVMe驱动更新进程标识和IO请求/响应队列地址到进程标识---IO请求/响应队列地址---SSD发布/订阅队列地址映射表;
e)NVMe驱动向管理请求队列提交SSD队列创建命令,命令包含进程中断号;
f)SSD硬件从主机的管理请求队列中读取SSD队列创建命令后,通知SSD固件执行缓存队列创建流程;
g)SSD固件执行缓存队列创建流程,为业务进程创建SSD发布/订阅队列;
h)SSD固件更新进程中断号—SSD订阅队列地址映射表。
其中,①可以通过写MSI配置寄存器,使得SSD硬件在消息转发完成后,可通过MSI方式,向主机发送中断,从而通知主机有待处理消息;②可以参考NVMe协议的自定义命令流程,以中断号为参数构建SSD队列创建命令。
在一些实施例中,响应于所述业务进程向所述NVME硬盘发送消息订阅请求,利用待订阅的消息类型以及根据所述第二映射表确定的订阅队列的地址构建第一IO写命令并写入对应的IO请求队列,并将所述第一IO写命令写入到所述NVME硬盘以在所述NVME硬盘中建立记录消息类型、订阅队列之间映射关系的第三映射表,进一步还包括:
获取所述业务进程传入的待订阅的消息类型、数据块地址以及回调函数地址,并建立记录消息类型、数据块地址以及回调函数地址之间映射关系的第四映射表;
在所述第二映射表中获取所述业务进程对应的订阅队列的地址;
构建第一IO写命令并配置所述第一IO写命令的数据指针为所述消息类型对应的地址,SLBA为所述订阅队列的地址;
在所述第二映射表中获取所述业务进程对应的IO请求队列并将所述第一IO写命令写入到对应的所述IO请求队列中;
所述NVME硬盘从所述IO请求队列中获取所述第一IO写命令并解析得到待订阅的消息类型以及订阅队列的地址从而建立记录消息类型、订阅队列之间映射关系的第三映射表;
以订阅队列的地址为参数构建响应信息并将所述响应信息写入到所述业务进程对应的响应队列;
所述主机从所述业务进程对应的响应队列中获取到所述响应信息,结束消息订阅。
具体的,如图8所示的消息订阅流程图,在进行消息订阅时,执行以下步骤(图3中的3)a到3)e):
a)业务进程调用用户链接库消息订阅流程,传入消息类型、数据块和回调函数地址;
b)用户链接库更新消息类型--回调函数地址---数据块地址映射表,表示进程收到该类型消息后,要通过该回调函数处理数据块地址包含的数据;
c)用户链接库消息订阅流程构建IO写命令,配置数据指针为消息类型对应的内存页地址,SLBA为SSD订阅队列地址,NLB为1,调用NVMe驱动的IO请求/响应队列读写接口提交IO写命令;
d)NVMe驱动更新SSD硬件的队列Tail寄存器,通知SSD硬件取IO命令;
e)SSD硬件读取IO命令后,将SSD订阅队列地址添加到消息类型—(SSD订阅队列地址集合)映射表,表示硬件要转发消息到该SSD订阅队列。
在一些实施例中,响应于检测到有非空的所述订阅队列,根据所述第一映射表将非空的所述订阅队列中的消息内容上报到对应的业务进程,进一步包括:
查询所述第一映射表获取与所述非空的订阅队列对应的中断号;
将非空的订阅队列中的消息内容的长度和消息类型更新到状态寄存器并通过所述触发MSI中断将消息内容的长度和消息类型通知主机;
根据所述消息类型查询所述第四映射表获取数据块地址,并查询所述第二映射表获取与所述对应的业务进程相对应的订阅队列地址;
构建IO读命令并配置所述IO读命令的数据指针为所述数据块对应的地址,SLBA为与所述对应的业务进程相对应的订阅队列地址的地址,NLB为所述消息内容的长度;
根据所述第二映射表将所述IO读命令发送到与所述对应的业务进程对应的IO请求队列中并通知所述NVME硬盘执行所述IO读命令以使所述非空的所述订阅队列中的消息内容搬运到与所述对应的业务进程相对应的所述数据块对应的地址中。
在一些实施例中,还包括:
所述非空的所述订阅队列的地址为参数构建响应信息并将所述响应信息写入到所述对应的业务进程对应的响应队列;
所述主机从所述对应的业务进程对应的响应队列中获取到所述响应信息,结束消息上报;
根据所述消息类型查询所述第四映射表获取回调函数的地址以通过回调函数处理所述数据块对应的地址中的消息内容。
具体的,如图9所示的消息上报流程图,在进行消息上报时,执行以下步骤(图3中的5)a到5)c):
a)SSD硬件查询进程中断号—SSD订阅队列地址映射表,获取非空的SSD订阅队列对应的进程中断号;
b)SSD硬件更新消息类型和消息数据长度到状态寄存器,然后通过MSI中断通知NVMe驱动某业务进程有待处理的消息;
c)NVMe驱动读取SSD硬件状态寄存器后,通知用户链接库有消息待处理;
d)用户链接库查询消息类型--回调函数地址---数据块地址映射表、构建IO读命令传输消息数据到数据块地址后、执行回调函数处理消息数据。
在一些实施例中,响应于所述业务进程向所述NVME硬盘发送消息发布请求,利用待发布的消息类型、对应的发布队列以及消息内容构建第二IO写命令并写入对应的IO请求队列并将所述第二IO写命令写入到所述NVME硬盘,根据所述第三映射表将所述消息内容和消息类型转发到与所述待发布的消息类型对应的订阅队列中,进一步还包括:
获取所述业务进程传入的待发布的消息类型、消息内容、数据块地址;
在所述第二映射表中获取所述业务进程对应的订阅队列的地址;
构建第二IO写命令并配置所述第二IO写命令的数据指针为所述消息类型对应的地址和消息内容对应的地址,SLBA为所述发布队列的地址;
在所述第二映射表中获取所述业务进程对应的IO请求队列并将所述第二IO写命令写入到对应的所述IO请求队列中;
所述NVME硬盘从所述IO请求队列中获取所述第二IO写命令并解析得到待发布的消息类型的地址和消息内容的地址,执行DMA以根据待发布的消息类型的地址和消息内容的地址获取待发布的消息类型和消息内容并传输到对应的发布队列;
根据所述第三映射表将对应的发布队列中的消息类型和所述消息内容转发到与所述待发布的消息类型对应的订阅队列中;
以发布队列的地址为参数构建响应信息并将所述响应信息写入到所述业务进程对应的响应队列;
所述主机从所述业务进程对应的响应队列中获取到所述响应信息,结束消息发布。
具体的,如图10所示的消息发布流程图,在进行消息订阅时,执行以下步骤(图3中的4)a到4)e):
a)业务进程调用链接库消息发布流程,传入待发布消息类型和数据块地址;
b)用户链接库构建IO写命令,配置数据指针为包含消息类型和消息内容的数据块内存页地址链表,SLBA为SSD发布队列地址,NLB为实际数据块内存页个数,然后调用NVMe驱动的IO请求/响应队列读写接口提交IO写命令;
c)NVMe驱动更新SSD硬件的队列Tail寄存器,通知SSD硬件取IO命令;
d)SSD硬件读取IO命令后,查询消息类型—(SSD订阅队列地址集合)映射表,获取所有订阅了该类型消息的SSD订阅队列地址;
e)SSD硬件通过DMA复制消息数据到所有订阅了该类型消息的SSD订阅队列。
本发明技术方案提出了一种消息分发系统加速方法,该方法定义了管理进程、业务进程、用户链接库、NVMe驱动、管理请求/响应队列、IO请求/响应队列、SSD发布/订阅队列、映射表、消息转发引擎等,仅是为了理解本发明的具体实施方式,并非用以限定本发明,任何在不脱离本发明精神和范围下所做的优化,特别是对NVMe主机和SSD交互流程、各队列、映射表、消息转发过程的设计优化,均在本发明的保护范围之内。
本发明提出的方案能够带来以下有益效果:
业务进程并发能力较强:由于协议栈为每个业务进程分配单独的输入输出队列,多个业务进程之间不共享相同队列,因此进程之间不需要互斥同步操作,从而提升并发性能。
软件协议栈吞吐率较高:由于软件协议栈队列数较多,并且队列较深,因此相比依赖网络协议实现的消息分发系统,多队列并发和异步传输,使得软件协议栈吞吐率较高。
硬件链路传输性能较高:由于硬件链路DMA通道不再受限制于软件协议栈的数据吞吐量如网络协议最大传输单元、缓冲区容量、同步开销等,因此硬件链路DMA性能较高。
系统处理器使用率较低:由于消息转发协议全部由硬件消息转发模块实现,软件仅需要连续不断地向输入/输出队列提交IO命令请求,因此主机的处理器使用率较低。
系统整体的性能较高:处理器使用率的降低,进一步有助于系统其他其他需要处理器资源的模块如网络通讯或者存储器读写的数据传输性能提升,因此系统整体性能较高。
消息协议可靠性较高:由于消息具备PCIe的硬件错误恢复方法,当数据传输过程软硬件环境变化造成的消息通讯异常时,不会出现消息丢失,因此数据传输可靠性较高。
消息协议的功耗较低:由于具备PCIe设备的硬件功耗状态自动切换机制,具备多种功耗级别,系统长时间无数据传输时会自动切换到低功耗状态,因此系统耗电量较低。
消息协议的延迟较低:由于消息协议栈软件层次较少,相比基于网络协议实现的消息分发(包含应用层到物理层多个层次),减少了层次数据格式转换导致的传输延迟。
基于同一发明构思,根据本发明的另一个方面,如图11所示,本发明的实施例还提供了一种计算机设备501,包括:
至少一个处理器520;以及
存储器510,存储器510存储有可在处理器上运行的计算机程序511,处理器520执行程序时执行如上的任一种消息分发方法的步骤。
基于同一发明构思,根据本发明的另一个方面,如图12所示,本发明的实施例还提供了一种计算机可读存储介质601,计算机可读存储介质601存储有计算机程序610,计算机程序610被处理器执行时执行如上的任一种消息分发方法的步骤。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。
此外,应该明白的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (10)
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为所述订阅队列的地址;
在所述第二映射表中获取所述业务进程对应的IO请求队列并将所述第一IO写命令写入到对应的所述IO请求队列中;
所述NVME硬盘从所述IO请求队列中获取所述第一IO写命令并解析得到待订阅的消息类型以及订阅队列的地址从而建立记录消息类型、订阅队列之间映射关系的第三映射表;
以订阅队列的地址为参数构建响应信息并将所述响应信息写入到所述业务进程对应的响应队列;
所述主机从所述业务进程对应的响应队列中获取到所述响应信息,结束消息订阅。
6.如权利要求5所述的方法,其特征在于,响应于检测到有非空的所述订阅队列,根据所述第一映射表将非空的所述订阅队列中的消息内容上报到对应的业务进程,进一步包括:
查询所述第一映射表获取与所述非空的订阅队列对应的中断号;
将非空的订阅队列中的消息内容的长度和消息类型更新到状态寄存器并通过所述触发MSI中断将消息内容的长度和消息类型通知主机;
根据所述消息类型查询所述第四映射表获取数据块地址,并查询所述第二映射表获取与所述对应的业务进程相对应的订阅队列地址;
构建IO读命令并配置所述IO读命令的数据指针为所述数据块对应的地址,SLBA为与所述对应的业务进程相对应的订阅队列地址的地址,NLB为所述消息内容的长度;
根据所述第二映射表将所述IO读命令发送到与所述对应的业务进程对应的IO请求队列中并通知所述NVME硬盘执行所述IO读命令以使所述非空的所述订阅队列中的消息内容搬运到与所述对应的业务进程相对应的所述数据块对应的地址中。
7.如权利要求6所述的方法,其特征在于,还包括:
所述非空的所述订阅队列的地址为参数构建响应信息并将所述响应信息写入到所述对应的业务进程对应的响应队列;
所述主机从所述对应的业务进程对应的响应队列中获取到所述响应信息,结束消息上报;
根据所述消息类型查询所述第四映射表获取回调函数的地址以通过回调函数处理所述数据块对应的地址中的消息内容。
8.如权利要求1所述的方法,其特征在于,响应于所述业务进程向所述NVME硬盘发送消息发布请求,利用待发布的消息类型、对应的发布队列以及消息内容构建第二IO写命令并写入对应的IO请求队列并将所述第二IO写命令写入到所述NVME硬盘,根据所述第三映射表将所述消息内容和消息类型转发到与所述待发布的消息类型对应的订阅队列中,进一步还包括:
获取所述业务进程传入的待发布的消息类型、消息内容、数据块地址;
在所述第二映射表中获取所述业务进程对应的订阅队列的地址;
构建第二IO写命令并配置所述第二IO写命令的数据指针为所述消息类型对应的地址和消息内容对应的地址,SLBA为所述发布队列的地址;
在所述第二映射表中获取所述业务进程对应的IO请求队列并将所述第二IO写命令写入到对应的所述IO请求队列中;
所述NVME硬盘从所述IO请求队列中获取所述第二IO写命令并解析得到待发布的消息类型的地址和消息内容的地址,执行DMA以根据待发布的消息类型的地址和消息内容的地址获取待发布的消息类型和消息内容并传输到对应的发布队列;
根据所述第三映射表将对应的发布队列中的消息类型和所述消息内容转发到与所述待发布的消息类型对应的订阅队列中;
以发布队列的地址为参数构建响应信息并将所述响应信息写入到所述业务进程对应的响应队列;
所述主机从所述业务进程对应的响应队列中获取到所述响应信息,结束消息发布。
9.一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如权利要求1-8任意一项所述的方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行如权利要求1-8任意一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310239212.4A CN116225742A (zh) | 2023-03-09 | 2023-03-09 | 一种消息分发方法、设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310239212.4A CN116225742A (zh) | 2023-03-09 | 2023-03-09 | 一种消息分发方法、设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116225742A true CN116225742A (zh) | 2023-06-06 |
Family
ID=86590947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310239212.4A Pending CN116225742A (zh) | 2023-03-09 | 2023-03-09 | 一种消息分发方法、设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116225742A (zh) |
-
2023
- 2023-03-09 CN CN202310239212.4A patent/CN116225742A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10705974B2 (en) | Data processing method and NVME storage device | |
CN110402568B (zh) | 一种通信的方法及装置 | |
US9584332B2 (en) | Message processing method and device | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
KR20140069126A (ko) | 미들웨어 머신 환경에서 다중노드 어플리케이션들을 위한 메시지 큐들을 제공 및 관리하는 시스템 및 방법 | |
US20190196989A1 (en) | Method, Apparatus, and System for Accessing Memory Device | |
US11231964B2 (en) | Computing device shared resource lock allocation | |
CN103986585A (zh) | 报文预处理方法及其装置 | |
US20230137668A1 (en) | storage device and storage system | |
CN115827524A (zh) | 一种数据传输方法以及装置 | |
CN112506431B (zh) | 基于磁盘设备属性的i/o指令调度方法及装置 | |
CN115776434A (zh) | Rdma数据传输系统、rdma数据传输方法及网络设备 | |
CN116225742A (zh) | 一种消息分发方法、设备以及存储介质 | |
CN112732176B (zh) | 基于fpga的ssd访问方法及装置、存储系统及存储介质 | |
CN115344522B (zh) | 消息转换通道、消息转换装置、电子设备和交换设备 | |
CN113051244B (zh) | 数据访问方法和装置、数据获取方法和装置 | |
US20230393782A1 (en) | Io request pipeline processing device, method and system, and storage medium | |
CN116601616A (zh) | 一种数据处理装置、方法及相关设备 | |
CN103294560A (zh) | 跨进程传递字符串的方法及装置 | |
CN109558107B (zh) | 一种共享缓冲区的fc消息接收管理方法 | |
CN115878550A (zh) | 一种数据处理的方法、芯片、设备以及系统 | |
CN112578996B (zh) | 一种存储系统的元数据的发送方法及存储系统 | |
CN116820430B (zh) | 异步读写方法、装置、计算机设备及存储介质 | |
CN115576660A (zh) | 数据接收方法、装置、设备和存储介质 | |
CN116436866A (zh) | 数据处理方法和第一网络设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |