CN111490963A - 基于quic协议栈的数据处理方法、系统、设备及存储介质 - Google Patents

基于quic协议栈的数据处理方法、系统、设备及存储介质 Download PDF

Info

Publication number
CN111490963A
CN111490963A CN201910074772.2A CN201910074772A CN111490963A CN 111490963 A CN111490963 A CN 111490963A CN 201910074772 A CN201910074772 A CN 201910074772A CN 111490963 A CN111490963 A CN 111490963A
Authority
CN
China
Prior art keywords
threads
working
determining
thread
connection identifier
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.)
Granted
Application number
CN201910074772.2A
Other languages
English (en)
Other versions
CN111490963B (zh
Inventor
王盛
周全
蔡尚志
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN201910074772.2A priority Critical patent/CN111490963B/zh
Priority to US17/425,636 priority patent/US11954530B2/en
Priority to PCT/CN2019/128464 priority patent/WO2020151449A1/zh
Publication of CN111490963A publication Critical patent/CN111490963A/zh
Application granted granted Critical
Publication of CN111490963B publication Critical patent/CN111490963B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164Adaptation or special uses of UDP protocol
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/02Protocol performance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/326Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]

Abstract

本公开提供了一种基于QUIC协议栈的数据处理方法,其特征在于,该方法包括:获取数据包的连接标识;确定用于处理数据包的服务端程序,其中,服务端程序包括多个工作线程,工作线程运行有QUIC协议栈;基于连接标识,从多个工作线程中确定出对应的工作线程;以及将数据包分发到对应的工作线程,以使得对应的工作线程上的QUIC协议栈处理数据包。本公开还提供了一种基于QUIC协议栈的数据处理系统、一种计算机设备及一种计算机可读存储介质。

Description

