数据流控方法、装置、设备及存储介质与流程

文档序号:33125814发布日期:2023-02-01 05:09阅读:25来源:国知局
数据流控方法、装置、设备及存储介质与流程

1.本发明涉及网络通讯技术领域,尤其涉及一种数据流控方法、装置、设备及存储介质。


背景技术:

2.随着网络通讯技术的发展,人们对网络通讯过程中通讯时延的要求越来越高。目前,行业内主要通过采用rdma(remote direct memory access,远程直接数据存取)技术来降低网络通讯过程中的通讯时延,该技术需要接收端有可用事先分配好的可用内存块,通过滑动窗口、拥塞队列的机制来实现。
3.然而,rdma在以太网上并不具有流控机制,在接收端出现拥塞时,发送端并不知晓。此时若发送端有数据发送,则会一直向接收端执行发送动作,从而导致接收端拥塞加剧,整个系统处理性能下降,抖动严重,产生突刺,通讯时延极剧增长。在没有拥塞的情况下,通讯时延为10~20us,如果产生拥塞,最大通讯时延会增加到大于1s,这对于一些需要超低通讯时延(如纳秒级通讯时延)来开展工作的行业(如证券交易行业)来说是不能接受的。因此,业内亟需一种简单、高效的数据流控方法,来解决目前网络通讯过程中产生的网络拥塞导致通讯时延增加的问题。
4.上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。


技术实现要素:

