CN111343252A - 基于http2协议的高并发数据传输方法及相关设备 - Google Patents
基于http2协议的高并发数据传输方法及相关设备 Download PDFInfo
- Publication number
- CN111343252A CN111343252A CN202010095042.3A CN202010095042A CN111343252A CN 111343252 A CN111343252 A CN 111343252A CN 202010095042 A CN202010095042 A CN 202010095042A CN 111343252 A CN111343252 A CN 111343252A
- Authority
- CN
- China
- Prior art keywords
- queue
- connection pool
- data
- connection
- network request
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 62
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000004044 response Effects 0.000 claims description 16
- 238000001514 detection method Methods 0.000 claims description 10
- 238000012546 transfer Methods 0.000 claims description 4
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请涉及数据处理技术领域,尤其涉及一种基于http2协议的高并发数据传输方法及相关设备,包括:获取网络请求,根据网络请求中的URL信息,确定网络请求进行数据传输时的连接池;获取连接池中的消费队列,将网络请求中的待传输数据写入消费队列;获取连接池的最大连接数,根据最大连接数,确定连接池循环队列的个数;获取从消费队列中溢出的溢出数据,将溢出数据依次写入到各连接池循环队列中,当连接池循环队列中的元素均为空时,停止溢出数据的写入。本申请有效提升了高并发场景下应用http2协议进行数据传输稳定性。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种基于http2协议的高并发数据传输方法及相关设备。
背景技术
http2协议是http协议的第二版本,http2天生实现了tcp通道的复用,即http2天生长连接的机制,使得访问者到被访问者之间的连接所使用的tcp是长期存活的,这种方式减少了短连接建立所消耗的系统资源如cpu、内存、网络io等,同时也减少了短连接建立所花费的时间。其tcp通道复用的特性可允许多个http并发在tcp协议层之上并行的传输数据。
在高并发时虽然多个http2协议可以并发的在tcp协议上并行的传输数据,但是由于http2的特性,所有的并发连接在一个tcp通道上传输,导致tcp通道长时间堵塞无法传送数据。
发明内容
基于此,针对目前http2协议中高并发场景下协议不稳定,导致tcp通道长时间堵塞无法传送数据的问题,提供一种基于http2协议的高并发数据传输方法及相关设备。
一种基于http2协议的高并发数据传输方法,包括如下步骤:
获取网络请求,根据所述网络请求中的统一资源定位符URL信息,确定所述网络请求进行数据传输时的连接池;
获取所述连接池中的消费队列,将所述网络请求中的待传输数据写入所述消费队列;
获取所述连接池的最大连接数,根据所述最大连接数,确定连接池循环队列的个数;
获取所述消费队列中溢出的溢出数据,将所述溢出数据依次写入到各所述连接池循环队列中;
当所述连接池循环队列中的元素均为空时,停止所述溢出数据的写入。
在其中一个可能的实施例中,所述获取网络请求,根据所述网络请求中的统一资源定位符URL信息,确定所述网络请求进行数据传输时的连接池,包括:
获取网络请求,根据所述网络请求中特征字符的位置,获得所述URL信息;
根据所述URL信息,确定用户端网络库的初始化参数,根据所述初始化参数初始化所述用户端网络库;
获取初始化后的用户端网络库中的数据类型,根据所述数据类型确定所述网络请求进行数据传输时的连接池。
在其中一个可能的实施例中,所述获取所述连接池中的消费队列,将所述网络请求中的待传输数据写入所述消费队列,包括:
获取所述消费队列的所有历史队列长度,初始化所述消费队列并使所述消费队列的队列长度为所述历史队列长度中的最大值;
根据预设的加密规则对初始化后的消费队列进行加密;
将所述待传输数据写入到加密后的消费队列的首端或者尾端。
在其中一个可能的实施例中,所述获取所述连接池的最大连接数,根据所述最大连接数,确定连接池循环队列的个数,包括:
获取所述连接池中线程的个数以及各所述线程之间的依赖关系;
将存在依赖关系的多个线程记录为一个线程,得到不具有依赖关系线程的个数,所述不具有依赖关系线程的个数为所述连接池的最大连接数;
判断所述最大连接数是否大于预设的连接数阈值,若小于所述连接数阈值,则以所述最大连接数作为所述连接池循环队列的个数,否则以所述连接数阈值作为所述连接池循环队列的个数。
在其中一个可能的实施例中,所述根据所述最大连接数,确定连接池循环队列的个数之后,所述方法还包括:
应用线程计数器计算发起网络请求的用户端数量;
若所述用户端数量小于预置连接数阈值且所述连接池循环队列的空闲时间大于预置空闲时间阈值,则将连接池循环队列的个数调整为所述连接数阈值。
在其中一个可能的实施例中,所述当所述连接池循环队列中的元素均为空时,停止所述溢出数据的写入之前,所述方法还包括:
发送传输控制协议TCP探测包至所述线程,接收所述线程对所述TCP探测包的响应信号;
若超过预设的响应时长后未接收到所述线程的响应信号,则标记该线程为问题线程,并再次发送所述TCP探测包至所述问题线程,若超过所述响应时长后仍未接收到响应信号,则将该线程从所述连接池中删除。
在其中一个可能的实施例中,所述获取从所述消费队列中溢出的溢出数据,将所述溢出数据依次写入到各所述连接池循环队列中,包括:
获取所述溢出数据写入到所述消费队列的起始时间以及各所述连接池循环队列上一次进行数据写入的结束时间,计算所述起始时间和所述结束时间之间的差值,若差值小于预设的写入阈值,则标记所述连接池循环队列为备选队列;
按照含有的非空元素数量对各所述备选队列进行降序排列,得到备选队列组;
根据所述备选队列组中各备选队列的数据容量大小,依序将所述溢出数据写入到各备选队列中。
一种基于http2协议的高并发数据传输装置,包括如下模块:
确定连接池模块,设置为获取网络请求,根据所述网络请求中的统一资源定位符URL信息,确定所述网络请求进行数据传输时的连接池;
消费队列缓存模块,设置为获取所述连接池中的消费队列,将所述网络请求中的待传输数据写入所述消费队列;
确定循环队列模块,设置为获取所述连接池的最大连接数,根据所述最大连接数,确定连接池循环队列的个数;
循环队列缓存模块,设置为获取所述消费队列中溢出的溢出数据,将所述溢出数据依次写入到各所述连接池循环队列中;当所述连接池循环队列中的元素均为空时,停止所述溢出数据的写入。
一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述基于http2协议的高并发数据传输方法的步骤。
一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述基于http2协议的高并发数据传输方法的步骤。
与现有机制相比,本申请通过获取网络请求,根据所述网络请求中的统一资源定位符URL信息,确定所述网络请求进行数据传输时的连接池;获取所述连接池中的消费队列,将所述网络请求中的待传输数据写入所述消费队列;获取所述连接池的最大连接数,根据所述最大连接数,确定连接池循环队列的个数;获取所述消费队列中溢出的溢出数据,将所述溢出数据依次写入到各所述连接池循环队列中;当所述连接池循环队列中的元素均为空时,停止所述溢出数据的写入。从而避免了高并发场景下的TCP通道堵塞,进而提升了高并发场景下应用http2协议进行数据传输稳定性。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。
图1为本申请在一个实施例中的一种基于http2协议的高并发数据传输方法的整体流程图;
图2为本申请在一个实施例中的一种基于http2协议的高并发数据传输方法中的确定连接池过程示意图;
图3为本申请在一个实施例中的一种基于http2协议的高并发数据传输方法中的消费队列缓存过程示意图;
图4为本申请在一个实施例中的一种基于http2协议的高并发数据传输方法中的确定循环队列过程示意图;
图5为本申请在一个实施例中的一种基于http2协议的高并发数据传输装置的结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
图1为本申请在一个实施例中的一种基于http2协议的高并发数据传输方法的整体流程图,一种基于http2协议的高并发数据传输方法,包括以下步骤:
S1、获取网络请求,根据所述网络请求中的统一资源定位符URL信息,确定所述网络请求进行数据传输时的连接池;
具体的,统一资源定位符(Uniform Resource Locator,URL)是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。因而,根据网络请求中的URL信息,即可得到所要请求的数据,以及所需建立的连接。
在本步骤中,每一个URL对应一个连接池,线程池中存在此URL的多个连接,通过加密算法分配给有使用需求的连接用户端使用。
S2、获取所述连接池中的消费队列,将所述网络请求中的待传输数据写入所述消费队列;
其中,所述消费队列用于缓存所述待传输数据。
具体的,消费队列是指有往服务器发送请求需求的线程或者应用或者用户端进行缓存的一个队列。在将网络请求中的待传输数据写入到消费队列时,首选要判断消费队列是否已经被填满,如果消费队列已经被填满则选择其它未填满的消费队列,在本步骤中消费队列的个数根据数据传输的数据量进行动态更改。
S3、获取所述连接池的最大连接数,根据所述最大连接数,确定连接池循环队列的个数;
其中,所述连接池循环队列中的非空元素为http2协议的用户端ID。
具体的,连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。连接池的最大连接数是根据不同语言特性所确定的,如redis配置中最大允许1w个连接。而mc配置中最大允许接受65535个连接。当应用程序中的并发连接数超过redis/mc服务器端的允许的连接数时,对redis/mc进行扩容为最佳方案,保证db能够提供高性能服务。在确定连接池循环队列的个数时通常是等于最大连接数,即最大连接数为65535,那么就设置65535个连接池循环队列,每一个连接池循环队列对应一个用户端,从而便于对各个用户端进行分别监控。
S4、获取所述消费队列中溢出的溢出数据,将所述溢出数据依次写入到各所述连接池循环队列中;
具体的,在将溢出数据写入到连接池循环队列时,先要确定溢出数据对应的连接的标识信息,根据标识信息确定溢出数据需要写入到哪个连接池循环队列。在本步骤中取用一个连接对应的数据,此数据会进入消费队列,由消费队列控制模块取出,调用线程池借出模块,借出一个http2用户端,既可以使用此用户端完成http2协议的发送。归还一个连接,连接使用完毕后,调用连接池的归还模块,主动归还到连接池循环队列。当连接需求的数量大于最大连接数时,此处连接池循环队列模块被借完为空,此时无法借出连接则未借到http2用户端的请求会存在消费队列里,但是不会被消费队列控制模块处理借出操作,当消费队列被存满时,则此时无法再申请新的借出需求,即线程池完全阻塞,待其他线程归还连接用户端到线程池循环队列。
S5、当所述连接池循环队列中的元素均为空时,停止所述溢出数据的写入。
本实施例,通过使用连接池,避免了高并发场景下的TCP通道堵塞,进而提升了高并发场景下应用http2协议进行数据传输稳定性。
图2为本申请在一个实施例中的一种基于http2协议的高并发数据传输方法中的确定连接池过程示意图,如图所示,所述S1、获取网络请求,根据所述网络请求中的统一资源定位符URL信息,确定所述网络请求进行数据传输时的连接池,包括:
S11、获取网络请求,根据所述网络请求中特征字符的位置,获得所述URL信息;
其中,网络请求中的特征字符是指如:.com或.cn等一级域名,通过一级域名表中的名称与网络请求中的字符进行一致性比较,就可以得到特征字符在网络请求中的位置。通过一级域名的位置,向前搜索就可以得到三级域名,根据三级域名和URL的对应关系就可以的得到网络请求对应的URL信息。
S12、根据所述URL信息,确定用户端网络库的初始化参数,根据所述初始化参数初始化所述用户端网络库;
具体的,网络库可以是比如libev、libu等,这些网络库中包含有用户端使用的编程语言、开放源码等等。在对网络库初始化时可以将网络库中的数据进行归一化处理,剔除格式不符合的异常数据,从而使初始化后的网络库中的数据类型一致。
S13、获取初始化后的用户端网络库中的数据类型,根据所述数据类型确定所述网络请求进行数据传输时的连接池。
其中,数据类型可以是byte、short、int等,不同的数据类型对应着不同的连接池。
本实施例,通过对URL信息进行分析,确定数据传输所需的连接池,从而保证数据传输的可行性。
图3为本申请在一个实施例中的一种基于http2协议的高并发数据传输方法中的消费队列缓存过程示意图,如图所示,所述S2、获取所述连接池中的消费队列,将所述网络请求中的待传输数据写入所述消费队列,包括:
S21、获取所述消费队列的所有历史队列长度,初始化所述消费队列并使所述消费队列的队列长度为所述历史队列长度中的最大值;
具体的,消费队列的所有历史队列长度的数据记录在系统日志中,在对历消费队列的所有历史队列长度的数据进行获取时需要对系统日志中的历史数据进行筛选,筛选的规则是获取各个历史数据对应的进行传输的数据类型,将历次数据类型和本次要进行传输的数据类型进行比对,将比对一致的历史数据作为初始化消费队列的队列长度历史数据。
S22、根据预设的加密规则对初始化后的消费队列进行加密;
其中,加密规则可以采用对称加密和非对称加密,在使用对称加密或者非对称加密时一般通过哈希算法引入哈希值的方式实现加密。
S23、将所述待传输数据写入到加密后的消费队列的首端或者尾端。
本实施例,通过将待传输数据先写入到消费队列进行缓存,从而在高并发场景下能够有效控制进入连接池循环队列中数据的个数,从而提升了单http复用的吞吐量上限。
图4为本申请在一个实施例中的一种基于http2协议的高并发数据传输方法中的确定循环队列过程示意图,如图所示,所述获取所述连接池的最大连接数,根据所述最大连接数,确定连接池循环队列的个数,包括:
S31、获取所述连接池中线程的个数以及各所述线程之间的依赖关系;
具体的,各线程之间的依赖关系可以采用两种方式进行判断。第一种是计算各个线程之间的相似关联度,相似关联度的计算公式为:式子中,ri表示关联度,ηi(k)表示相似概率。第二种是通过监测数据输入输出流向来判断各线程之间的依赖关系,即前一个线程的输出数据被后一个线程作为输入数据输入,则这两个线程之间存在依赖关系。
S32、将存在依赖关系的多个线程记录为一个线程,得到不具有依赖关系线程的个数,所述不具有依赖关系线程的个数为所述连接池的最大连接数;
具体的,可以将存在依赖关系的线程作为一个线程是因为存在依赖关系的线程不可能存在并行触发的条件,也就不能作为高并发场景而实现,在本发明的各个实施例中均不需要考虑非高并发的情形。
S33、判断所述最大连接数是否大于预设的连接数阈值,若小于所述连接数阈值,则以所述最大连接数作为所述连接池循环队列的个数,否则以所述连接数阈值作为所述连接池循环队列的个数。
本实施例,通过确定连接池循环队列的个数,从而在高并发数据传输时,能够有效的控制数据传输的数据量。
在一个实施例中,所述根据所述最大连接数,确定连接池循环队列的个数之后,所述方法还包括:
应用线程计数器计算发起网络请求的用户端数量;
若所述用户端数量小于预置连接数阈值且所述连接池循环队列的空闲时间大于预置空闲时间阈值,则将连接池循环队列的个数调整为所述连接数阈值。
在实施例中,可以采用线程池监控模块对连接池的状态进行监控,其可以实现三个决策:当线程计数器小于空闲最小连接,且空闲时间大于最大空闲时间时,释放线程池循环队列的数量至空闲最小连接数。当线程计数器的值+线程池循环队列的非空元素值小于空闲最小连接数时,需要新增http2用户端到线程池循环队列中。每隔连接有效测试时间进行一次所有线程池循环队列中http2用户端的有效性测试,其测试方法为探测tcp协议是否是活的,即发送一个tcp的有效性探测包,检测服务器端是否有响应,如果有响应则为有效,若无效则剔除此包。
在一个实施例中,所述当所述连接池循环队列中的元素均为空时,停止所述溢出数据的写入之前,所述方法还包括:
发送传输控制协议TCP探测包至所述线程,接收所述线程对所述TCP探测包的响应信号;
若超过预设的响应时长后未接收到所述线程的响应信号,则标记该线程为问题线程,并再次发送所述TCP探测包至所述问题线程,若超过所述响应时长后仍未接收到响应信号,则将该线程从所述连接池中删除。
在一个实施例中,所述获取从所述消费队列中溢出的溢出数据,将所述溢出数据依次写入到各所述连接池循环队列中,包括:
获取所述溢出数据写入到所述消费队列的起始时间以及各所述连接池循环队列上一次进行数据写入的结束时间,计算所述起始时间和所述结束时间之间的差值,若差值小于预设的写入阈值,则标记所述连接池循环队列为备选队列;
具体的,当连接池循环队列已经完成上一次写入,则可以进行下一次的数据写入。若连接池循环队列没有完成上一次的数据写入则无法进行新数据的写入。通过计算时间差值可以筛选出哪些连接池循环队列可以有效的实现数据快速写入。
按照含有的非空元素数量对各所述备选队列进行降序排列,得到备选队列组;
根据所述备选队列组中各备选队列的数据容量大小,依序将所述溢出数据写入到各备选队列中。
本实施例,通过对循环队列进行排序,从而能够有条理的将溢出数据写入到循环队列中,从而有效的应对了高并发场景。
上述任一所对应的实施例或实施方式中所提及的技术特征也同样适用于本申请中的图5所对应的实施例,后续类似之处不再赘述。
以上对本申请中一种基于http2协议的高并发数据传输方法进行说明,以下对执行上述基于http2协议的高并发数据传输装置进行描述。
如图5所示的一种基于http2协议的高并发数据传输装置的结构图,其可应用于基于http2协议的高并发数据传输。本申请实施例中的基于http2协议的高并发数据传输装置能够实现对应于上述图1所对应的实施例中所执行的基于http2协议的高并发数据传输方法的步骤。基于http2协议的高并发数据传输装置实现的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块,所述模块可以是软件和/或硬件。
在一个实施例中,提出了一种基于http2协议的高并发数据传输装置,如图5所示,包括如下模块:
确定连接池模块10,设置为获取网络请求,根据所述网络请求中的统一资源定位符URL信息,确定所述网络请求进行数据传输时的连接池;
消费队列缓存模块20,设置为获取所述连接池中的消费队列,将所述网络请求中的待传输数据写入所述消费队列;
确定循环队列模块30,设置为获取所述连接池的最大连接数,根据所述最大连接数,确定连接池循环队列的个数;
循环队列缓存模块40,设置为获取所述消费队列中溢出的溢出数据,将所述溢出数据依次写入到各所述连接池循环队列中;当所述连接池循环队列中的元素均为空时,停止所述溢出数据的写入。
在一个实施例中,提出了一种计算机设备,所述计算机设备包括存储器和处理器,存储器中存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行上述各实施例中的所述基于http2协议的高并发数据传输方法的步骤。
在一个实施例中,提出了一种存储有计算机可读指令的存储介质,该计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述各实施例中的所述基于http2协议的高并发数据传输方法的步骤。其中,所述存储介质可以为非易失性存储介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁盘或光盘等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请一些示例性实施例,其中描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于http2协议的高并发数据传输方法,其特征在于,包括:
获取网络请求,根据所述网络请求中的统一资源定位符URL信息,确定所述网络请求进行数据传输时的连接池;
获取所述连接池中的消费队列,将所述网络请求中的待传输数据写入所述消费队列;
获取所述连接池的最大连接数,根据所述最大连接数,确定连接池循环队列的个数;
获取所述消费队列中溢出的溢出数据,将所述溢出数据依次写入到各所述连接池循环队列中;
当所述连接池循环队列中的元素均为空时,停止所述溢出数据的写入。
2.根据权利要求1所述的基于http2协议的高并发数据传输方法,其特征在于,所述获取网络请求,根据所述网络请求中的统一资源定位符URL信息,确定所述网络请求进行数据传输时的连接池,包括:
获取网络请求,根据所述网络请求中特征字符的位置,获得所述URL信息;
根据所述URL信息,确定用户端网络库的初始化参数,根据所述初始化参数初始化所述用户端网络库;
获取初始化后的用户端网络库中的数据类型,根据所述数据类型确定所述网络请求进行数据传输时的连接池。
3.根据权利要求1所述的基于http2协议的高并发数据传输方法,其特征在于,所述获取所述连接池中的消费队列,将所述网络请求中的待传输数据写入所述消费队列,包括:
获取所述消费队列的所有历史队列长度,初始化所述消费队列并使所述消费队列的队列长度为所述历史队列长度中的最大值;
根据预设的加密规则对初始化后的消费队列进行加密;
将所述待传输数据写入到加密后的消费队列的首端或者尾端。
4.根据权利要求1所述的基于http2协议的高并发数据传输方法,其特征在于,所述获取所述连接池的最大连接数,根据所述最大连接数,确定连接池循环队列的个数,包括:
获取所述连接池中线程的个数以及各所述线程之间的依赖关系;
将存在依赖关系的多个线程记录为一个线程,得到不具有依赖关系线程的个数,所述不具有依赖关系线程的个数为所述连接池的最大连接数;
判断所述最大连接数是否大于预设的连接数阈值,若小于所述连接数阈值,则以所述最大连接数作为所述连接池循环队列的个数,否则以所述连接数阈值作为所述连接池循环队列的个数。
5.根据权利要求4所述的基于http2协议的高并发数据传输方法,其特征在于,所述根据所述最大连接数,确定连接池循环队列的个数之后,所述方法还包括:
应用线程计数器计算发起网络请求的用户端数量;
若所述用户端数量小于预置连接数阈值且所述连接池循环队列的空闲时间大于预置空闲时间阈值,则将连接池循环队列的个数调整为所述连接数阈值。
6.根据权利要求4或5所述的基于http2协议的高并发数据传输方法,其特征在于,所述当所述连接池循环队列中的元素均为空时,停止所述溢出数据的写入之前,所述方法还包括:
发送传输控制协议TCP探测包至所述线程,接收所述线程对所述TCP探测包的响应信号;
若超过预设的响应时长后未接收到所述线程的响应信号,则标记该线程为问题线程,并再次发送所述TCP探测包至所述问题线程,若超过所述响应时长后仍未接收到响应信号,则将该线程从所述连接池中删除。
7.根据权利要求1所述的基于http2协议的高并发数据传输方法,其特征在于,所述获取从所述消费队列中溢出的溢出数据,将所述溢出数据依次写入到各所述连接池循环队列中,包括:
获取所述溢出数据写入到所述消费队列的起始时间以及各所述连接池循环队列上一次进行数据写入的结束时间,计算所述起始时间和所述结束时间之间的差值,若差值小于预设的写入阈值,则标记所述连接池循环队列为备选队列;
按照含有的非空元素数量对各所述备选队列进行降序排列,得到备选队列组;
根据所述备选队列组中各备选队列的数据容量大小,依序将所述溢出数据写入到各备选队列中。
8.一种基于http2协议的高并发数据传输装置,其特征在于,包括以下模块:
确定连接池模块,设置为获取网络请求,根据所述网络请求中的统一资源定位符URL信息,确定所述网络请求进行数据传输时的连接池;
消费队列缓存模块,设置为获取所述连接池中的消费队列,将所述网络请求中的待传输数据写入所述消费队列;
确定循环队列模块,设置为获取所述连接池的最大连接数,根据所述最大连接数,确定连接池循环队列的个数;
循环队列缓存模块,设置为获取所述消费队列中溢出的溢出数据,将所述溢出数据依次写入到各所述连接池循环队列中;当所述连接池循环队列中的元素均为空时,停止所述溢出数据的写入。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,其特征在于,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项权利要求所述基于http2协议的高并发数据传输方法的步骤。
10.一种存储有计算机可读指令的存储介质,其特征在于,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至7中任一项权利要求所述基于http2协议的高并发数据传输方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010095042.3A CN111343252A (zh) | 2020-02-13 | 2020-02-13 | 基于http2协议的高并发数据传输方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010095042.3A CN111343252A (zh) | 2020-02-13 | 2020-02-13 | 基于http2协议的高并发数据传输方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111343252A true CN111343252A (zh) | 2020-06-26 |
Family
ID=71186026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010095042.3A Pending CN111343252A (zh) | 2020-02-13 | 2020-02-13 | 基于http2协议的高并发数据传输方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111343252A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112751933A (zh) * | 2020-12-30 | 2021-05-04 | 上海浦东发展银行股份有限公司 | 一种基于socket连接的数据传输方法 |
CN112769639A (zh) * | 2020-12-22 | 2021-05-07 | 杭州迪普科技股份有限公司 | 一种并行下发配置信息的方法及装置 |
CN114567686A (zh) * | 2022-04-29 | 2022-05-31 | 天津南大通用数据技术股份有限公司 | 一种用于网络服务模块的网络模型管理方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050129046A1 (en) * | 2003-12-12 | 2005-06-16 | Alok Kumar | Method and system to determine whether a circular queue is empty or full |
CN104503999A (zh) * | 2014-12-08 | 2015-04-08 | 畅捷通信息技术股份有限公司 | 高并发下的数据获取方法和装置 |
WO2017114176A1 (zh) * | 2015-12-30 | 2017-07-06 | 阿里巴巴集团控股有限公司 | 一种分布式环境协调消费队列方法和装置 |
CN107071067A (zh) * | 2017-06-13 | 2017-08-18 | 广发证券股份有限公司 | 一种基于Cgo的高性能证券行情接入系统和方法 |
CN109729176A (zh) * | 2019-01-22 | 2019-05-07 | 厦门美图之家科技有限公司 | 网络请求方法及装置 |
-
2020
- 2020-02-13 CN CN202010095042.3A patent/CN111343252A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050129046A1 (en) * | 2003-12-12 | 2005-06-16 | Alok Kumar | Method and system to determine whether a circular queue is empty or full |
CN104503999A (zh) * | 2014-12-08 | 2015-04-08 | 畅捷通信息技术股份有限公司 | 高并发下的数据获取方法和装置 |
WO2017114176A1 (zh) * | 2015-12-30 | 2017-07-06 | 阿里巴巴集团控股有限公司 | 一种分布式环境协调消费队列方法和装置 |
CN107071067A (zh) * | 2017-06-13 | 2017-08-18 | 广发证券股份有限公司 | 一种基于Cgo的高性能证券行情接入系统和方法 |
CN109729176A (zh) * | 2019-01-22 | 2019-05-07 | 厦门美图之家科技有限公司 | 网络请求方法及装置 |
Non-Patent Citations (1)
Title |
---|
毛云峰;邵剑飞;: "基于M/M/n/n排队系统的动态数据库连接池", 新技术新工艺, no. 10 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112769639A (zh) * | 2020-12-22 | 2021-05-07 | 杭州迪普科技股份有限公司 | 一种并行下发配置信息的方法及装置 |
CN112769639B (zh) * | 2020-12-22 | 2022-09-30 | 杭州迪普科技股份有限公司 | 一种并行下发配置信息的方法及装置 |
CN112751933A (zh) * | 2020-12-30 | 2021-05-04 | 上海浦东发展银行股份有限公司 | 一种基于socket连接的数据传输方法 |
CN112751933B (zh) * | 2020-12-30 | 2023-05-05 | 上海浦东发展银行股份有限公司 | 一种基于socket连接的数据传输方法 |
CN114567686A (zh) * | 2022-04-29 | 2022-05-31 | 天津南大通用数据技术股份有限公司 | 一种用于网络服务模块的网络模型管理方法及系统 |
CN114567686B (zh) * | 2022-04-29 | 2022-08-09 | 天津南大通用数据技术股份有限公司 | 一种用于网络服务模块的网络模型管理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110109953B (zh) | 一种数据查询方法、装置及设备 | |
US11456965B2 (en) | Network service request throttling system | |
CN111343252A (zh) | 基于http2协议的高并发数据传输方法及相关设备 | |
JP4421637B2 (ja) | サブタスク・プロセッサの分散スケジューリング | |
US9774665B2 (en) | Load balancing of distributed services | |
US6493810B1 (en) | Method and system for allocating cache memory for a network database service | |
CN110888838B (zh) | 基于对象存储的请求处理方法、装置、设备及存储介质 | |
CN111756644B (zh) | 热点限流方法、系统、设备及存储介质 | |
US10944683B1 (en) | Hybrid queue system for request throttling | |
CN111641563B (zh) | 基于分布式场景的流量自适应方法与系统 | |
CN111045782A (zh) | 日志处理方法、装置、电子设备和计算机可读存储介质 | |
CN113381944A (zh) | 系统限流方法、装置、电子设备、介质和程序产品 | |
JP2019016042A (ja) | データ取得プログラム、装置、及び方法 | |
CN111565154A (zh) | 图像识别请求处理方法、装置、计算机设备和存储介质 | |
KR100671635B1 (ko) | 스트리밍 미디어 서비스 관리 방법 | |
CN111190727A (zh) | 内存的异步析构方法、装置、计算机设备及存储介质 | |
CN107870921B (zh) | 一种日志数据处理方法及装置 | |
US20170155711A1 (en) | Processing Requests | |
CN116723242A (zh) | 一种网络请求缓存重发方法、装置、设备以及存储介质 | |
CN115567597A (zh) | 一种支付结算系统的报文请求转发方法及装置 | |
WO2020076394A1 (en) | Resource allocation using restore credits | |
CN114138371B (zh) | 配置动态加载方法、装置及计算机设备、存储介质 | |
US20200210307A1 (en) | Method for automatically analyzing bottleneck in real time and an apparatus for performing the method | |
US11755534B2 (en) | Data caching method and node based on hyper-converged infrastructure | |
CN115499513A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200626 |