基于QUIC协议栈的数据处理方法、系统、设备及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于QUIC协议栈的数据处理方法、系统、计算机设备及计算机可读存储介质。
背景技术
QUIC(Quic UDP Internet Connections)协议是谷歌制定的一种基于UDP(UserDatagram Protocol)的低时延的互联网传输层协议,具有很多的优点,比如减少连接延迟、避免队头阻塞等。基于QUIC协议的诸多优点,现有技术在服务器中配置了一个QUIC协议栈,所有的服务端程序均共享该QUIC协议栈。
然而,在实现本发明构思的过程中,发明人发现相关技术中至少存在如下缺陷:通常服务器中使用的CPU有多个核,现有技术中为服务器配置的单个QUIC协议栈在同一时间处理数据时仅能使用CPU的其中一个核,这样就无法充分利用CPU的多核特性且容易导致CPU的这个核过载;并且在处理数据时,所有的数据均要由该单个QUIC协议栈进行处理,导致并发连接数非常低。
发明内容
本公开的目的是提供一种基于QUIC协议栈的数据处理方法、系统、计算机设备及计算机可读存储介质,用于解决现有技术中为服务器配置单个QUIC协议栈导致未充分利用CPU的多核特性、CPU的某个核过载以及并发连接数过低的缺陷。
本公开的一个方面提供了一种基于QUIC协议栈的数据处理方法,其特征在于,上述方法包括:获取数据包的连接标识;确定用于处理上述数据包的服务端程序,其中,上述服务端程序包括多个工作线程,上述工作线程运行有QUIC协议栈;基于上述连接标识,从上述多个工作线程中确定出对应的工作线程;以及将上述数据包分发到上述对应的工作线程,以使得上述对应的工作线程上的QUIC协议栈处理上述数据包。
根据本公开的实施例,上述基于上述连接标识,从上述多个工作线程中确定出对应的工作线程,包括:确定上述多个工作线程的线程数量;以及基于上述连接标识和上述线程数量,从上述多个工作线程中确定出上述对应的工作线程。
根据本公开的实施例,上述基于上述连接标识和上述线程数量,从上述多个工作线程中确定出上述对应的工作线程,包括:对上述连接标识和上述线程数量做取模运算,得到取模结果;以及从上述多个工作线程中确定出与上述取模结果对应的工作线程。
根据本公开的实施例,上述基于上述连接标识,从上述多个工作线程中确定出对应的工作线程,包括:查询上述连接标识是否已与上述多个工作线程中的任一工作线程对应;以及若上述连接标识没有与上述多个工作线程中的任一工作线程对应,则从上述多个工作线程中确定出上述对应的工作线程。
根据本公开的实施例,上述若上述连接标识没有与上述多个工作线程中的任一工作线程对应,则从上述多个工作线程中确定出上述对应的工作线程,包括:若上述连接标识没有与上述多个工作线程中的任一工作线程对应,则确定上述多个工作线程中各个工作线程对应的第一数据包数量,得到多个第一数据包数量;从上述多个第一数据包数量中确定出数值最小的第一数据包数量;以及从上述多个工作线程中确定出与上述数值最小的第一数据包数量对应的工作线程。
根据本公开的实施例,上述若上述连接标识没有与上述多个工作线程中的任一工作线程对应,则从上述多个工作线程中确定出上述对应的工作线程,包括:若上述连接标识没有与上述多个工作线程中的任一工作线程对应,则获取上述多个工作线程中各个工作线程的预设权重,得到多个预设权重;确定上述多个工作线程中各个工作线程对应的第二数据包数量,得到多个第二数据包数量;以及基于上述多个预设权重和上述多个第二数据包数量,从上述多个工作线程中确定出上述对应的工作线程。
根据本公开的实施例,上述QUIC协议栈用于按照QUIC协议对上述数据包进行解析或封装。
本公开的另一个方面还提供了一种基于QUIC协议栈的数据处理系统,其特征在于,上述系统包括:获取模块,用于获取数据包的连接标识;第一确定模块,用于确定用于处理上述数据包的服务端程序,其中,上述服务端程序包括多个工作线程,上述工作线程运行有QUIC协议栈;第二确定模块,用于基于上述连接标识,从上述多个工作线程中确定出对应的工作线程;以及分发模块,用于将上述数据包分发到上述对应的工作线程,以使得上述对应的工作线程上的QUIC协议栈处理上述数据包。
根据本公开的实施例,上述第二确定模块包括:第一确定单元,用于确定上述多个工作线程的线程数量;以及第二确定单元,用于基于上述连接标识和上述线程数量,从上述多个工作线程中确定出上述对应的工作线程。
根据本公开的实施例,上述第二确定单元包括:运算子单元,用于对上述连接标识和上述线程数量做取模运算,得到取模结果;以及第一确定子单元,用于从上述多个工作线程中确定出与上述取模结果对应的工作线程。
根据本公开的实施例,上述第二确定模块包括:查询单元,用于查询上述连接标识是否已与上述多个工作线程中的任一工作线程对应;以及第三确定单元,用于在上述连接标识没有与上述多个工作线程中的任一工作线程对应的情况下,从上述多个工作线程中确定出上述对应的工作线程。
根据本公开的实施例,上述第三确定单元包括:第二确定子单元,用于在上述连接标识没有与上述多个工作线程中的任一工作线程对应的情况下,确定上述多个工作线程中各个工作线程对应的第一数据包数量,得到多个第一数据包数量;第三确定子单元,用于从上述多个第一数据包数量中确定出数值最小的第一数据包数量;以及第四确定子单元,用于从上述多个工作线程中确定出与上述数值最小的第一数据包数量对应的工作线程。
根据本公开的实施例,上述第三确定单元包括:获取子单元,用于在上述连接标识没有与上述多个工作线程中的任一工作线程对应的情况下,获取上述多个工作线程中各个工作线程的预设权重,得到多个预设权重;第五确定子单元,用于确定上述多个工作线程中各个工作线程对应的第二数据包数量,得到多个第二数据包数量;以及第六确定子单元,用于基于上述多个预设权重和上述多个第二数据包数量,从上述多个工作线程中确定出上述对应的工作线程。
根据本公开的实施例,上述QUIC协议栈用于按照QUIC协议对上述数据包进行解析或封装。
本公开的再一个方面提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,上述处理器执行上述计算机程序时用于实现如上任一项所述的方法的步骤。
本公开的又一个方面提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,上述计算机程序被处理器执行时用于实现如上任一项所述的方法的步骤。
本公开提供的基于QUIC协议栈的数据处理方法,将用于处理数据包的服务端程序内部划分为多个不同的工作线程,并为每个工作线程配置一个QUIC协议栈,在处理数据包时,先为该数据包分配连接标识,然后通过该连接标识找到对应的工作线程,从而将该数据包分发到该对应的工作线程,以使得该对应的工作线程上的运行的QUIC协议栈可以处理该数据包。由于本公开的实施例为每一个工作线程均配置了一个QUIC协议栈,使得在同一时间内各个工作线程可以独立使用自己的QUIC协议栈处理数据包,充分利用了CPU的多核特性,提高了系统的并发连接数,避免了现有技术中为服务器配置单个QUIC协议栈导致未充分利用CPU的多核特性、CPU的某个核过载以及并发连接数过低的缺陷。
附图说明
图1示意性示出了根据本公开实施例的基于QUIC协议栈的数据处理方法的流程图;
图2示意性示出了根据本公开实施例的基于QUIC协议栈的数据处理方案的示意图;
图3示意性示出了根据本公开实施例的QUIC数据包的结构图;
图4示意性示出了根据本公开实施例的基于QUIC协议栈的数据处理系统的框图;以及
图5示意性示出了根据本公开实施例的适于实现基于QUIC协议栈的数据处理方法的计算机设备的硬件架构示意图。
具体实施方式
为了使本公开的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本公开进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本公开,并不用于限定本公开。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
考虑到现有技术中为服务器配置单个QUIC协议栈导致未充分利用CPU的多核特性、CPU的某个核过载以及并发连接数过低的缺陷。本公开提供的基于QUIC协议栈的数据处理方法,将用于处理数据包的服务端程序内部划分为多个不同的工作线程,并为每个工作线程配置一个QUIC协议栈,在处理数据包时,先为该数据包分配连接标识,然后通过该连接标识找到对应的工作线程,从而将该数据包分发到该对应的工作线程,以使得该对应的工作线程上的运行的QUIC协议栈可以处理该数据包。由于本公开的实施例为每一个工作线程均配置了一个QUIC协议栈,使得在同一时间内各个工作线程可以独立使用自己的QUIC协议栈处理数据包,充分利用了CPU的多核特性,提高了系统的并发连接数。
图1示意性示出了根据本公开实施例的基于QUIC协议栈的数据处理方法的流程图。
如图1所示,该基于QUIC协议栈的数据处理方法可以包括步骤S101~步骤S104,其中:
步骤S101,获取数据包的连接标识。
在本公开的实施例中,数据包可以包括UDP数据包,每个数据包对应一个连接标识,且不同的数据包对应的连接标识可能是相同的。其中,连接标识可以包括CID(Connection ID,又称为连接ID)。
步骤S102,确定用于处理数据包的服务端程序,其中,服务端程序包括多个工作线程,工作线程运行有QUIC协议栈。
根据本公开的实施例,可以预先将服务端程序内部划分为多个不同的工作线程,并为每一个工作线程配置一个QUIC协议栈,其中,QUIC协议栈用于按照QUIC协议对数据包进行解析或封装。
步骤S103,基于连接标识,从多个工作线程中确定出对应的工作线程。
在本公开的实施例中,基于连接标识,从多个工作线程中确定出对应的工作线程可以包括三种策略,具体如下。
第一种策略,又称为固定映射策略,具体为,确定多个工作线程的线程数量;以及基于连接标识和线程数量,从多个工作线程中确定出对应的工作线程。其中,基于连接标识和线程数量,从多个工作线程中确定出对应的工作线程,可以包括:对连接标识和线程数量做取模运算,得到取模结果;以及从多个工作线程中确定出与取模结果对应的工作线程。
例如,连接标识为9,线程数量为10,取模结果为9,则可以将第9个工作线程作为对应的工作线程。
又例如,每个工作线程预设有映射标识,第4个工作线程的映射标识为9,则对于取模结果为9,其与映射标识9正好对应,则可以将第4个工作线程作为对应的工作线程。
由于连接标识是随机分配的,若是连接标识分配不均衡,则采用第一种策略可能会导致有的工作线程负载高、有的工作线程负载低。为了解决上述问题,可以采用第二种策略,又称为负载均衡映射策略。具体为,查询连接标识是否已与多个工作线程中的任一工作线程对应;以及若连接标识没有与多个工作线程中的任一工作线程对应,则从多个工作线程中确定出对应的工作线程。其中,若连接标识没有与多个工作线程中的任一工作线程对应,则从多个工作线程中确定出对应的工作线程,可以包括:若连接标识没有与多个工作线程中的任一工作线程对应,则确定多个工作线程中各个工作线程对应的第一数据包数量,得到多个第一数据包数量;从多个第一数据包数量中确定出数值最小的第一数据包数量;以及从多个工作线程中确定出与数值最小的第一数据包数量对应的工作线程。
需要说明的是,无论哪一种策略,均需要满足一个固定的机制,即对于已经匹配过的连接标识,后续仍要将该连接标识对应的数据包分配到与该连接标识匹配成功的工作线程上。例如,对于连接标识9,之前已经将连接标识9对应的数据包发送到第9个工作线程上,则对于以后出现的连接标识仍为9的数据包,也需要将该数据包分发到第9个工作线程上。如果本公开所述的策略不满足上述机制,则可能会出现将同一连接标识对应的数据包分发到不同的工作线程上,这样势必会导致一些数据包连接失败,从而增加负载和重传比率。而使用本公开所述的机制,则可以避免上述缺陷,降低负载和重传比率。
根据本公开的实施例,若是当前数据包的连接标识之前没有匹配到任何一个工作线程,则可以先确定出每一个工作线程对应的数据包的第一数据包数量,然后找到数值最小的第一数据包数量,并该数值最小的第一数据包数量对应的工作线程作为本次的连接标识对应的工作线程。
例如,一共有3个工作线程,假设连接标识之前未匹配过任何一个工作线程,且第1个工作线程对应的数据包的第一数据包数量为4个,第2个工作线程对应的数据包的第一数据包数量为2个,第3个工作线程对应的数据包的第一数据包数量为5个,则可以将第2个工作线程作为与连接标识对应的工作线程。
第三种策略,作为第二种策略的一个特例,又称为权重映射策略。具体地,第三种策略也可以是先查询连接标识是否已与多个工作线程中的任一工作线程对应;以及若连接标识没有与多个工作线程中的任一工作线程对应,则从多个工作线程中确定出对应的工作线程。其中,若连接标识没有与多个工作线程中的任一工作线程对应,则从多个工作线程中确定出对应的工作线程,可以包括:若连接标识没有与多个工作线程中的任一工作线程对应,则获取多个工作线程中各个工作线程的预设权重,得到多个预设权重;确定多个工作线程中各个工作线程对应的第二数据包数量,得到多个第二数据包数量;以及基于多个预设权重和多个第二数据包数量,从多个工作线程中确定出对应的工作线程。
例如,一共有3个工作线程,假设连接标识之前未匹配过任何一个工作线程,且第1个工作线程的预设权重为1、对应的数据包的第一数据包数量为3个,第2个工作线程的预设权重为2、对应的数据包的第一数据包数量为4个,第3个工作线程的预设权重为3、对应的数据包的第一数据包数量为6个。为了使得各个工作线程对应的数据包的第一数据包数量的比例可以保持在各自的预设权重的比例,即1:2:3,可以尽量的在除了第1个工作线程以外的工作线程上投放数据包,即可以将第2个工作线程和第3个工作线程中的任意一个作为该连接标识对应的工作线程。
步骤S104,将数据包分发到对应的工作线程,以使得对应的工作线程上的QUIC协议栈处理数据包。
在本公开的实施例中,将数据包分发到对应的工作线程实际上可以是将数据包分发到该工作线程上的QUIC协议站上,以使得QUIC协议栈可以按照QUIC协议对该数据包进行解析或封装,其中,被QUIC协议栈处理后的数据包可以称为QUIC数据包。
本公开提供的基于QUIC协议栈的数据处理方法,将用于处理数据包的服务端程序内部划分为多个不同的工作线程,并为每个工作线程配置一个QUIC协议栈,在处理数据包时,先为该数据包分配连接标识,然后通过该连接标识找到对应的工作线程,从而将该数据包分发到该对应的工作线程,以使得该对应的工作线程上的运行的QUIC协议栈可以处理该数据包。由于本公开的实施例为每一个工作线程均配置了一个QUIC协议栈,使得在同一时间内各个工作线程可以独立使用自己的QUIC协议栈处理数据包,充分利用了CPU的多核特性,提高了系统的并发连接数,避免了现有技术中为服务器配置单个QUIC协议栈导致未充分利用CPU的多核特性、CPU的某个核过载以及并发连接数过低的缺陷。
图2示意性示出了根据本公开实施例的基于QUIC协议栈的数据处理方案的示意图。
如图2所示,本公开的实施例可以通过主线程上的Recvfrom函数从客户端接收数据包(例如UDP数据包),然后将数据包按顺序排列在网络收包FIFO(First Input FirstOutput,又称为先入先出)队列中,进一步通过Worker Manager分配CID,然后通过上述实施例中的任一一种策略确定出对应的工作线程,并将数据包投放到该工作线程上。从图3中可以看出,每一个工作线程上均运行了HTTP解析器、TLS(Transport Layer Security,又称为传输层安全协议)、QUIC协议栈,其中,HTTP解析器可以提供请求和响应报文的解析功能,TLS的目的是为互联网通信提供安全及数据完整性保障,QUIC协议栈用于按照QUIC协议对所述数据包进行解析或封装。以UDP数据包为例,对于投放过来的UDP数据包,可以先由QUIC协议栈对其进行处理,将其解析成QUIC数据包,然后QUIC数据包经过TLS,最后经由HTTP解析器解析后交由系统内部进行处理。进一步,对于系统需要向外发送的数据,可以依次经过工作线程的HTTP解析器、TLS、QUIC协议栈,被封装成QUIC数据包,然后排队出包,再通过网络发包FIFO队列依次由主线程发送给客户端。
图3示意性示出了根据本公开实施例的QUIC数据包的结构图。
如图3所示,Flags占了8位,可以用于表征QUIC数据包的标志位,例如Flags可以用于表示QUIC数据包为建立连接数据包、或者握手数据包等等。Connection ID占了64位,可以用于表征一个网络连接。Type-Dependent Fields根据Flags表征的数据包可以对应的存储不同的结构,例如,若Flags用于表示QUIC数据包为建立连接数据包,则Type-DependentFields中可以存储关于建立连接的数据结构。其中,(*)可以表征Type-Dependent Fields在QUIC数据包中并不是必须存在的。
图4示意性示出了根据本公开实施例的基于QUIC协议栈的数据处理系统的框图。
如图4所示,该基于QUIC协议栈的数据处理系统400可以包括获取模块410、第一确定模块420、第二确定模块430和分发模块440,其中:
获取模块410用于获取数据包的连接标识。
第一确定模块420用于确定用于处理数据包的服务端程序,其中,服务端程序包括多个工作线程,工作线程运行有QUIC协议栈。
第二确定模块430用于基于连接标识,从多个工作线程中确定出对应的工作线程。
分发模块440用于将数据包分发到对应的工作线程,以使得对应的工作线程上的QUIC协议栈处理数据包。
本公开提供的基于QUIC协议栈的数据处理系统,将用于处理数据包的服务端程序内部划分为多个不同的工作线程,并为每个工作线程配置一个QUIC协议栈,在处理数据包时,先为该数据包分配连接标识,然后通过该连接标识找到对应的工作线程,从而将该数据包分发到该对应的工作线程,以使得该对应的工作线程上的运行的QUIC协议栈可以处理该数据包。由于本公开的实施例为每一个工作线程均配置了一个QUIC协议栈,使得在同一时间内各个工作线程可以独立使用自己的QUIC协议栈处理数据包,充分利用了CPU的多核特性,提高了系统的并发连接数,避免了现有技术中为服务器配置单个QUIC协议栈导致未充分利用CPU的多核特性、CPU的某个核过载以及并发连接数过低的缺陷。
作为一种可选的实施例,第二确定模块可以包括:第一确定单元,用于确定多个工作线程的线程数量;以及第二确定单元,用于基于连接标识和线程数量,从多个工作线程中确定出对应的工作线程。
作为一种可选的实施例,第二确定单元可以包括:运算子单元,用于对连接标识和线程数量做取模运算,得到取模结果;以及第一确定子单元,用于从多个工作线程中确定出与取模结果对应的工作线程。
作为一种可选的实施例,第二确定模块可以包括:查询单元,用于查询连接标识是否已与多个工作线程中的任一工作线程对应;以及第三确定单元,用于在连接标识没有与多个工作线程中的任一工作线程对应的情况下,从多个工作线程中确定出对应的工作线程。
作为一种可选的实施例,第三确定单元可以包括:第二确定子单元,用于在连接标识没有与多个工作线程中的任一工作线程对应的情况下,确定多个工作线程中各个工作线程对应的第一数据包数量,得到多个第一数据包数量;第三确定子单元,用于从多个第一数据包数量中确定出数值最小的第一数据包数量;以及第四确定子单元,用于从多个工作线程中确定出与数值最小的第一数据包数量对应的工作线程。
作为一种可选的实施例,第三确定单元可以包括:获取子单元,用于在连接标识没有与多个工作线程中的任一工作线程对应的情况下,获取多个工作线程中各个工作线程的预设权重,得到多个预设权重;第五确定子单元,用于确定多个工作线程中各个工作线程对应的第二数据包数量,得到多个第二数据包数量;以及第六确定子单元,用于基于多个预设权重和多个第二数据包数量,从多个工作线程中确定出对应的工作线程。
作为一种可选的实施例,QUIC协议栈用于按照QUIC协议对数据包进行解析或封装。
图5示意性示出了根据本公开实施例的适于实现基于QUIC协议栈的数据处理方法的计算机设备的硬件架构示意图。本实施例中,计算机设备500是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图5所示,计算机设备500至少包括但不限于:可通过系统总线相互通信链接存储器510、处理器520、网络接口530。其中:
存储器510至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器510可以是计算机设备500的内部存储模块,例如该计算机设备500的硬盘或内存。在另一些实施例中,存储器510也可以是计算机设备500的外部存储设备,例如该计算机设备500上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器510还可以既包括计算机设备500的内部存储模块也包括其外部存储设备。本实施例中,存储器510通常用于存储安装于计算机设备500的操作系统和各类应用软件,例如基于QUIC协议栈的数据处理方法的程序代码等。此外,存储器510还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器520在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器520通常用于控制计算机设备500的总体操作,例如执行与计算机设备500进行数据交互或者通信相关的控制和处理等。本实施例中,处理器520用于运行存储器510中存储的程序代码或者处理数据。
网络接口530可包括无线网络接口或有线网络接口,该网络接口530通常用于在计算机设备500与其他计算机设备之间建立通信链接。例如,网络接口530用于通过网络将计算机设备500与外部终端相连,在计算机设备500与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,简称为GSM)、宽带码分多址(Wideband CodeDivision Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图5仅示出了具有部件510-530的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器510中的基于QUIC协议栈的数据处理方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器520)所执行,以完成本发明。
本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的基于QUIC协议栈的数据处理方法的步骤。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中的基于QUIC协议栈的数据处理方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (16)