5.本发明的主要目的在于提供了一种数据流控方法、装置、设备及存储介质,旨在解决现有技术中网络通讯过程中产生的网络拥塞导致通讯时延增加的问题。
6.为实现上述目的,本发明提供了一种数据流控方法,应用于发送端,所述方法包括以下步骤:
7.获取第一数量,所述第一数量为当前可发送数据包的数量;
8.判断所述第一数量是否大于第一预设阈值;
9.若是,则向接收端发送数据包,并在所述数据包发送成功时对所述第一数量进行实时更新;
10.当检测到更新后的第一数量小于或等于所述第一预设阈值时,暂停向所述接收端发送数据包。
11.可选地,所述若是,则向接收端发送数据包,并在所述数据包发送成功时对所述第一数量进行实时更新,包括:
12.若是,则向接收端发送数据包,所述数据包的数量小于或等于当前第一数量;
13.在所述数据包发送成功时,将所述第一数量减去发包数量,所述发包数量为本次发送的数据包的数量。
14.可选地,所述当检测到更新后的第一数量小于或等于所述第一预设阈值时,暂停
向所述接收端发送数据包之后,还包括:
15.将所述更新后的第一数量与所述接收端的第二数量相加,并将相加后的数量作为新的第一数量,所述第二数量为当前可更新数据包的数量;
16.当检测到所述新的第一数量大于所述第一预设阈值时,继续向所述接收端发送数据包。
17.此外,为实现上述目的,本发明还提供了一种数据流控方法,应用于接收端,所述方法包括以下步骤:
18.接收发送端发送的数据包,从所述数据包中获取所述发送端的第三数量,所述第三数量为当前可增加rdma内存块的数量;
19.基于所述第三数量对第二数量和第四数量进行实时更新,所述第二数量为所述发送端当前可更新数据包的数量,所述第四数量为当前rdma内存块的数量;
20.当检测到更新后的第二数量大于或等于第二预设阈值且所述第四数量大于第一预设阈值时,向所述发送端发送更新数据包,以使所述发送端基于所述更新数据包对第一数量进行更新,所述第一数量为发送端可发送数据包的数量。
21.可选地,所述基于所述第三数量对第二数量和第四数量进行实时更新,包括:
22.在所述数据包接收成功时,将第四数量更新为本地存储的当前第四数量与当前数据包对应的第三数量的和,并将第二数量加上收包数量,所述收包数量为本次接收的数据包的数量。
23.可选地,所述当检测到更新后的第二数量大于或等于第二预设阈值且所述更新后的第四数量大于第一预设阈值时,向所述发送端发送更新数据包,以使所述发送端基于所述更新数据包对第一数量进行更新,包括:
24.当检测到更新后的第二数量大于或等于第二预设阈值且所述更新后的第四数量大于第一预设阈值时,向所述发送端发送更新数据包,所述更新数据包中包含当前第三数量,以使所述发送端将第一数量更新为本地存储的当前第一数量与所述当前第三数量的和以及将第二数量加1;
25.在所述更新数据包发送成功时,将所述第三数量置为第三预设阈值。
26.此外,为实现上述目的,本发明还提出一种数据流控装置,应用于发送端,所述数据流控装置包括:
27.数据获取模块,用于获取第一数量,所述第一数量为当前可发送数据包的数量;
28.数据判断模块,用于判断所述第一数量是否大于第一预设阈值;
29.数据发送模块,用于若是,则向接收端发送数据包,并在所述数据包发送成功时对所述第一数量进行实时更新;
30.数据控制模块,用于当检测到更新后的第一数量小于或等于所述第一预设阈值时,暂停向所述接收端发送数据包。
31.此外,为实现上述目的,本发明还提出一种数据流控装置,应用于接收端,所述数据流控装置包括:
32.数据接收模块,用于接收发送端发送的数据包,从所述数据包中获取所述发送端的第三数量,所述第三数量为当前可增加rdma内存块的数量;
33.数据更新模块,用于基于所述第三数量对第二数量和第四数量进行实时更新,所
述第二数量为所述发送端当前可更新数据包的数量,所述第四数量为当前rdma内存块的数量;
34.数据检测模块,用于当检测到更新后的第二数量大于或等于第二预设阈值且所述第四数量大于第一预设阈值时,向所述发送端发送更新数据包,以使所述发送端基于所述更新数据包对第一数量进行更新,所述第一数量为发送端可发送数据包的数量。
35.此外,为实现上述目的,本发明还提出一种数据流控设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据流控程序,所述数据流控程序配置为实现如上文所述的数据流控方法的步骤。
36.此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有数据流控程序,所述数据流控程序被处理器执行时实现如上文所述的数据流控方法的步骤。
37.本发明通过获取第一数量,第一数量为当前可发送数据包的数量,判断第一数量是否大于第一预设阈值,若是,则向接收端发送数据包,并在数据包发送成功时对第一数量进行实时更新,当检测到更新后的第一数量小于或等于第一预设阈值时,暂停向接收端发送数据包。相比于现有技术中,通过滑动窗口、拥塞队列等通讯时延较高的复杂机制来进行网络通讯,本发明上述方法通过引入计数器来对网络通讯过程中的发送端和接收端进行rdma内存块可用数量的监测,并基于上述rdma内存块的数量来控制发送端是否向接收端发送数据包,解决了现有技术中网络通讯过程中产生的网络拥塞导致通讯时延增加的问题,从而实现了网络节点间的拥塞干预和流量控制的功能,进而降低了网络通讯的通讯时延。
附图说明
38.图1为本发明实施例方案涉及的硬件运行环境的数据流控设备的结构示意图;
39.图2为本发明数据流控方法第一实施例的流程示意图;
40.图3为本发明数据流控方法第二实施例的流程示意图;
41.图4为本发明数据流控方法数据传输的第一时序图;
42.图5为本发明数据流控方法第三实施例的流程示意图;
43.图6为本发明数据流控方法数据传输的第二时序图;
44.图7为本发明数据流控装置第一实施例的结构框图;
45.图8为本发明数据流控装置第二实施例的结构框图。
46.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
47.应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
48.参照图1,图1为本发明实施例方案涉及的硬件运行环境的数据流控设备结构示意图。
49.如图1所示,该数据流控设备可以包括:处理器1001,例如中央处理器(central processing unit,cpu),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真
(wireless-fidelity,wi-fi)接口)。存储器1005可以是高速的随机存取存储器(random access memory,ram),也可以是稳定的非易失性存储器(non-volatile memory,nvm),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
50.本领域技术人员可以理解,图1中示出的结构并不构成对数据流控设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
51.如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及数据流控程序。
52.在图1所示的数据流控设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明数据流控设备中的处理器1001、存储器1005可以设置在数据流控设备中,所述数据流控设备通过处理器1001调用存储器1005中存储的数据流控程序,并执行本发明实施例提供的数据流控方法。
53.本发明实施例提供了一种数据流控方法,参照图2,图2为本发明数据流控方法第一实施例的流程示意图。
54.本实施例中,所述数据流控方法包括以下步骤:
55.步骤s10:获取第一数量,所述第一数量为当前可发送数据包的数量。
56.需要说明的是,本实施例方法的执行主体可以是具有数据处理、网络通讯以及程序运行功能的计算服务设备,例如手机、平板电脑、个人电脑等,还可以是能够实现相同或相似功能的其他电子设备,本实施例对此不加以限制。此处将以个人电脑为例对本发明数据流控方法的各项实施例进行说明。
57.可理解的是,上述第一数量指的是从第一计数器中获取的数值,上述第一计数器用于记录发送端当前可发送数据包的数量,它可以是同步计数器,也可以是异步计数器,本实施例对此不加以限制。
58.应理解的是,上述数据包指的是网络通讯中的数据单位,它可以被存储在rdma(remote direct memory access,远程直接数据存取)内存块中,一个内存块对应一个数据包。
59.步骤s20:判断所述第一数量是否大于第一预设阈值。
60.需要说明的是,上述第一预设阈值并不具有实际含义,仅用来进行数值大小的比较。第一预设阈值可以按照需求自定义设置,它可以是0,也可以是其他任意自然数。
61.步骤s30:若是,则向接收端发送数据包,并在所述数据包发送成功时对所述第一数量进行实时更新。
62.应理解的是,所述接收端可以是具有数据处理、网络通讯以及程序运行功能的计算服务设备,例如手机、平板电脑、个人电脑等,还可以是能够实现相同或相似功能的其他电子设备,本实施例对此不加以限制。
63.可理解的是,在向接收端发送数据包的过程中,每成功发送一个数据包时,都要对上述第一数量进行更新。
64.进一步地,为了确定更新后的第一数量,从而确定当前可发送数据包的数量,本实施例中的步骤s30,可包括:
65.步骤s301:若是,则向接收端发送数据包,所述数据包的数量小于或等于当前第一数量。
66.需要说明的是,在实际发包过程中,数据包的数量应小于或等于当前第一数量。例如,在一次发包中,当前第一数量为64,即代表当前可发送数据包的数量为64,也就是说发送端向接收端发送的数据包不能超过64,即小于或等于64。
67.步骤s302:在所述数据包发送成功时,将所述第一数量减去发包数量,所述发包数量为本次发送的数据包的数量。
68.可理解的是,在发包过程中,发送端每发送一个数据包,相当于接收端接收一个数据包,而在接收端中每接收一个数据包就需要占用一个内存块。因此,在上述数据包发送成功时,可以通过将第一数量减去发包数量的方式来确认接收端当前能够接收数据包的最大数量,从而监测接收端是否发生拥塞。
69.步骤s40:当检测到更新后的第一数量小于或等于所述第一预设阈值时,暂停向所述接收端发送数据包。
70.应理解的是,当上述更新后的第一数量小于或等于上述第一预设阈值时,表明此时接收端中的内存块已被全部占用,无法继续接收数据包,因此可以通过暂停发送数据包的方式来避免造成接收端的网络拥塞。
71.进一步地,为了在接收端空出内存块时,发送端能够继续对接收端发送数据包,在本实施例中的步骤s40之后,还可包括:
72.步骤s50:将所述更新后的第一数量与所述接收端的第二数量相加,并将相加后的数量作为新的第一数量,所述第二数量为当前可更新数据包的数量。
73.需要说明的是,上述第二数量指的是从第二计数器中获取的数值,上述第二计数器用于记录发送端当前可更新数据包的数量,它可以是同步计数器,也可以是异步计数器,本实施例对此不加以限制。
74.步骤s60:当检测到所述新的第一数量大于所述第一预设阈值时,继续向所述接收端发送数据包。
75.可理解的是,当上述新的第一数量大于上述第一预设阈值时,则表明此时接收端有空余的内存块来存储数据包,因此,此时发送端可以向接收端发送数据包。
76.本实施例通过获取第一数量,第一数量为当前可发送数据包的数量,判断第一数量是否大于第一预设阈值,若是,则向接收端发送数据包,并在数据包发送成功时对第一数量进行实时更新,当检测到更新后的第一数量小于或等于第一预设阈值时,暂停向接收端发送数据包。相比于现有技术中,通过滑动窗口、拥塞队列等通讯时延较高的复杂机制来进行网络通讯,本实施例上述方法通过引入计数器来对网络通讯过程中的发送端和接收端进行rdma内存块可用数量的监测,并基于上述rdma内存块的数量来控制发送端是否向接收端发送数据包,解决了现有技术中网络通讯过程中产生的网络拥塞导致通讯时延增加的问题,从而实现了网络节点间的拥塞干预和流量控制的功能,进而降低了网络通讯的通讯时延。
77.参考图3,图3为本发明数据流控方法第二实施例的流程示意图。
78.本实施例中,所述数据流控方法包括以下步骤:
79.步骤s100:接收发送端发送的数据包,从所述数据包中获取所述发送端的第三数量,所述第三数量为当前可增加rdma内存块的数量。
80.需要说明的是,上述第三数量指的是从第三计数器中获取的数值,上述第三计数
器用于记录接收端当前可增加rdma内存块的数量,它可以是同步计数器,也可以是异步计数器,本实施例对此不加以限制。
81.步骤s200:基于所述第三数量对第二数量和第四数量进行实时更新,所述第二数量为所述发送端当前可更新数据包的数量,所述第四数量为当前rdma内存块的数量。
82.可理解的是,上述第四数量指的是从第四计数器中获取的数值,上述第四计数器用于记录接收端当前rdma内存块的数量,它可以是同步计数器,也可以是异步计数器,本实施例对此不加以限制。
83.参考图4,图4为本发明数据流控方法数据传输的第一时序图。
84.如图4所示,图中的a端为发送端,b端为接收端:a端中的send_comps为第一数量(即第一计数器中的数值),b端中的send_update为第二数量(即第二计数器中的数值),a端中的send_update为第三数量(即第三计数器中的数值),b端中的send_comps为第四数量(即第四计数器中的数值)。图4给出了一种数据传输的具体场景,发送端连续发送3个数据包到接收端,每发送完一个数据包,第一数量减1,在发送完3个数据包时,第一数量置为61,第三数量置为0。接收端在接收到3个数据包时,由于接收到的第三数量都为0,此时第四数量为64,第三数量为3。随后接收端发送一个数据包到发送端,该数据包携带接收端的第二数量。发送完后,第四数量减1,置为63;第二数量置为0。发送端收到数据包后,将第二数量取出,第一数量更新为61+3=64。上述场景仅用于举例说明数据传输的时序图,并不用于限定,其他数据传输的场景也同样适用于本实施例,此处不作赘述。
85.步骤s300:当检测到更新后的第二数量大于或等于第二预设阈值且所述第四数量大于第一预设阈值时,向所述发送端发送更新数据包,以使所述发送端基于所述更新数据包对第一数量进行更新,所述第一数量为发送端可发送数据包的数量。
86.需要说明的是,上述第二预设阈值并不具有实际含义,仅用来进行数值大小的比较。第二预设阈值可以按照需求自定义设置,它可以是0,也可以是其他任意自然数。
87.可理解的是,当更新后的第二数量大于或等于第二预设阈值且所述第四数量大于第一预设阈值时,表明此时发送端已经积累了一定的未更新数据包。
88.本实施例通过接收发送端发送的数据包,从所述数据包中获取所述发送端的第三数量,再基于所述第三数量对第二数量和第四数量进行实时更新,最后当检测到更新后的第二数量大于或等于第二预设阈值且所述第四数量大于第一预设阈值时,向所述发送端发送更新数据包,以使所述发送端基于所述更新数据包对第一数量进行更新。本实施例上述方法通过引入计数器来对网络通讯过程中的发送端和接收端进行rdma内存块可用数量的监测,并基于上述rdma内存块的数量来控制发送端进行数据包的更新,解决了现有技术网络通讯过程中,发送端无法预知接收端的rdma内存块占用情况而不间断地发包的问题,从而避免了接收端发生拥塞,进而降低了网络通讯的通讯时延。
89.参考图5,图5为本发明数据流控方法第三实施例的流程示意图。
90.基于上述各实施例,在本实施例中,为了对第二数量和第四数量进行实时更新,所述步骤s200,可包括:
91.步骤s201:在所述数据包接收成功时,将第四数量更新为本地存储的当前第四数量与当前数据包对应的第三数量的和,并将第二数量加上收包数量,所述收包数量为本次接收的数据包的数量。
92.进一步地,基于上述各实施例,在本实施例中,为了使得当更新后的第二数量大于或等于第二预设阈值且更新后的第四数量大于第一预设阈值时,发送端进行数据包的更新,所述步骤s300,可包括:
93.步骤s301:当检测到更新后的第二数量大于或等于第二预设阈值且所述更新后的第四数量大于第一预设阈值时,向所述发送端发送更新数据包,所述更新数据包中包含当前第三数量,以使所述发送端将第一数量更新为本地存储的当前第一数量与所述当前第三数量的和以及将第二数量加1。
94.步骤s302:在所述更新数据包发送成功时,将所述第三数量置为第三预设阈值。
95.需要说明的是,上述第三预设阈值可以按照需求自定义设置,它可以是0,也可以是其他任意自然数。
96.参考图6,图6为本发明数据流控方法数据传输的第二时序图。
97.如图6所示,图中的a端为发送端,b端为接收端:a端中的send_comps为第一数量(即第一计数器中的数值),b端中的send_update为第二数量(即第二计数器中的数值),a端中的send_update为第三数量(即第三计数器中的数值),b端中的send_comps为第四数量(即第四计数器中的数值)。图6给出了一种数据传输的具体场景,发送端连续发送32个数据包,第一数量置为32,第三数量置为0。接收端在接收到数据包时,第二数量更新为32,第四数量置为64。假设第一预设阈值为0,第二预设阈值为0.5,上述第二预设阈值的计算方法为当前第二数量除以初始rdma内存块的总数量。那么此时接收端检测到当前第四数量大于0且当前第二数量32除以初始rdma内存块的总数量64等于0.5,则向发送端发送一个更新数据包,发送成功后将第二数量置为0。发送端在接收到数据包时,将第一数量更新为32+32=64,第三数量加1。上述场景仅用于举例说明数据传输的时序图,并不用于限定,其他数据传输的场景也同样适用于本实施例,此处不作赘述。
98.本实施例根据根据更新后的第二数量是否大于或等于第二预设阈值且所述更新后的第四数量是否大于第一预设阈值,来判断是否向所述发送端发送更新数据包,从而使得发送端在接收端具备接收条件的前提下发送数据包。相较于现有技术在网络通讯中发送端无法预知接收端的rdma内存块占用情况而不间断地发包,本实施例上述方法能够实时监测接收端的rdma内存块占用情况,从而避免了接收端发生拥塞,进而降低了网络通讯的通讯时延。
99.此外,本发明实施例还提出一种存储介质,所述存储介质上存储有数据流控程序,所述数据流控程序被处理器执行时实现如上文所述的数据流控方法的步骤。
100.参照图7,图7为本发明数据流控装置第一实施例的结构框图。
101.如图7所示,本发明实施例提出的数据流控装置包括:
102.数据获取模块701,用于获取第一数量,所述第一数量为当前可发送数据包的数量;
103.数据判断模块702,用于判断所述第一数量是否大于第一预设阈值;
104.数据发送模块703,用于若是,则向接收端发送数据包,并在所述数据包发送成功时对所述第一数量进行实时更新;
105.数据控制模块704,用于当检测到更新后的第一数量小于或等于所述第一预设阈值时,暂停向所述接收端发送数据包。
106.本发明通过获取第一数量,第一数量为当前可发送数据包的数量,判断第一数量是否大于第一预设阈值,若是,则向接收端发送数据包,并在数据包发送成功时对第一数量进行实时更新,当检测到更新后的第一数量小于或等于第一预设阈值时,暂停向接收端发送数据包。相比于现有技术中,通过滑动窗口、拥塞队列等通讯时延较高的复杂机制来进行网络通讯,本发明上述方法通过引入计数器来对网络通讯过程中的发送端和接收端进行rdma内存块可用数量的监测,并基于上述rdma内存块的数量来控制发送端是否向接收端发送数据包,解决了现有技术中网络通讯过程中产生的网络拥塞导致通讯时延增加的问题,从而实现了网络节点间的拥塞干预和流量控制的功能,进而降低了网络通讯的通讯时延。
107.参照图8,图8为本发明数据流控装置第二实施例的结构框图。
108.如图8所示,本发明实施例提出的数据流控装置包括:
109.数据接收模块801,用于接收发送端发送的数据包,从所述数据包中获取所述发送端的第三数量,所述第三数量为当前可增加rdma内存块的数量;
110.数据更新模块802,用于基于所述第三数量对第二数量和第四数量进行实时更新,所述第二数量为所述发送端当前可更新数据包的数量,所述第四数量为当前rdma内存块的数量;
111.数据检测模块803,用于当检测到更新后的第二数量大于或等于第二预设阈值且所述第四数量大于第一预设阈值时,向所述发送端发送更新数据包,以使所述发送端基于所述更新数据包对第一数量进行更新,所述第一数量为发送端可发送数据包的数量。
112.本实施例通过接收发送端发送的数据包,从所述数据包中获取所述发送端的第三数量,再基于所述第三数量对第二数量和第四数量进行实时更新,最后当检测到更新后的第二数量大于或等于第二预设阈值且所述第四数量大于第一预设阈值时,向所述发送端发送更新数据包,以使所述发送端基于所述更新数据包对第一数量进行更新。本实施例上述方法通过引入计数器来对网络通讯过程中的发送端和接收端进行rdma内存块可用数量的监测,并基于上述rdma内存块的数量来控制发送端进行数据包的更新,解决了现有技术网络通讯过程中,发送端无法预知接收端的rdma内存块占用情况而不间断地发包的问题,从而避免了接收端发生拥塞,进而降低了网络通讯的通讯时延。
113.本发明数据流控装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
114.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
115.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
116.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器/随机存取存储器、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可
以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
117.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1