CN114201313A - 一种消息传递***及消息传递方法 - Google Patents
一种消息传递***及消息传递方法 Download PDFInfo
- Publication number
- CN114201313A CN114201313A CN202111485397.4A CN202111485397A CN114201313A CN 114201313 A CN114201313 A CN 114201313A CN 202111485397 A CN202111485397 A CN 202111485397A CN 114201313 A CN114201313 A CN 114201313A
- Authority
- CN
- China
- Prior art keywords
- rdma
- host
- information
- cache
- cache region
- 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 201
- 230000005540 biological transmission Effects 0.000 title abstract description 45
- 230000008569 process Effects 0.000 claims abstract description 167
- 230000015654 memory Effects 0.000 claims description 74
- 239000000872 buffer Substances 0.000 claims description 57
- 238000005516 engineering process Methods 0.000 abstract description 35
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000004891 communication Methods 0.000 description 29
- 238000002716 delivery method Methods 0.000 description 13
- 230000007246 mechanism Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000002146 bilateral effect Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000004575 stone Substances 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
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种消息传递***,包括位于第一主机内的第一缓存区、第一RDMA进程和第一调度中心;以及位于第二主机内的第二缓存区、第二RDMA进程和第二调度中心;第一RDMA进程与第二RDMA进程通过RDMA技术通信连接,以使第一主机与第二主机通信连接;第一调度中心用于获取第一主机中应用的订阅信息,并从第一缓存区通过第一RDMA进程将订阅信息发送至第二缓存区;第二调度中心用于当第二主机内应用生成对应订阅信息的实际信息时,从第二缓存区通过第二RDMA进程将实际信息发送至第一缓存区。本发明还提供了一种消息传递方法,同样具有上述有益效果。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种消息传递***以及一种消息传递方法。
背景技术
消息队列已经逐渐成为企业IT***内部通信的核心手段。当今市面上有很多主流的消息中间件,如RocketMQ,Kafka,Nats等,这些技术已相当成熟,具有可靠投递、广播、流量控制、低耦合、最终一致性等一系列功能。但是它们在涉及服务器之间的网络数据传输时,使用的传输协议大多数基于TCP/IP(Transmission Control Protocol/InternetProtocol,传输控制协议/网际协议)架构设计,受到其诞生的时代限制,这些***存在着网络传输时延较大、数据进程间多次拷贝和中断处理等问题。
与传统网络技术相比,RDMA(Remote-Direct Memory Access)远程内存直接访问技术具有高带宽、低时延、占用更少***资源等优点。作为Infiniband公司针对高性能技术领域推出的新型高速网络技术,目前支持RDMA的网络协议有IB(InfiniBand)、RoCE(RDMAover Converged Ethernet)、iWARP(internet Wide Area RDMA protocol)。其中RoCE是一种允许通过以太网进行RDMA的网络协议,其较低的网络头是以太网头,这允许在标准以太网基础架构,即交换机上使用RDMA,只有网卡是特殊的。RDMA在高性能计算领域、分布式存储等领域都有大量应用。例如,IBM的Spark over RDMA方案修改了Spark的底层网络框架,充分利用了Mellanox 100G RoCE的可靠广播功能,大幅改善***性能。利用RDMA技术提高网络传输效率已经成为一种趋势。
基于TCP/IP架构设计的消息中间件***,因为受限于协议本身以及设备硬件,在时延和吞吐量等性能指标上已很难在进一步提升。RDMA技术可以大幅提高底层网络间的数据传输效率,从而改善以上性能问题。但是在现有的RDMA基础上编程并不容易。RDMA通信原语与应用程序通常使用的socket套接字通信原语有很多不同。RDMA是基于消息的,而套接字是基于字节流的。因此,如何充分利用RDMA的高效传输特性改进消息通信***,是本领域技术人员急需解决的问题。
发明内容
本发明的目的是提供一种消息传递***,可以实现主机间基于RDMA进行通信;本发明的另一目的在于提供一种消息传递方法,可以实现主机间基于RDMA进行通信。
为解决上述技术问题,本发明提供一种消息传递***,包括位于第一主机内的第一缓存区、第一RDMA进程和第一调度中心;以及位于第二主机内的第二缓存区、第二RDMA进程和第二调度中心;
所述第一RDMA进程与所述第二RDMA进程通过RDMA技术通信连接,以使所述第一主机与所述第二主机通信连接;
所述第一调度中心用于获取所述第一主机中应用的订阅信息,并从所述第一缓存区通过所述第一RDMA进程将所述订阅信息发送至所述第二缓存区;
所述第二调度中心用于当所述第二主机内应用生成对应所述订阅信息的实际信息时,从所述第二缓存区通过所述第二RDMA进程将所述实际信息发送至所述第一缓存区。
可选的,所述第一主机内设置有包括所述第一缓存区的第一共享内存,所述第二主机内设置有包括所述第二缓存区的第二共享内存;
所述第一调度中心用于通过所述第一共享内存获取所述订阅信息;
所述第二调度中心用于通过所述第二共享内存获取所述实际信息。
可选的,所述第一共享内存与所述第二共享内存均为基于无锁环形队列的共享内存。
可选的,所述第一缓存区与所述第二缓存区均为多通道缓存区。
可选的,所述第一缓存区具有多个第一通道,多个所述第一通道对应多种长度的信息,所述第一缓存区通过所述第一通道处理对应长度的信息。
可选的,所述第二缓存区具有多个第二通道,多个所述第二通道对应多种长度的信息;所述第二缓存区通过所述第二通道处理对应长度的信息。
可选的,所述第一RDMA进程与所述第二RDMA进程可靠连接。
可选的,所述第一RDMA进程用于每当发出第一预设数量条信息后,释放发出的所述信息所占用的内存;
所述第二RDMA进程用于每当发出第二预设数量条信息后,释放发出的所述信息所占用的内存。
本发明还提供了一种消息传递方法,应用于第一调度中心,包括:
获取第一主机中应用的订阅信息;所述第一主机内设置有第一缓存区、第一RDMA进程和第一调度中心;第二主机内设置有第二缓存区、第二RDMA进程和第二调度中心;所述第一RDMA进程与所述第二RDMA进程通过RDMA技术通信连接,以使所述第一主机与所述第二主机通信连接;
从所述第一缓存区通过所述第一RDMA进程将所述订阅信息发送至所述第二缓存区,以使第二调度中心当所述第二主机内应用生成对应所述订阅信息的实际信息时,从所述第二缓存区通过所述第二RDMA进程将所述实际信息发送至所述第一缓存区。
本发明还提供了一种消息传递方法,应用于第二调度中心,包括:
获取第二主机内应用生成对应订阅信息的实际信息;第一主机内设置有第一缓存区、第一RDMA进程和第一调度中心;所述第二主机内设置有第二缓存区、第二RDMA进程和第二调度中心;所述第一RDMA进程与所述第二RDMA进程通过RDMA技术通信连接,以使所述第一主机与所述第二主机通信连接;所述订阅信息为所述第一调度中心获取的所述第一主机中应用生成的,并从所述第一缓存区发送至所述第二缓存区的订阅信息;
从所述第二缓存区通过所述第二RDMA进程将所述实际信息发送至所述第一缓存区。
本发明所提供的一种消息传递***,包括位于第一主机内的第一缓存区、第一RDMA进程和第一调度中心;以及位于第二主机内的第二缓存区、第二RDMA进程和第二调度中心;第一RDMA进程与第二RDMA进程通过RDMA技术通信连接,以使第一主机与第二主机通信连接;第一调度中心用于获取第一主机中应用的订阅信息,并从第一缓存区通过第一RDMA进程将订阅信息发送至第二缓存区;第二调度中心用于当第二主机内应用生成对应订阅信息的实际信息时,从第二缓存区通过第二RDMA进程将实际信息发送至第一缓存区。
通过在两个主机上对应设置第一RDMA进程与第二RDMA进程,可以实现两个主机通过RDMA技术通信连接,实现高效的数据传输。通过设置第一缓存区针对性收发第一RDMA进程所传输的信息,设置第二缓存区针对性收发第二RDMA进程所传输的信息,可以便于主机间基于RDMA技术通信时对数据信息的确认,便于RDMA对传统TCP/IP的替换。
本发明还提供了一种消息传递方法,同样具有上述有益效果,在此不再进行赘述。
附图说明
为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所提供的一种消息传递***的结构示意图;
图2为本发明实施例所提供的一种具体的消息传递***的结构示意图;
图3为本发明实施例所提供的一种消息传递方法的流程图;
图4为本发明实施例所提供的另一种消息传递方法的流程图。
图中:11.第一缓存区、12.第二缓存区、21.第一RDMA进程、22.第二RDMA进程、31.第一调度中心、32.第二调度中心、41.第一共享内存、42.第二共享内存。
具体实施方式
本发明的核心是提供一种一种消息传递***。在现有技术中,基于TCP/IP架构设计的消息中间件***,因为受限于协议本身以及设备硬件,在时延和吞吐量等性能指标上已很难在进一步提升。RDMA技术可以大幅提高底层网络间的数据传输效率,从而改善以上性能问题。但是在现有的RDMA基础上编程并不容易。RDMA通信原语与应用程序通常使用的socket套接字通信原语有很多不同。RDMA是基于消息的,而套接字是基于字节流的,无法直接替换。
而本发明所提供的一种消息传递***,包括位于第一主机内的第一缓存区、第一RDMA进程和第一调度中心;以及位于第二主机内的第二缓存区、第二RDMA进程和第二调度中心;第一RDMA进程与第二RDMA进程通过RDMA技术通信连接,以使第一主机与第二主机通信连接;第一调度中心用于获取第一主机中应用的订阅信息,并从第一缓存区通过第一RDMA进程将订阅信息发送至第二缓存区;第二调度中心用于当第二主机内应用生成对应订阅信息的实际信息时,从第二缓存区通过第二RDMA进程将实际信息发送至第一缓存区。
通过在两个主机上对应设置第一RDMA进程与第二RDMA进程,可以实现两个主机通过RDMA技术通信连接,实现高效的数据传输。通过设置第一缓存区针对性收发第一RDMA进程所传输的信息,设置第二缓存区针对性收发第二RDMA进程所传输的信息,可以便于主机间基于RDMA技术通信时对数据信息的确认,便于RDMA对传统TCP/IP的替换。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明实施例所提供的一种消息传递***的结构示意图。
参见图1,在本发明实施例中,消息传递***包括位于第一主机内的第一缓存区11、第一RDMA进程21和第一调度中心31;以及位于第二主机内的第二缓存区12、第二RDMA进程22和第二调度中心32;所述第一RDMA进程21与所述第二RDMA进程22通过RDMA技术通信连接,以使所述第一主机与所述第二主机通信连接;所述第一调度中心31用于获取所述第一主机中应用的订阅信息,并从所述第一缓存区11通过所述第一RDMA进程21将所述订阅信息发送至所述第二缓存区12;所述第二调度中心32用于当所述第二主机内应用生成对应所述订阅信息的实际信息时,从所述第二缓存区12通过所述第二RDMA进程22将所述实际信息发送至所述第一缓存区11。
上述第一主机与第二主机即需要相互通信的主机,两个主机中设置的装置相类似,其中第一主机中设置有第一缓存区11、第一RDMA进程21和第一调度中心31,第二主机中设置有第二缓存区12、第二RDMA进程22和第二调度中心32。
上述第一RDMA进程21即在第一主机中,用于通过RDMA技术实现数据收发的进程,相应的第二RDMA进程22即在第二主机中,用于通过RDMA技术实现数据收发的进程。在本发明实施例中,第一RDMA进程21与第二RDMA进程22通过RDMA技术通信连接,以使第一主机与第二主机通过RDMA技术通信连接。
在本发明实施例中,采用基于RoCEv2协议的RDMA技术建立网络传输模型,解决网络应用中主机数据处理的时延问题。RDMA技术通过在智能网卡上将协议固化于硬件,支持零复制网络技术和内核内存旁路技术这两种途径,使得软件架构充分优化,因而能释放内存带宽和CPU周期,极大地提升了***性能。
上述第一缓存区11用于收发第一RDMA进程21传输的信息,即第一RDMA进程21需要从第一缓存区11中选择信息发送至其他的主机,且该第一RDMA进程21在接收到信息时也会将该信息首先存储在第一缓存区11,使得第一缓存区11用于收发第一RDMA进程21传输的信息。相应的,上述第二缓存区12用于收发第二RDMA进程22传输的信息,即第二RDMA进程22需要从第二缓存区12中选择信息发送至其他的主机,且该第二RDMA进程22在接收到信息时也会将该信息首先存储在第二缓存区12,使得第二缓存区12用于收发第二RDMA进程22传输的信息。
RDMA本身无数据缓存能力,需要上层应用显式注册并管理发送和接收缓冲区,这在高并发场景下会变得十分棘手。针对上述问题,本发明实施例根据业务需要,在RDMA双边操作的基础上,建立RDMA数据缓存机制,通过检测专门的缓存区来对RDMA进程传输的数据进行收发。有关该信息收发的具体内容将在下述发明实施例中做详细介绍,在此不再进行赘述。
需要说明的是,上述第一缓存区11与第二缓存区12均可以被划分为发送缓存区以及接收缓存区,其中发送缓存区用于存储待发送的数据,接收缓存区用于存储刚接收的数据。
上述第一调度中心31即第一主机中用于处理主机之间订阅发布等信息的传递,其主要用于通过第一RDMA进程21实现信息的传递。相应的,上述第二调度中心32即第二主机中用于处理主机之间订阅发布等信息的传递,其主要用于通过第二RDMA进程22实现信息的传递。
具体的,在本发明实施例中,所述第一调度中心31用于获取所述第一主机中应用的订阅信息,并从所述第一缓存区11通过所述第一RDMA进程21将所述订阅信息发送至所述第二缓存区12。即当第一主机需要订阅第二主机中产生的信息时,第一主机中应用首先会产生订阅信息,之后上述第一调度中心31会存储该订阅信息并通知第一RDMA进程21。之后,第一RDMA进程21会从第一缓存区11中调用该订阅信息发送至第二RDMA进程22,从而将订阅信息发送至第二主机的第二缓存区12。此时,上述第二调度中心32会储存该订阅信息,以便在第二主机生成对应该订阅信息的实际信息时将石基信息回传。
相应的,在本发明实施例中,所述第二调度中心32用于当所述第二主机内应用生成对应所述订阅信息的实际信息时,从所述第二缓存区12通过所述第二RDMA进程22将所述实际信息发送至所述第一缓存区11。即当第二主机生成了对应上述订阅信息的实际信息时,通常第二RDMA进程22会通过第二缓存区12收到该实际信息,然后从第二调度中心32查询该实际信息所对应的订阅信息具体是哪一主机发布的。当确定为第一主机时,第二RDMA进程22会将实际信息发送至第一主机,具体会首先保存至第一缓存区11,以实现信息的传递。
本发明实施例所提供的一种消息传递***,包括位于第一主机内的第一缓存区11、第一RDMA进程21和第一调度中心31;以及位于第二主机内的第二缓存区12、第二RDMA进程22和第二调度中心32;第一RDMA进程21与第二RDMA进程22通过RDMA技术通信连接,以使第一主机与第二主机通信连接;第一调度中心31用于获取第一主机中应用的订阅信息,并从第一缓存区11通过第一RDMA进程21将订阅信息发送至第二缓存区12;第二调度中心32用于当第二主机内应用生成对应订阅信息的实际信息时,从第二缓存区12通过第二RDMA进程22将实际信息发送至第一缓存区11。
通过在两个主机上对应设置第一RDMA进程21与第二RDMA进程22,可以实现两个主机通过RDMA技术通信连接,实现高效的数据传输。通过设置第一缓存区11针对性收发第一RDMA进程21所传输的信息,设置第二缓存区12针对性收发第二RDMA进程22所传输的信息,可以便于主机间基于RDMA技术通信时对数据信息的确认,便于RDMA对传统TCP/IP的替换。
有关本发明所提供的一种消息传递***具体内容将在下述发明实施例中做详细介绍。
请参考图2,图2为本发明实施例所提供的一种具体的消息传递***的结构示意图。
区别于上述发明实施例,本发明实施例是在上述发明实施例的基础上,进一步的对消息传递***的结构进行具体限定。其余内容已在上述发明实施例中做详细介绍,在此不再进行赘述。
参见图2,在本发明实施例中,所述第一主机内设置有包括所述第一缓存区11的第一共享内存41,所述第二主机内设置有包括所述第二缓存区12的第二共享内存42;所述第一调度中心31用于通过所述第一共享内存41获取所述订阅信息;所述第二调度中心32用于通过所述第二共享内存42获取所述实际信息。
即在本发明实施例中,可以将第一主机中的共享内存与第一缓存区11进行整合,作为第一共享内存41。此时,第一主机中的第一共享内存41至少需要包括上述第一缓存区11,通常第一共享内存41等同于第一缓存区11。在本发明实施例中,第一共享内存41还用于实现第一主机内各个进程之间数据的传输,即在本发明实施例中第一主机内数据的传输以及不同主机之间数据的传输,均是通过同一块第一共享内存41实现。
相应的,在本发明实施例中,可以将第二主机中的共享内存与第二缓存区12进行整合,作为第二共享内存42。此时,第二主机中的第二共享内存42至少需要包括上述第二缓存区12,通常第二共享内存42等同于第二缓存区12。在本发明实施例中,第二共享内存42还用于实现第二主机内各个进程之间数据的传输,即在本发明实施例中第二主机内数据的传输以及不同主机之间数据的传输,均是通过同一块第二共享内存42实现。
除了主机之间的网络通信,主机内的进程通信也很重要。如果让主机内的进程间通信也通过RDMA网卡,受PCIe总线的限制,RDMA网卡的延迟和吞吐量都比主机内的共享内存差很多。针对上述问题,本发明实施例整合了主机内进程间通信和网络间通信,共享一块内存,即上述第一共享内存41和第二共享内存42。上层应用直接操作RDMA收发的缓存区进行进程间和网络间通信,可以提高传输效率。该内存仅在初始化时,向RDMA网卡注册一次,并作为RDMA网络收发的缓存区。此时整个传输过程中数据只有一份,同时可以保证零拷贝特性。因此,在本发明实施例中第一调度中心31具体可以通过第一共享内存41获取订阅信息;相应的第二调度中心32可以通过第二共享内存42获取上述实际信息。
通常情况下,上述第一调度中心31以及第二调度中心32均可以被划分为第一调度子中心以及第二调度子中心。其中第一调度子中心主要用于处理各个主机内进程之间通信的信息,而第二调度子中心主要用于处理主机间通信的信息。
进一步的,在本发明实施例中,所述第一共享内存41与所述第二共享内存42均为基于无锁环形队列的共享内存。采用无锁环形队列,CAS(Compare And Swap)算法管理共享内存,与带“锁”的队列相比,无锁算法减少了线程间锁竞争带来的开销,也没有线程间频繁调度带来的开销,比基于锁的方式拥有更优越的性能。因此在本发明实施例中使用基于无锁环形队列的共享内存作为上述第一共享内存41以及第二共享内存42,可以有效提升整个***的性能。
进一步的,在本发明实施例中,所述第一缓存区11与所述第二缓存区12均为多通道缓存区。即在第一缓存区11以及第二缓存区12中均设置有多个通道,从而可以并行的对数据进行传输,可以有效提高***的性能。
进一步的,在本发明实施例中,所述第一缓存区11具有多个第一通道,多个所述第一通道对应多种长度的信息,所述第一缓存区11通过所述第一通道处理对应长度的信息。相应的,在本发明实施例中,所述第二缓存区12具有多个第二通道,多个所述第二通道对应多种长度的信息;所述第二缓存区12通过所述第二通道处理对应长度的信息。
即上述第一缓存区11对应的多个第一通道具体一共会对应多种长度的信息,并且在本发明实施例中第一缓存区11通过上述第一通道具体处理自己对应长度的信息。相应的,第二缓存区12对应的多个第二通道具体一共会对应多种长度的信息,并且在本发明实施例中第二缓存区12通过上述第二通道具体处理自己对应长度的信息。
由于本发明实施例中数据的接收机制,在数据接收前,接收方并不知道数据的长度,所以必须分配足够大,并且已经向网卡注册过的内存,用于存放来自RDMA网络的数据。如果每条连接通道最多同时处理N条消息,每条消息最大可能长度为MAXS I ZE,那么需要至少分配为该通道分配缓冲区大小buffer_s i ze=N*MAXS I ZE的内存。通过环形队列,存放N块内存的指针位置,从而构建缓存区。该缓存区在RDMA应用启动时,向RDMA网卡注册一次,无需重复注册。
而在本发明实施例中,通过上述接收机制可以发现,对于即将到达的每块数据都分配最大长度的内存,不可避免的会增大内存开。针对该问题,对于不同大小的数据,采用多通道机制,并且通过多通道对应处理多种长度的数据,例如分别处理0至1KB、1KB至10KB、10KB至1MB大小的数据,从而可以有效提高内存利用率。
具体的,在本发明实施例中,所述第一RDMA进程21与所述第二RDMA进程22可靠连接。RDMA的传输类型分为两大类:连接模式和非连接模式,前者支持可靠连接(Re l i ab le Connect i on,RC)和非可靠连接(Unre l i ab l e Connect i on,UC)两种传输类型。在本发明实施例中,具体会选用可靠连接的传输类型,传输第一主机与第二主机之间的数据。
具体的,本发明实施例中数据的发送机制,所述第一RDMA进程21用于每当发出第一预设数量条信息后,释放发出的所述信息所占用的内存;所述第二RDMA进程22用于每当发出第二预设数量条信息后,释放发出的所述信息所占用的内存。
在实际情况中,RDMA的发送端i bv_post_send函数返回成功,仅仅意味着成功地向网卡提交了发送请求,并不保证数据真的被发送出去,RDMA的接收端应用程序则需要事先声明所要接收的消息,指定接收内存区域。由于i bv_post_send函数返回成功,仅仅意味着成功地向网卡提交了发送请求,并不能立刻修改数据所在的内存区域。
因此在本发明实施例构建的缓存区中,每发送N条数据,可以将第N条数据做标记,同步等待数据真正发送出去。由于本***采用的RDMA可靠连接方式可以保证数据顺序,当确认第N条数据时,表示前面N-1条数据一定已到达对端,此时发送数据所在的内存可以释放出来。这样既可以保证数据所在内存区域的安全,又最大程度利用了RDMA的高效收发能力。相应的在本发明实施例中,需要第一RDMA进程21每当发出第一预设数量条信息后,释放发出的信息所占用的内存;并需要第二RDMA进程22每当发出第二预设数量条信息后,释放发出的信息所占用的内存。
需要说明的是,RDMA提供了两类通信原语,第一类是双边(two-s i ded)操作,与socket套接字类似,发送端调用send,接收端调用recv,另一类是单边(one-s i ded)操作,提供了共享内存的原语,即直接读写远程内存,或在远程内存上执行原子操作。而在本发明实施例中,通常使用双边原语作为第一RDMA进程21与第二RDMA进程22间具体的数据传输机制。
由于RDMA技术复杂,对于上层开发人员,学习掌握RDMA技术成本较高。而本发明实施例基于RDMA技术提出一个完整的消息中间件***,作为一个独立的应用进程提供给使用者。RDMA网络技术作为***组成的一部分,并不会直接暴露给使用者。RDMA使用时面临的内存注册、缓存管理等问题,均在***内部解决。因此使用者只需要关注消息中间件最常用的消息订阅、发布等基本功能,不感知底层网络传输的细节,可以极大的减少开发成本。
本发明实施例所提供的一种消息传递***,通过在两个主机上对应设置第一RDMA进程21与第二RDMA进程22,可以实现两个主机通过RDMA技术通信连接,实现高效的数据传输。通过设置第一缓存区11针对性收发第一RDMA进程21所传输的信息,设置第二缓存区12针对性收发第二RDMA进程22所传输的信息,可以便于主机间基于RDMA技术通信时对数据信息的确认,便于RDMA对传统TCP/IP的替换。
下面对本发明实施例提供的一种消息传递方法进行介绍,下文描述的消息传递方法与上文描述的消息传递***可相互对应参照。
需要说明的是,本发明实施例所提供的一种消息传递方法具体应用于消息传递***中的发送订阅信息的一端,通常为客户端,即上述第一主机。
请参考图3,图3为本发明实施例所提供的一种消息传递方法的流程图。本发明实施例所提供的一种消息传递方法应用于第一主机,具体应用于上述第一调度中心31。
参见图3,在本发明实施例中,消息传递方法包括:
S101:获取第一主机中应用的订阅信息。
在本发明实施例中,所述第一主机内设置有第一缓存区11、第一RDMA进程21和第一调度中心31;第二主机内设置有第二缓存区12、第二RDMA进程22和第二调度中心32;所述第一RDMA进程21与所述第二RDMA进程22通过RDMA技术通信连接,以使所述第一主机与所述第二主机通信连接。有关消息传递***的具体结构已在上述发明实施例中做详细介绍,在此不再进行赘述。
S102:从第一缓存区通过第一RDMA进程将订阅信息发送至第二缓存区,以使第二调度中心当第二主机内应用生成对应订阅信息的实际信息时,从第二缓存区通过第二RDMA进程将实际信息发送至第一缓存区。
有关第一主机与第二主机之间具体的通信方式已在上述发明实施例中做详细介绍,在此不再进行赘述。
本发明实施例所提供的一种消息传递方法,通过在两个主机上对应设置第一RDMA进程21与第二RDMA进程22,可以实现两个主机通过RDMA技术通信连接,实现高效的数据传输。通过设置第一缓存区11针对性收发第一RDMA进程21所传输的信息,设置第二缓存区12针对性收发第二RDMA进程22所传输的信息,可以便于主机间基于RDMA技术通信时对数据信息的确认,便于RDMA对传统TCP/IP的替换。
下面对本发明实施例提供的一种消息传递方法进行介绍,下文描述的消息传递方法与上文描述的消息传递***可相互对应参照。
需要说明的是,本发明实施例所提供的另一种消息传递方法具体应用于消息传递***中的发送实际信息的一端,通常为服务器端,即上述第二主机。
请参考图4,图4为本发明实施例所提供的另一种消息传递方法的流程图。本发明实施例所提供的另一种消息传递方法应用于第二主机,具体应用于上述第二调度中心32。
参见图4,在本发明实施例中,消息传递方法包括:
S201:获取第二主机内应用生成对应订阅信息的实际信息。
在本发明实施例中,第一主机内设置有第一缓存区11、第一RDMA进程21和第一调度中心31;所述第二主机内设置有第二缓存区12、第二RDMA进程22和第二调度中心32;所述第一RDMA进程21与所述第二RDMA进程22通过RDMA技术通信连接,以使所述第一主机与所述第二主机通信连接;所述订阅信息为所述第一调度中心31获取的所述第一主机中应用生成的,并从所述第一缓存区11发送至所述第二缓存区12的订阅信息。有关消息传递***的具体结构已在上述发明实施例中做详细介绍,在此不再进行赘述。
S202:从第二缓存区通过第二RDMA进程将实际信息发送至第一缓存区。
有关第一主机与第二主机之间具体的通信方式已在上述发明实施例中做详细介绍,在此不再进行赘述。
本发明实施例所提供的一种消息传递方法,通过在两个主机上对应设置第一RDMA进程21与第二RDMA进程22,可以实现两个主机通过RDMA技术通信连接,实现高效的数据传输。通过设置第一缓存区11针对性收发第一RDMA进程21所传输的信息,设置第二缓存区12针对性收发第二RDMA进程22所传输的信息,可以便于主机间基于RDMA技术通信时对数据信息的确认,便于RDMA对传统TCP/IP的替换。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种消息传递***以及一种消息传递方法进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (10)
1.一种消息传递***,其特征在于,包括位于第一主机内的第一缓存区、第一RDMA进程和第一调度中心;以及位于第二主机内的第二缓存区、第二RDMA进程和第二调度中心;
所述第一RDMA进程与所述第二RDMA进程通过RDMA技术通信连接,以使所述第一主机与所述第二主机通信连接;
所述第一调度中心用于获取所述第一主机中应用的订阅信息,并从所述第一缓存区通过所述第一RDMA进程将所述订阅信息发送至所述第二缓存区;
所述第二调度中心用于当所述第二主机内应用生成对应所述订阅信息的实际信息时,从所述第二缓存区通过所述第二RDMA进程将所述实际信息发送至所述第一缓存区。
2.根据权利要求1所述的***,其特征在于,所述第一主机内设置有包括所述第一缓存区的第一共享内存,所述第二主机内设置有包括所述第二缓存区的第二共享内存;
所述第一调度中心用于通过所述第一共享内存获取所述订阅信息;
所述第二调度中心用于通过所述第二共享内存获取所述实际信息。
3.根据权利要求2所述的***,其特征在于,所述第一共享内存与所述第二共享内存均为基于无锁环形队列的共享内存。
4.根据权利要求1所述的***,其特征在于,所述第一缓存区与所述第二缓存区均为多通道缓存区。
5.根据权利要求4所述的***,其特征在于,所述第一缓存区具有多个第一通道,多个所述第一通道对应多种长度的信息,所述第一缓存区通过所述第一通道处理对应长度的信息。
6.根据权利要求4所述的***,其特征在于,所述第二缓存区具有多个第二通道,多个所述第二通道对应多种长度的信息;所述第二缓存区通过所述第二通道处理对应长度的信息。
7.根据权利要求1所述的***,其特征在于,所述第一RDMA进程与所述第二RDMA进程可靠连接。
8.根据权利要求7所述的***,其特征在于,所述第一RDMA进程用于每当发出第一预设数量条信息后,释放发出的所述信息所占用的内存;
所述第二RDMA进程用于每当发出第二预设数量条信息后,释放发出的所述信息所占用的内存。
9.一种消息传递方法,其特征在于,应用于第一调度中心,包括:
获取第一主机中应用的订阅信息;所述第一主机内设置有第一缓存区、第一RDMA进程和第一调度中心;第二主机内设置有第二缓存区、第二RDMA进程和第二调度中心;所述第一RDMA进程与所述第二RDMA进程通过RDMA技术通信连接,以使所述第一主机与所述第二主机通信连接;
从所述第一缓存区通过所述第一RDMA进程将所述订阅信息发送至所述第二缓存区,以使第二调度中心当所述第二主机内应用生成对应所述订阅信息的实际信息时,从所述第二缓存区通过所述第二RDMA进程将所述实际信息发送至所述第一缓存区。
10.一种消息传递方法,其特征在于,应用于第二调度中心,包括:
获取第二主机内应用生成对应订阅信息的实际信息;第一主机内设置有第一缓存区、第一RDMA进程和第一调度中心;所述第二主机内设置有第二缓存区、第二RDMA进程和第二调度中心;所述第一RDMA进程与所述第二RDMA进程通过RDMA技术通信连接,以使所述第一主机与所述第二主机通信连接;所述订阅信息为所述第一调度中心获取的所述第一主机中应用生成的,并从所述第一缓存区发送至所述第二缓存区的订阅信息;
从所述第二缓存区通过所述第二RDMA进程将所述实际信息发送至所述第一缓存区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111485397.4A CN114201313A (zh) | 2021-12-07 | 2021-12-07 | 一种消息传递***及消息传递方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111485397.4A CN114201313A (zh) | 2021-12-07 | 2021-12-07 | 一种消息传递***及消息传递方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114201313A true CN114201313A (zh) | 2022-03-18 |
Family
ID=80650993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111485397.4A Pending CN114201313A (zh) | 2021-12-07 | 2021-12-07 | 一种消息传递***及消息传递方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114201313A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1474568A (zh) * | 2002-08-06 | 2004-02-11 | 华为技术有限公司 | 多通道数据直接内存访问***和方法 |
CN103530167A (zh) * | 2013-09-30 | 2014-01-22 | 华为技术有限公司 | 一种虚拟机内存数据的迁移方法及相关装置和集群*** |
CN109471816A (zh) * | 2018-11-06 | 2019-03-15 | 西安微电子技术研究所 | 一种基于描述符的pcie总线dma控制器及数据传输控制方法 |
CN109491809A (zh) * | 2018-11-12 | 2019-03-19 | 西安微电子技术研究所 | 一种降低高速总线延迟的通信方法 |
-
2021
- 2021-12-07 CN CN202111485397.4A patent/CN114201313A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1474568A (zh) * | 2002-08-06 | 2004-02-11 | 华为技术有限公司 | 多通道数据直接内存访问***和方法 |
CN103530167A (zh) * | 2013-09-30 | 2014-01-22 | 华为技术有限公司 | 一种虚拟机内存数据的迁移方法及相关装置和集群*** |
CN109471816A (zh) * | 2018-11-06 | 2019-03-15 | 西安微电子技术研究所 | 一种基于描述符的pcie总线dma控制器及数据传输控制方法 |
CN109491809A (zh) * | 2018-11-12 | 2019-03-19 | 西安微电子技术研究所 | 一种降低高速总线延迟的通信方法 |
Non-Patent Citations (2)
Title |
---|
IBM官方技术文档: "Shared Memory Communications overRemote Direct Memory Access", pages 1, Retrieved from the Internet <URL:https://www.ibm.com/docs/en/zos/2.1.0?topic=bts-shared-memory-communications-over-remote-direct-memory-access> * |
微软官方技术文档: "Register Buffer、Buffer Descriptor V1 Structure", pages 2, Retrieved from the Internet <URL:https://learn.microsoft.com/pdf?url=https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-smbd/toc.json> * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8756329B2 (en) | System and method for parallel multiplexing between servers in a cluster | |
CN101015187B (zh) | 在网络协议处理的卸载中支持连接建立的设备和方法 | |
US20190335010A1 (en) | Systems and methods for providing messages to multiple subscribers | |
CN111277616B (zh) | 一种基于rdma的数据传输方法和分布式共享内存*** | |
CN110602156A (zh) | 一种负载均衡调度方法及装置 | |
US9002969B2 (en) | Distributed multimedia server system, multimedia information distribution method, and computer product | |
CN102546612B (zh) | 用户态下基于rdma协议的远程过程调用实现方法 | |
CN110134534B (zh) | 基于nio针对大数据分布式***进行消息处理优化的***及方法 | |
CN111404931B (zh) | 一种基于持久性内存的远程数据传输方法 | |
CN112291293B (zh) | 任务处理方法、相关设备及计算机存储介质 | |
CN109547519B (zh) | 反向代理方法、装置及计算机可读存储介质 | |
CN102831018A (zh) | 低延迟先进先出消息交换*** | |
CN105141603A (zh) | 通信数据传输方法及*** | |
CN110535811B (zh) | 远端内存管理方法及***、服务端、客户端、存储介质 | |
US8135851B2 (en) | Object request broker for accelerating object-oriented communications and method | |
Yu et al. | High performance and reliable NIC-based multicast over Myrinet/GM-2 | |
CN115834660B (zh) | 一种非阻塞rdma连接建立方法及装置 | |
CN114201313A (zh) | 一种消息传递***及消息传递方法 | |
US11785087B1 (en) | Remote direct memory access operations with integrated data arrival indication | |
CN101123567A (zh) | 用于处理网络信息的方法及*** | |
US8176117B2 (en) | Accelerator for object-oriented communications and method | |
Qi et al. | X-IO: A high-performance unified I/O interface using lock-free shared memory processing | |
CN115866010B (zh) | 一种rdma连接建立方法及装置 | |
CN117873758B (zh) | 一种基于消息总线的dcs***站间通信方法 | |
WO2024077999A1 (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 |