1.一种基于QUIC协议栈的数据处理方法,其特征在于,所述方法包括:
获取数据包的连接标识;
确定用于处理所述数据包的服务端程序,其中,所述服务端程序包括多个工作线程,所述工作线程运行有QUIC协议栈;
基于所述连接标识,从所述多个工作线程中确定出对应的工作线程;以及
将所述数据包分发到所述对应的工作线程,以使得所述对应的工作线程上的QUIC协议栈处理所述数据包。
2.根据权利要求1所述的方法,其特征在于,所述基于所述连接标识,从所述多个工作线程中确定出对应的工作线程,包括:
确定所述多个工作线程的线程数量;以及
基于所述连接标识和所述线程数量,从所述多个工作线程中确定出所述对应的工作线程。
3.根据权利要求2所述的方法,其特征在于,所述基于所述连接标识和所述线程数量,从所述多个工作线程中确定出所述对应的工作线程,包括:
对所述连接标识和所述线程数量做取模运算,得到取模结果;以及
从所述多个工作线程中确定出与所述取模结果对应的工作线程。
4.根据权利要求1所述的方法,其特征在于,所述基于所述连接标识,从所述多个工作线程中确定出对应的工作线程,包括:
查询所述连接标识是否已与所述多个工作线程中的任一工作线程对应;以及
若所述连接标识没有与所述多个工作线程中的任一工作线程对应,则从所述多个工作线程中确定出所述对应的工作线程。
5.根据权利要求4所述的方法,其特征在于,所述若所述连接标识没有与所述多个工作线程中的任一工作线程对应,则从所述多个工作线程中确定出所述对应的工作线程,包括:
若所述连接标识没有与所述多个工作线程中的任一工作线程对应,则确定所述多个工作线程中各个工作线程对应的第一数据包数量,得到多个第一数据包数量;
从所述多个第一数据包数量中确定出数值最小的第一数据包数量;以及
从所述多个工作线程中确定出与所述数值最小的第一数据包数量对应的工作线程。
6.根据权利要求4所述的方法,其特征在于,所述若所述连接标识没有与所述多个工作线程中的任一工作线程对应,则从所述多个工作线程中确定出所述对应的工作线程,包括:
若所述连接标识没有与所述多个工作线程中的任一工作线程对应,则获取所述多个工作线程中各个工作线程的预设权重,得到多个预设权重;
确定所述多个工作线程中各个工作线程对应的第二数据包数量,得到多个第二数据包数量;以及
基于所述多个预设权重和所述多个第二数据包数量,从所述多个工作线程中确定出所述对应的工作线程。
7.根据权利要求1所述的方法,其特征在于,所述QUIC协议栈用于按照QUIC协议对所述数据包进行解析或封装。
8.一种基于QUIC协议栈的数据处理系统,其特征在于,所述系统包括:
获取模块,用于获取数据包的连接标识;
第一确定模块,用于确定用于处理所述数据包的服务端程序,其中,所述服务端程序包括多个工作线程,所述工作线程运行有QUIC协议栈;
第二确定模块,用于基于所述连接标识,从所述多个工作线程中确定出对应的工作线程;以及
分发模块,用于将所述数据包分发到所述对应的工作线程,以使得所述对应的工作线程上的QUIC协议栈处理所述数据包。
9.根据权利要求8所述的系统,其特征在于,所述第二确定模块包括:
第一确定单元,用于确定所述多个工作线程的线程数量;以及
第二确定单元,用于基于所述连接标识和所述线程数量,从所述多个工作线程中确定出所述对应的工作线程。
10.根据权利要求9所述的系统,其特征在于,所述第二确定单元包括:
运算子单元,用于对所述连接标识和所述线程数量做取模运算,得到取模结果;以及
第一确定子单元,用于从所述多个工作线程中确定出与所述取模结果对应的工作线程。
11.根据权利要求8所述的系统,其特征在于,所述第二确定模块包括:
查询单元,用于查询所述连接标识是否已与所述多个工作线程中的任一工作线程对应;以及
第三确定单元,用于在所述连接标识没有与所述多个工作线程中的任一工作线程对应的情况下,从所述多个工作线程中确定出所述对应的工作线程。
12.根据权利要求11所述的系统,其特征在于,所述第三确定单元包括:
第二确定子单元,用于在所述连接标识没有与所述多个工作线程中的任一工作线程对应的情况下,确定所述多个工作线程中各个工作线程对应的第一数据包数量,得到多个第一数据包数量;
第三确定子单元,用于从所述多个第一数据包数量中确定出数值最小的第一数据包数量;以及
第四确定子单元,用于从所述多个工作线程中确定出与所述数值最小的第一数据包数量对应的工作线程。
13.根据权利要求11所述的系统,其特征在于,所述第三确定单元包括:
获取子单元,用于在所述连接标识没有与所述多个工作线程中的任一工作线程对应的情况下,获取所述多个工作线程中各个工作线程的预设权重,得到多个预设权重;
第五确定子单元,用于确定所述多个工作线程中各个工作线程对应的第二数据包数量,得到多个第二数据包数量;以及
第六确定子单元,用于基于所述多个预设权重和所述多个第二数据包数量,从所述多个工作线程中确定出所述对应的工作线程。
14.根据权利要求8所述的系统,其特征在于,所述QUIC协议栈用于按照QUIC协议对所述数据包进行解析或封装。
15.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时用于实现权利要求1至7任一项所述方法的步骤。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时用于实现权利要求1至7任一项所述方法的步骤。
CN201910074772.2A 2019-01-25 2019-01-25 基于quic协议栈的数据处理方法、系统、设备及存储介质 Active CN111490963B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201910074772.2A CN111490963B (zh) 2019-01-25 2019-01-25 基于quic协议栈的数据处理方法、系统、设备及存储介质
US17/425,636 US11954530B2 (en) 2019-01-25 2019-12-25 Method and system of processing data based on QUIC protocol stack, device and storage medium
PCT/CN2019/128464 WO2020151449A1 (zh) 2019-01-25 2019-12-25 基于quic协议栈的数据处理方法、系统、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910074772.2A CN111490963B (zh) 2019-01-25 2019-01-25 基于quic协议栈的数据处理方法、系统、设备及存储介质

Publications (2)

Publication Number Publication Date
CN111490963A true CN111490963A (zh) 2020-08-04
CN111490963B CN111490963B (zh) 2022-07-29

Family

ID=71736067

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910074772.2A Active CN111490963B (zh) 2019-01-25 2019-01-25 基于quic协议栈的数据处理方法、系统、设备及存储介质

Country Status (3)

Country Link
US (1) US11954530B2 (zh)
CN (1) CN111490963B (zh)
WO (1) WO2020151449A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112671754A (zh) * 2020-12-21 2021-04-16 龙存(成都)科技有限公司 一种单流水线处理不同服务端功能的方法、系统
CN113852975A (zh) * 2021-08-19 2021-12-28 浙江三维利普维网络有限公司 基站的协议栈程序的性能确定方法及装置
CN114697411A (zh) * 2020-12-29 2022-07-01 北京达佳互联信息技术有限公司 数据处理方法、装置、服务器及存储介质
CN115580667A (zh) * 2022-12-12 2023-01-06 腾讯科技(深圳)有限公司 数据传输方法、装置、设备及存储介质
WO2024037296A1 (zh) * 2022-08-17 2024-02-22 上海哔哩哔哩科技有限公司 基于协议族的quic数据传输方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102789394A (zh) * 2011-05-19 2012-11-21 阿里巴巴集团控股有限公司 一种并行处理消息的方法、装置、节点及服务器集群
CN104969533A (zh) * 2013-12-25 2015-10-07 华为技术有限公司 一种数据包处理方法和装置
CN109218186A (zh) * 2017-07-05 2019-01-15 华为技术有限公司 一种多路径数据传输处理方法及网络设备
US10419466B2 (en) * 2016-02-09 2019-09-17 Darktrace Limited Cyber security using a model of normal behavior for a group of entities

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8116230B2 (en) * 2008-07-31 2012-02-14 Motorola Solutions, Inc. Establishing communication pathways between infrastructure devices in a group communication system implemented over a wide area network
US8782147B2 (en) * 2010-09-09 2014-07-15 Red Hat, Inc. Concurrent delivery for messages from a same sender
US10582433B2 (en) * 2016-04-01 2020-03-03 Nokia Solutions And Networks Oy Dynamic experience management in communications
US10397085B1 (en) * 2016-06-30 2019-08-27 Juniper Networks, Inc. Offloading heartbeat responses message processing to a kernel of a network device
CN108965359B (zh) * 2017-05-19 2021-07-13 北京京东尚科信息技术有限公司 通信方法、通信装置、可读介质和电子设备
CN107360268B (zh) * 2017-06-23 2020-11-06 北京奇艺世纪科技有限公司 一种数据包处理方法、装置及设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102789394A (zh) * 2011-05-19 2012-11-21 阿里巴巴集团控股有限公司 一种并行处理消息的方法、装置、节点及服务器集群
CN104969533A (zh) * 2013-12-25 2015-10-07 华为技术有限公司 一种数据包处理方法和装置
US10419466B2 (en) * 2016-02-09 2019-09-17 Darktrace Limited Cyber security using a model of normal behavior for a group of entities
CN109218186A (zh) * 2017-07-05 2019-01-15 华为技术有限公司 一种多路径数据传输处理方法及网络设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王静: "《协议栈并行化技术的研究与实现》", 《中国优秀硕士论文辑》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112671754A (zh) * 2020-12-21 2021-04-16 龙存(成都)科技有限公司 一种单流水线处理不同服务端功能的方法、系统
CN114697411A (zh) * 2020-12-29 2022-07-01 北京达佳互联信息技术有限公司 数据处理方法、装置、服务器及存储介质
CN113852975A (zh) * 2021-08-19 2021-12-28 浙江三维利普维网络有限公司 基站的协议栈程序的性能确定方法及装置
CN113852975B (zh) * 2021-08-19 2024-02-02 浙江三维利普维网络有限公司 基站的协议栈程序的性能确定方法及装置
WO2024037296A1 (zh) * 2022-08-17 2024-02-22 上海哔哩哔哩科技有限公司 基于协议族的quic数据传输方法及装置
CN115580667A (zh) * 2022-12-12 2023-01-06 腾讯科技(深圳)有限公司 数据传输方法、装置、设备及存储介质
CN115580667B (zh) * 2022-12-12 2023-03-24 腾讯科技(深圳)有限公司 数据传输方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN111490963B (zh) 2022-07-29
US20220091892A1 (en) 2022-03-24
US11954530B2 (en) 2024-04-09
WO2020151449A1 (zh) 2020-07-30

Similar Documents

Publication Publication Date Title
CN111490963B (zh) 基于quic协议栈的数据处理方法、系统、设备及存储介质
CN108776934B (zh) 分布式数据计算方法、装置、计算机设备及可读存储介质
US9888048B1 (en) Supporting millions of parallel light weight data streams in a distributed system
US10169060B1 (en) Optimization of packet processing by delaying a processor from entering an idle state
CN110351342A (zh) 业务指令处理方法、装置、计算机设备和存储介质
US10225145B2 (en) Method and device for updating client
CN112162865A (zh) 服务器的调度方法、装置和服务器
US9258197B2 (en) Prioritizing service requests
CN109375933B (zh) 一种客户端升级的方法及设备
CN109151070B (zh) 基于区块链的点对点cdn的服务调度方法、电子装置
CN112256417B (zh) 一种数据请求处理方法、装置及计算机可读存储介质
CN111490947A (zh) 数据包发送方法、数据包接收方法、系统、设备及介质
US10009235B2 (en) Messaging queue spinning engine
WO2014121630A1 (en) Method and device for transferring file
CN109951514A (zh) 基于云存储的文件处理方法、系统及计算机设备
CN111935017B (zh) 跨网络的应用调用方法、装置及路由设备
CN113259415B (zh) 一种网络报文处理方法、装置及网络服务器
CN112422450B (zh) 计算机设备、服务请求的流量控制方法及装置
US20150304227A1 (en) Queue Management Method and Apparatus
CN108243254A (zh) 电子装置、应用升级版本发布的方法及存储介质
CN112671945A (zh) 管理ip代理池的方法、装置、计算机设备及存储介质
CN105490956A (zh) 一种网络请求处理方法及装置
CN107689979B (zh) 一种下载请求处理方法和处理设备
CN112436982B (zh) 一种网络流量自动混跑测试方法、系统、终端及存储介质
CN115221041A (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
GR01 Patent grant
GR01 Patent grant