CN114697411A - 数据处理方法、装置、服务器及存储介质 - Google Patents

数据处理方法、装置、服务器及存储介质 Download PDF

Info

Publication number
CN114697411A
CN114697411A CN202011608102.3A CN202011608102A CN114697411A CN 114697411 A CN114697411 A CN 114697411A CN 202011608102 A CN202011608102 A CN 202011608102A CN 114697411 A CN114697411 A CN 114697411A
Authority
CN
China
Prior art keywords
target
request message
identity information
message
port
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
Application number
CN202011608102.3A
Other languages
English (en)
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.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information 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 Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN202011608102.3A priority Critical patent/CN114697411A/zh
Publication of CN114697411A publication Critical patent/CN114697411A/zh
Pending legal-status Critical Current

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/22Parsing or analysis of headers
    • 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/14Multichannel or multilink protocols
    • 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

Abstract

本公开公开了一种数据处理方法、装置、服务器及存储介质,属于通信技术领域。该多媒体推荐方法包括:接收客户端发送的请求报文,请求报文包括目标身份信息,目标身份信息用于标记请求报文进行会话链接的身份信息;根据目标身份信息,确定与目标身份信息对应的请求配置信息,请求配置信息与目标端口相对应;调用与目标端口对应的目标进程对请求报文进行处理,得到反馈报文,反馈报文用于反馈至客户端。采用本公开提供的数据处理方法、装置、服务器及存储介质,以至少解决目前数据处理不准确的问题。

Description

数据处理方法、装置、服务器及存储介质
技术领域
本公开涉及通信技术领域,具体涉及一种数据处理方法、装置、服务器及存储介质。
背景技术
基于用户数据报协议(User Datagram Protocol,UDP)的低时延的互联网传输层协议(Quick UDP Internet Connection,QUIC)是使用UDP进行多路并发传输的协议。
目前,UDP报文的处理过程包括,当UDP报文在经过内核UDP协议栈时会根据UDP报文的四元组信息即源互联网协议(Internet Protocol,IP)地址、源端口、目的IP和目的端口,将UDP报文分发到对应的监听套接字(socket)文件上,通过socket文件对应的服务器进程处理该UDP报文。由此可知,同一条UDP报文会被送到同一个socket文件上,一个socket文件只会由一个服务器进程进行处理。然而,该报文的处理方式,在一些场景下并不适用,如在UDP报文支持连接迁移时,四元组信息会发生变化,导致同一条UDP报文无法被送到同一个socket文件上,导致报文无法处理。
发明内容
本公开实施例的目的是提供一种数据处理方法、装置、服务器及存储介质,以至少解决目前数据处理不准确的问题。
本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种数据处理方法,该方法可以包括:
接收客户端发送的请求报文,请求报文包括目标身份信息,目标身份信息用于标记请求报文进行会话链接的身份信息;
根据目标身份信息,确定与目标身份信息对应的请求配置信息,请求配置信息与目标端口相对应;
调用与目标端口对应的目标进程对请求报文进行处理,得到反馈报文,反馈报文用于反馈至客户端。
在一种可能的实施例中,在上述涉及的根据目标身份信息,确定与目标身份信息对应的请求配置信息的步骤之后,该数据处理方法还可以包括:
检测请求报文是否为新的报文;
在检测到请求报文不为新的报文的情况下,根据预设请求配置信息与端口的映射关系,在服务端的协议栈中筛选与请求配置信息对应的目标端口;
在检测到请求报文为新的报文的情况下,在服务端的多个端口中筛选出目标端口;
在协议栈中生成目标栈,目标栈包括哈希链表,哈希链表用于存储目标身份信息与目标端口的映射关系。
进一步地,上述涉及的检测请求报文是否为新的报文的步骤中,具体可以包括:
检测服务端的协议栈中是否存储有目标身份信息;
在检测到协议栈中存储有目标身份信息的情况下,确定请求报文不为新的报文;
在检测到协议栈中未存储有目标身份信息的情况下,确定请求报文为新的报文。
在另一种可能的实施例中,在上述涉及的调用与目标端口对应的目标进程对请求报文进行处理的步骤之前,该数据处理方法还可以包括:
更新服务端的协议栈,协议栈包括与目标端口对应的目标栈,目标栈包括哈希链表,哈希链表用于存储目标身份信息与目标端口的映射关系。
基于此,在又一种可能的实施例中,在上述涉及的更新服务端的协议栈的步骤中,具体可以包括:
检测在预设时间段内是否接收到与请求报文相关联的新的请求报文;
在检测到预设时间段内未收到新的请求报文,删除请求报文对应的目标栈。
在再一种可能的实施例中,上述涉及的更新协议的步骤中,具体可以包括:
获取停止处理请求报文的第一指令;
响应于第一指令,通过端口设置参数删除目标身份信息对应的目标栈。
在再一种可能的实施例中,上述涉及的更新协议的步骤中,具体可以包括:
获取关闭目标端口的第二指令;
响应于第二指令,删除目标身份信息对应的目标栈。
另外,在再一种可能的实施例中,上述涉及的在得到反馈报文的步骤之前,该数据处理方法还可以包括:
检测所述服务器系统是否升级或者是否重新加载所述服务器中配置信息;
在检测到服务器系统升级或者重新加载服务器中配置信息的情况下,确定新增端口和与新增端口对应的新增线程,新增端口用于在接收到新增请求报文时,调用与新增端口对应的新增线程对新增请求报文进行处理。
根据本公开实施例的第二方面,提供一种数据处理装置,该装置可以包括:
接收模块,被配置为执行接收客户端发送的请求报文,请求报文包括目标身份信息,目标身份信息用于标记请求报文进行会话链接的身份信息;
确定模块,被配置为执行根据目标身份信息,确定与目标身份信息对应的请求配置信息,请求配置信息与目标端口相对应;
处理模块,被配置为执行调用与目标端口对应的目标进程对请求报文进行处理,得到反馈报文,反馈报文用于反馈至客户端。
在一种可能的实施例中,上述涉及的数据处理装置还包括:
第一检测模块,被配置为在确定与所述目标身份信息对应的请求配置信息之前,执行检测请求报文是否为新的报文;
第一筛选模块,被配置为执行在检测到请求报文不为新的报文的情况下,根据预设请求配置信息与端口的映射关系,在服务端的协议栈中筛选与请求配置信息对应的目标端口;
第二筛选模块,被配置为执行在检测到请求报文为新的报文的情况下,在服务端的多个端口中筛选出目标端口;
生成模块,被配置为执行在协议栈中生成目标栈,目标栈包括哈希链表,哈希链表用于存储目标身份信息与目标端口的映射关系。
进一步地,第一检测模块包括:
第一检测单元,被配置为执行,检测服务端的协议栈中是否存储有目标身份信息;
第一确定单元,被配置为执行在检测到协议栈中存储有目标身份信息的情况下,确定请求报文不为新的报文;
第二确定单元,被配置为执行在检测到协议栈中未存储有目标身份信息的情况下,确定请求报文为新的报文。
在另一种可能的实施例中,数据处理装置还包括更新模块,被配置为执行在调用与所述目标端口对应的目标进程对所述请求报文进行处理之前,更新服务端的协议栈,协议栈包括与目标端口对应的目标栈,目标栈包括哈希链表,哈希链表用于存储目标身份信息与目标端口的映射关系。
在又一种可能的实施例中,更新模块包括:
第二检测单元,被配置为执行,检测在预设时间段内是否接收到与请求报文相关联的新的请求报文;
第一删除单元,被配置为执行在检测到预设时间段内未收到新的请求报文,删除请求报文对应的目标栈。
这里,更新模块包括:
第一获取单元,被配置为执行获取停止处理请求报文的第一指令;
第二删除单元,被配置为执行响应于第一指令,通过端口设置参数删除目标身份信息对应的目标栈。
或者,更新模块包括:
第二获取单元,被配置为执行,获取关闭目标端口的第二指令;
第三删除单元,被配置为执行响应于第二指令,删除目标身份信息对应的目标栈。
在再一种可能的实施例中,数据处理装置还包括:第二检测模块,被配置为执行在得到反馈报文之前,检测所述服务器系统是否升级或者是否重新加载所述服务器中配置信息;
所述确定模块,还被配置为执行确定模块还被配置为执行,在检测到服务器系统升级或者重新加载服务器中配置信息的情况下,确定新增端口和与新增端口对应的新增线程,新增端口用于在接收到新增请求报文时,调用与新增端口对应的新增线程对新增请求报文进行处理。
根据本公开实施例的第三方面,提供一种服务器,该服务器可以包括:
处理器;
被配置为存储处理器可执行指令的存储器;
其中,处理器被配置为执行指令,以实现如第一方面的任一项实施例中所示的数据处理方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,当计算机可读存储介质中的指令由第三方面的服务器的处理器执行时,以使服务器实现如第一方面的任一项实施例中所示的数据处理方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,该计算机程序产品包括计算机程序,设备的至少一个处理器从存储介质读取并执行计算机程序,使得设备执行如第一方面的任意一项所示的数据处理方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
本公开实施例通过请求报文中用于标记请求报文进行会话链接的目标身份信息,查找与其对应的请求配置信息,并利用请求配置信息对应的目标端口,调用与所述目标端口对应的目标进程对请求报文进行处理,得到反馈报文。这样,通过目标身份信息作为唯一标识标记请求报文的方式,使请求报文在处于任何连接迁移的情况下身份信息都不会发生变化,由此,无论该请求报文分别通过多少次发送,都可以找到与该请求报文对应的请求配置信息,然后,通过与请求配置信息对应的目标端口调用与目标端口一一对应的目标进程对请求报文进行处理。由此,有效解决了在报文支持连接迁移时,四元组信息发生变化,导致同一条报文无法被送到同一个目标端口上,出现报文无法处理的问题,提高了数据处理的效率和准确度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限值本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是一种报文处理的流程示意图;
图2是另一种报文处理的流程示意图;
图3是根据一示例性实施例示出的一种数据处理的架构示意图;
图4是根据一示例性实施例示出的一种数据处理方法的流程图;
图5是根据一示例性实施例示出的一种确定目标端口的结构示意图;
图6是根据一示例性实施例示出的一种数据处理的结构示意图;
图7是根据一示例性实施例示出的一种CID和socket的映射关系的结果示意图;
图8是根据一示例性实施例示出的一种数据处理装置的结构框图;
图9是根据一示例性实施例示出的一种计算设备的结构框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
目前,QUIC是使用UDP报文进行多路并发传输的协议。当前UDP报文在经过内核协议栈时,协议栈会根据UDP报文的4元组信息(源IP,源端口,目的IP,目的端口)被分发到各个UDP监听socket上。所以,同一个会话链接即基于用户数据报的低时延的互联网传输层协议链接(QUIC connection)的UDP报文均会被送到同一个UDP监听socket上。另外,多个QUICconnection的UDP报文也可能被送到同一个UDP监听socket上。一个UDP监听socket只会由一个服务器进程如nginx worker进行处理。
但是,如图1所示,在QUIC connection支持连接迁移的情况下,UDP报文的四元组(即源IP,源端口,目的IP,目的端口)会发生变化,这样就会出现当前服务器的系统内核如Linux内核无法根据变化后的四元组,将相同的UDP报文分发到同一个与UDP对应的socket,导致同一个QUIC connection的UDP报文送到不同的socket中去,导致无法对UDP报文进行处理,以得到UDP报文的反馈报文,导致报文处理失败。例如,在通信连接从无线保真(Wireless-Fidelity,WI-FI)切到了第四代通讯技术(the 4Generation mobilecommunication technology,4G)时,导致电子设备的源IP发生变化。虽然,源IP变化了,但对于QUIC connection来说,还是同一条连接。由于UDP报文的四元组出现变化,所以系统内核会将变化后的四元组对应的UDP报文发送到另外一个socket上,这样会导致前面的信息丢失,就像接头的人变了,没有前因后果,无法对其进行报文处理,降低数据处理的效率。
另外,如图2所示,当服务器如Nginx需要进行服务器系统升级或者重新加载服务器中配置信息时,服务器管理进程如nginx master会新建新的nginx worker进程。按照业务无损的需求,需要将新的QUIC connection的UDP报文分配到新的nginx worker进程上进行处理,而原有的nginx worker进程需要等待存量QUIC connection关闭后,再将自身进程退出。这样,如果使用当前的数据处理方式,由于系统内核无法判断一个socket是否归属于旧的nginx worker,这样就无法保证将同一个QUIC connection的UDP报文继续送往原有的nginx worker进程继续处理。另外,如在服务器系统升级或者重新加载服务器中配置信息时会出现哈希算法不一致性,导致nginx worker进程的数目发生变化,使协议栈匹配的套接字文件出现错误,无法保证新的QUIC connection的UDP报文发往新的nginx worker进程进行处理。
由此,为了准确并快速的反馈与报文请求对应的信息,本公开实施例提供了一种数据处理方法,以至少解决目前数据处理不准确的问题。
本公开所提供的数据处理方法,可以应用于如图3所示的数据处理架构中,具体结合图3进行详细说明。
如图3所示,该数据处理架构包括电子设备和服务器。电子设备为运行客户端30,以及与客户端30对应的服务端31进行通讯的设备。服务器为运行服务端31,以及与客户端30进行通讯的设备。
基于此,服务端31接收客户端30发送的请求报文,该请求报文如QUIC报文。该QUIC报文包括目标身份信息如链接地址(connection ID,CID),该目标身份信息用于标记QUIC报文所在会话链接即QUIC connection的身份信息。如QUIC报文中使用64位的随机数CID来标识唯一识别服务端与客户端的会话连接。这里,CID不随应用环境的变化而变化。
接着,服务端31根据CID,通过系统内核协议栈中确定与CID对应的请求配置信息,并在系统应用层,通过请求配置信息对应的目标端口如socket,调用与目标端口对应的目标进程对请求报文进行处理,得到反馈报文,反馈报文用于反馈至客户端30。
上述架构除了可以应用在系统内核UDP协议栈中确定目标端口的场景,还可以应用在QUIC连接迁移的场景,以及支持nginx接入QUIC connection的无损升级场景。
根据上述架构以及应用场景,下面结合图4对本公开实施例提供的数据处理方法进行详细说明,该数据处理方法可以由图3中所示的服务器执行,本公开实施例对此不作限定。
图4是根据一示例性实施例示出的一种数据处理方法的流程图。
如图4所示,该数据处理方法具体可以包括如下步骤:
首先,步骤410,接收客户端发送的请求报文,请求报文包括目标身份信息,目标身份信息用于标记请求报文进行会话链接的身份信息。
接着,步骤420,根据目标身份信息,确定与目标身份信息对应的请求配置信息,请求配置信息与目标端口相对应。
然后,步骤430,调用与目标端口对应的目标进程对请求报文进行处理,得到反馈报文,反馈报文用于反馈至客户端。
由此,通过目标身份信息作为唯一标识标记请求报文的方式,使请求报文在处于任何连接迁移的情况下身份信息都不会发生变化,由此,无论该请求报文分别通过几次发送,都可以找到与该请求报文对应的请求配置信息,然后,通过与请求配置信息对应的目标端口调用与目标端口一一对应的目标进程对请求报文进行处理。有效解决了在报文支持连接迁移时,四元组信息发生变化,导致同一条报文无法被送到同一个目标端口上,出现报文无法处理的问题,提高了数据处理的效率和准确度。
下面对上述步骤进行详细说明,具体如下所示:
首先,涉及步骤410,客户端30向服务器31发送请求报文,服务器31接收客户端发送的请求报文。
在本公开实施例中请求报文可以为同一个QUIC connection中的任意一个QUIC报文,这样,请求报文中包括的目标身份信息用于标记QUIC报文所在会话链接即QUICconnection的身份信息。如QUIC报文中使用64位的随机数CID来标识唯一识别服务端与客户端的会话连接。这里,CID不随应用环境的变化而变化。
接着,涉及步骤420,根据目标身份信息,确定与目标身份信息对应的请求配置信息,该请求配置信息与目标端口相对应。
基于此,在该步骤420之前,还可以包括如下步骤:
检测请求报文是否为新的报文;
在检测到请求报文不为新的报文的情况下,根据预设请求配置信息与端口的映射关系,在服务端的协议栈中筛选与请求配置信息对应的目标端口。这里该目标端口可以为socket。
在检测到请求报文为新的报文的情况下,在服务端的多个端口中筛选出目标端口;
在协议栈中生成目标栈,目标栈包括哈希链表,哈希链表用于存储目标身份信息与目标端口的映射关系。
其中,本公开实施例中在检测请求报文是否为新的报文的方式可以通过检测服务端的协议栈中是否存储有目标身份信息。
在检测到协议栈中存储有目标身份信息的情况下,确定请求报文不为新的报文。反之,在检测到协议栈中未存储有目标身份信息的情况下,确定请求报文为新的报文。
举例说明,如图5所示,根据目标身份信息确定目标端口的过程可以如步骤510-步骤550。其中,步骤510,判断该服务端是否存储了目标身份信息。若存储了该目标身份信息,则证明同一个QUIC connection上有不同的时间发送的报文。由于,这些不同的时间发送的报文对应同一个CID,就可以根据服务端存储的与该请求报文同属于一个QUIC connection的目标身份信息。基于此,执行步骤550,确定与该目标身份信息对应的请求配置信息,以及根据请求配置信息,得到与请求配置信息对应的目标端口。
反之,若未存储目标身份信息,则证明之前没有与该请求报文属于一个QUICconnection的报文,请求报文为另一个QUIC connection的新的请求报文。此时,执行步骤520,服务端筛选出任意端口,并将该端口确定为新的目标端口。涉及步骤530,建立与新的请求报文对应的目标栈。涉及步骤540,根据新的请求报文中的新的目标身份信息,新建与新的目标身份信息对应的请求配置信息的新的对应关系,并将该对应关系存储到新建的目标栈中,以便下次接收与新的请求报文属于一条QUIC connection的报文时,根据新的对应关系,确定与其对应的请求配置信息。执行步骤550,此时新的请求报文的目标端口就位步骤520中筛选的端口。
下面通过图6和图7结合一个例子对该步骤进行详细说明,具体如下所示:
如图6所示,UDP报文在经过内核协议栈的时,解析出UDP报文中的QUICconnection的CID如UDP报文1对应的CID1,并通过QUIC CID hash将UDP报文传输到特定的UDP监听socket上,如CID1对应的socket1。如果当前UDP报文是一个新的QUIC connection的首个报文,内核协议栈会生成一个栈(session)保存当前UDP报文的QUIC connection的CID与socket的映射关系,并将session插入一个哈希链表(hash)。这样,在后面接收的同一个QUIC connection的报文进入协议栈时,会优先查找session hash链表,找到了就直接返回对应的socket。由此,每次一个UDP报文进入内核协议栈时,都会根据UDP报文包括的QUICconnection的CID查找与QUIC session,以确定其对应的socket。如果查找失败,则新增session并插入hash链表。
基于此,QUIC session在内核中被组织成哈希链表(hash list)的形式,并且socket也会维护一个session list。如图7所示,每一个正方形代表一个session,不同类型session对应的socket不同(如图7所示的不同填充格式所示),如socket1对应的session的正方形是50,socket1对应的session的正方形是60。每个session存储了hash链表,hash链表表示CID和socket的映射关系,同理,hash链表表示了每个类型的session之间的关系。
基于此,本公开实施例中,为了使协议栈中的资源更好的被调用以及较少运营维护,可以在步骤430调用与所述目标端口对应的目标进程对所述请求报文进行处理之前,定期更新服务端的协议栈,该协议栈包括与目标端口对应的目标栈,目标栈包括哈希链表,哈希链表用于存储目标身份信息与目标端口的映射关系。
下面本公开实施例提供了三种更新协议栈的方式,具体如下所示:
方式一:检测在预设时间段内是否接收到与请求报文相关联的新的请求报文;
在检测到预设时间段内未收到新的请求报文,删除请求报文对应的目标栈。
例如:每个session会起一个老化定时器,如果超过5分钟没有收到同一个QUICconnection下新的报文,则删除该session。
方式二:获取停止处理请求报文的第一指令;
响应于第一指令,通过端口设置参数删除目标身份信息对应的目标栈。
例如:应用层确定某个QUIC connection即将关闭,调用套接口设置(setsockopt)选项删除特定QUIC session。
方式三:获取关闭目标端口的第二指令;
响应于第二指令,删除目标身份信息对应的目标栈。
例如:某个socket即将关闭,对应的session会被删除。
然后,步骤430,调用与目标端口对应的目标进程对请求报文进行处理,得到反馈报文,反馈报文用于反馈至客户端。
由此,本公开实施例中,可以通过UDP报文的目标身份信息进行hash链表查找,解决连接迁移时匹配到不同socket的问题。另外,通过在内核协议栈中身份信息与请求配置信息的映射关系以及请求配置信息与socket的映射关系,有效解决nginx worker数目发生变化时的哈希一致性问题,保证UDP报文能够找到对应的请求配置信息,以及与请求配置信息对应的目标端口,调用与目标端口对应的进程进行处理,保证数据处理不中断。
另外,本公开实施例中,在利用与目标端口对应的目标进程对请求报文进行处理之后,该数据处理方法还包括:
检测服务器系统是否升级或者是否重新加载所述服务器中配置信息;
在检测到服务器系统升级或者重新加载服务器中配置信息的情况下,确定新增端口和与新增端口对应的新增线程,新增端口用于在接收到新增请求报文时,调用与新增端口对应的新增线程对新增请求报文进行处理。
其中,在检测到服务器系统升级或者重新加载服务器中配置信息的情况下,标记第一对象,第一对象包括下述中的至少一种:包括目标进程的多个原有进程,包括目标端口的多个原有端口。
根据携带有标记的第一对象,确定服务器中的第二对象,第二对象包括服务器系统升级或者重新加载服务器中配置信息之后的新增线程和新增端口;其中,新增线程与新增端口一一对应。在接收到与请求报文不属于同一个QUIC connection即不关联的新增请求报文时,根据新增请求报文携带的新增身份信息,确定与新增身份信息对应的新增端口。利用与新增端口对应的新增进程对新增请求报文进行处理,得到新增反馈报文,新增反馈报文用于响应于新增请求报文反馈至客户端。
举例说明,当服务器系统升级或者重新加载服务器中配置信息时,原有的nginxworker会通过setsockopt选项,告知内核指定的socket即将关闭,内核会给原有的socket打上过期标识。当一个全新的QUIC connection的UDP报文进入内核协议栈时,已经过期的socket不会再处理新的全新的QUIC connection的UDP报文。原有的QUIC connection,还是可以通过session hash链表找到原来的socket,并最终完成与客户端的交互之后再断开连接。
需要说明的是,本公开实施例中,由于端口和进程为一一对应的关系,这样,除了标记端口,还可以标记原有的进程。这样,通过给内核socket打上过期标识,实现新的QUICconnection分发到新的进程进行处理,保证原有的worker进程可以顺利退出。
由此,通过请求报文中用于标记请求报文进行会话链接的目标身份信息即64位的随机数,唯一标识这一个QUIC connection的身份信息的方式,使报文在处于任何连接迁移的情况下都可以找到与该请求报文对应的端口,以根据该端口对应的进程对其进行处理。这样,无论该请求报文分别通过几次发送,都可以找到与该请求报文对应的目标端口。然后,通过与目标端口一一对应的目标进程对请求报文进行处理。由此,有效解决了在报文支持连接迁移时,四元组信息会发生变化,导致同一条报文无法被送到同一个端口上,出现报文无法处理的问题。另外,在服务器系统升级或者重新加载服务器中配置信息的情况下,通过对原有的端口打上过期标识,实现新的QUIC connection分发到新的进程进行处理在保证原有的进程可以顺利退出的同时,提高了数据处理的效率和准确度。
需要说明的是,上述本公开实施例描述的应用场景是为了更加清楚的说明本公开实施例的技术方案,并不构成对于本公开实施例提供的技术方案的限定,本领域普通技术人员可知,随着新应用场景的出现,本公开实施例提供的技术方案对于类似的技术问题,同样适用。
基于相同的发明构思,本公开还提供了一种数据处理装置。具体结合图8进行详细说明。
图8是根据一示例性实施例示出的一种数据处理装置的结构框图。
如图8所示,该数据处理装置80具体可以包括:
接收模块801,被配置为执行接收客户端发送的请求报文,请求报文包括目标身份信息,目标身份信息用于标记请求报文进行会话链接的身份信息;
确定模块802,被配置为执行根据目标身份信息,确定与目标身份信息对应的请求配置信息,请求配置信息与目标端口相对应;
处理模块803,被配置为执行调用与目标端口对应的目标进程对请求报文进行处理,得到反馈报文,反馈报文用于反馈至客户端。
在一种可能的实施例中,数据处理装置80还包括第一检测模块,被配置为执行在确定与所述目标身份信息对应的请求配置信息之前,检测请求报文是否为新的报文;
第一筛选模块,被配置为执行在检测到请求报文不为新的报文的情况下,根据预设请求配置信息与端口的映射关系,在服务端的协议栈中筛选与请求配置信息对应的目标端口;
第二筛选模块,被配置为执行在检测到请求报文为新的报文的情况下,在服务端的多个端口中筛选出目标端口。
基于此,生成模块,被配置为执行在协议栈中生成目标栈,目标栈包括哈希链表,哈希链表用于存储目标身份信息与目标端口的映射关系。
进一步地,第一检测模块包括:
第一检测单元,被配置为执行检测服务端的协议栈中是否存储有目标身份信息;
第一确定单元,被配置为执行在检测到协议栈中存储有目标身份信息的情况下,确定请求报文不为新的报文;
第二确定单元,被配置为执行在检测到协议栈中未存储有目标身份信息的情况下,确定请求报文为新的报文。
在一种可能的实施例中,数据处理装置80还包括在调用与所述目标端口对应的目标进程对所述请求报文进行处理之前,更新模块,被配置为执行更新服务端的协议栈,协议栈包括与目标端口对应的目标栈,目标栈包括哈希链表,哈希链表用于存储目标身份信息与目标端口的映射关系。
进一步地,更新模块包括:
第二检测单元,具体被配置为执行,检测在预设时间段内是否接收到与请求报文相关联的新的请求报文;第一删除单元,被配置为执行在检测到预设时间段内未收到新的请求报文,删除请求报文对应的目标栈。
或者,更新模块包括:
第一获取单元,被配置为执行,获取停止处理请求报文的第一指令;
第二删除单元,被配置为执行响应于第一指令,通过端口设置参数删除目标身份信息对应的目标栈。
或者,更新模块包括:
第二获取单元,被配置为执行获取关闭目标端口的第二指令;
第三删除单元,被配置为执行响应于第二指令,删除目标身份信息对应的目标栈。
另外,本公开实施例中的数据处理装置80还包括:
第二检测模块,被配置为执行在得到反馈报文之前,检测所述服务器系统是否升级或者是否重新加载所述服务器中配置信息;
所述确定模块,还被配置为执行在检测到服务器系统升级或者重新加载服务器中配置信息的情况下,确定新增端口和与新增端口对应的新增线程,新增端口用于在接收到新增请求报文时,调用与新增端口对应的新增线程对新增请求报文进行处理。
这样,通过目标身份信息作为唯一标识标记请求报文的方式,使请求报文在处于任何连接迁移的情况下身份信息都不会发生变化,这样,无论该请求报文分别通过多少次发送,都可以找到与该请求报文对应的请求配置信息,然后,通过与请求配置信息对应的目标端口调用与目标端口一一对应的目标进程对请求报文进行处理。由此,有效解决了在报文支持连接迁移时,四元组信息发生变化,导致同一条报文无法被送到同一个目标端口上,出现报文无法处理的问题,提高了数据处理的效率和准确度。
基于同一发明构思,本公开实施例还提供了一种计算设备,具体结合图9进行详细说明。
图9是根据一示例性实施例示出的一种计算设备的结构框图。
如图9所示,该计算设备90能够实现根据本公开实施例中的数据处理方法以及数据处理装置的计算设备的示例性硬件架构的结构图。该计算设备可以指代本公开实施例中客户端的电子设备或者服务端的服务器。
该计算设备90可以包括处理器901以及存储有计算机程序指令的存储器902。
具体地,上述处理器901可以包括中央处理器(CPU),或者特定集成电路(application specific integrated circuit,ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
存储器902可以包括被配置为信息或指令的大容量存储器。举例来说而非限制,存储器1202可包括硬盘驱动器(hard disk drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(universal serial bus,USB)驱动器或者两个及其以上这些的组合。在合适的情况下,存储器1202可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器1202可在综合网关设备的内部或外部。在特定实施例中,存储器1202是非易失性固态存储器。在特定实施例中,存储器1202包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存,或者两个或及其以上这些的组合。
处理器901通过读取并执行存储器902中存储的计算机程序指令,以执行如下步骤:
处理器901,被配置为执行接收客户端发送的请求报文,请求报文包括目标身份信息,目标身份信息用于标记请求报文进行会话链接的身份信息;根据目标身份信息,确定与目标身份信息对应的请求配置信息,请求配置信息与目标端口相对应;调用与目标端口对应的目标进程对请求报文进行处理,得到反馈报文,反馈报文用于反馈至客户端。
在一种可能的实施例中,处理器901被配置为执行,检测请求报文是否为新的报文;
在检测到请求报文不为新的报文的情况下,根据预设请求配置信息与端口的映射关系,在服务端的协议栈中筛选与请求配置信息对应的目标端口;或者,在检测到请求报文为新的报文的情况下,在服务端的多个端口中筛选出目标端口;
在协议栈中生成目标栈,目标栈包括哈希链表,哈希链表用于存储目标身份信息与目标端口的映射关系。
进一步地,处理器901被配置为执行,检测服务端的协议栈中是否存储有目标身份信息;
在检测到协议栈中存储有目标身份信息的情况下,确定请求报文不为新的报文;
在检测到协议栈中未存储有目标身份信息的情况下,确定请求报文为新的报文。
在另一种可能的实施例中,处理器901被配置为执行,更新服务端的协议栈,协议栈包括与目标端口对应的目标栈,目标栈包括哈希链表,哈希链表用于存储目标身份信息与目标端口的映射关系。
其中,处理器901被配置为执行,检测在预设时间段内是否接收到与请求报文相关联的新的请求报文;
在检测到预设时间段内未收到新的请求报文,删除请求报文对应的目标栈。或者,获取停止处理请求报文的第一指令;
响应于第一指令,通过端口设置参数删除目标身份信息对应的目标栈。或者,获取关闭目标端口的第二指令;
响应于第二指令,删除目标身份信息对应的目标栈。
在再一种可能的实施例中,处理器901被配置为执行,在检测到服务器系统升级或者重新加载服务器中配置信息的情况下,确定新增端口和与新增端口对应的新增线程,新增端口用于在接收到新增请求报文时,调用与新增端口对应的新增线程对新增请求报文进行处理。
这样,通过目标身份信息作为唯一标识标记请求报文的方式,使请求报文在处于任何连接迁移的情况下身份信息都不会发生变化,这样,无论该请求报文分别通过几次发送,都可以找到与该请求报文对应的请求配置信息,然后,通过与请求配置信息对应的目标端口调用与目标端口一一对应的目标进程对请求报文进行处理。由此,有效解决了在报文支持连接迁移时,四元组信息发生变化,导致同一条报文无法被送到同一个目标端口上,出现报文无法处理的问题,提高了数据处理的效率和准确度。
需要说明的是,该计算设备90还可包括收发器903和总线904。其中,如图9所示,处理器901、存储器902和收发器903通过总线904连接并完成相互间的通信。
总线904包括硬件、软件或两者。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围控件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线903可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
本公开实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机可执行指令,计算机可执行指令被配置为实现本公开实施例所记载的数据处理方法。
在一些可能的实施方式中,本公开提供的方法的各个方面还可以实现为一种计算机程序产品的形式,其包括计算机程序,当程序产品在计算机设备上运行时,程序被配置为使计算机设备执行本说明书上述描述的根据本公开各种示例性实施方式的方法中的步骤,例如,计算机设备可以执行本公开实施例所记载的数据处理方法。
其中,程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本公开是参照根据本公开的方法、设备和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生被配置为实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供被配置为实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。

Claims (10)

1.一种数据处理方法,应用于服务端,其特征在于,包括:
接收客户端发送的请求报文,所述请求报文包括目标身份信息,所述目标身份信息用于标记所述请求报文进行会话链接的身份信息;
根据所述目标身份信息,确定与所述目标身份信息对应的请求配置信息,所述请求配置信息与目标端口相对应;
调用与所述目标端口对应的目标进程对所述请求报文进行处理,得到反馈报文,所述反馈报文用于反馈至所述客户端。
2.根据权利要求1所述的方法,其特征在于,其特征在于,在所述根据所述目标身份信息,确定与所述目标身份信息对应的请求配置信息之后,所述方法还包括:
检测所述请求报文是否为新的报文;
在检测到所述请求报文不为新的报文的情况下,根据预设请求配置信息与端口的映射关系,在所述服务端的协议栈中筛选与所述请求配置信息对应的目标端口;
在检测到所述请求报文为新的报文的情况下,在所述服务端的多个端口中筛选出目标端口;
在所述协议栈中生成目标栈,所述目标栈包括哈希链表,所述哈希链表用于存储所述目标身份信息与所述目标端口的映射关系。
3.根据权利要求2所述的方法,其特征在于,所述检测所述请求报文是否为新的报文,包括:
检测所述服务端的协议栈中是否存储有所述目标身份信息;
在检测到所述协议栈中存储有所述目标身份信息的情况下,确定所述请求报文不为新的报文;
在检测到所述协议栈中未存储有所述目标身份信息的情况下,确定所述请求报文为新的报文。
4.根据权利要求1所述的方法,其特征在于,所述调用与所述目标端口对应的目标进程对所述请求报文进行处理之前,所述方法还包括:
更新所述服务端的协议栈,所述协议栈包括与所述目标端口对应的目标栈,所述目标栈包括哈希链表,所述哈希链表用于存储所述目标身份信息与所述目标端口的映射关系。
5.根据权利要求4所述的方法,其特征在于,所述更新所述服务端的协议栈,包括:
检测在预设时间段内是否接收到与所述请求报文相关联的新的请求报文;
在检测到所述预设时间段内未收到所述新的请求报文,删除所述请求报文对应的目标栈。
6.根据权利要求1所述的方法,其特征在于,所述得到反馈报文之前,所述方法还包括:
检测所述服务器系统是否升级或者是否重新加载所述服务器中配置信息;
在检测到所述服务器系统升级或者重新加载所述服务器中配置信息的情况下,确定新增端口和与所述新增端口对应的新增线程,所述新增端口用于在接收到新增请求报文时,调用与所述新增端口对应的所述新增线程对所述新增请求报文进行处理。
7.一种数据处理装置,应用于服务端,其特征在于,包括:
接收模块,被配置为执行接收客户端发送的请求报文,所述请求报文包括目标身份信息,所述目标身份信息用于标记所述请求报文进行会话链接的身份信息;
确定模块,被配置为执行根据所述目标身份信息,确定与所述目标身份信息对应的请求配置信息,所述请求配置信息与目标端口相对应;
处理模块,被配置为执行调用与所述目标端口对应的目标进程对所述请求报文进行处理,得到反馈报文,所述反馈报文用于反馈至所述客户端。
8.一种服务器,其特征在于,包括:
处理器;
被配置为存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1-6中任意一项所述的数据处理方法。
9.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由服务器的处理器执行时,以使所述服务器实现如权利要求1-6中任意一项所述的数据处理方法。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序存储在可读存储介质中,设备的至少一个处理器从存储介质读取并执行计算机程序,以使设备执行如权利要求1-6中任意一项所述的数据处理方法。
CN202011608102.3A 2020-12-29 2020-12-29 数据处理方法、装置、服务器及存储介质 Pending CN114697411A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011608102.3A CN114697411A (zh) 2020-12-29 2020-12-29 数据处理方法、装置、服务器及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011608102.3A CN114697411A (zh) 2020-12-29 2020-12-29 数据处理方法、装置、服务器及存储介质

Publications (1)

Publication Number Publication Date
CN114697411A true CN114697411A (zh) 2022-07-01

Family

ID=82133054

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011608102.3A Pending CN114697411A (zh) 2020-12-29 2020-12-29 数据处理方法、装置、服务器及存储介质

Country Status (1)

Country Link
CN (1) CN114697411A (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101022423A (zh) * 2007-03-22 2007-08-22 华为技术有限公司 一种atm网络与ip网络数据交换的方法和系统
CN103516820A (zh) * 2012-06-25 2014-01-15 中兴通讯股份有限公司 基于mac地址的端口映射方法和装置
WO2019033910A1 (zh) * 2017-08-14 2019-02-21 中兴通讯股份有限公司 多端口组播方法、设备及计算机可读存储介质
CN110011919A (zh) * 2019-03-27 2019-07-12 新华三技术有限公司 报文转发方法、装置、网络设备及存储介质
CN111124690A (zh) * 2020-01-02 2020-05-08 哈尔滨理工大学 基于OpenMP线程优化的电子邮件服务器的安全分发方法
CN111490963A (zh) * 2019-01-25 2020-08-04 上海哔哩哔哩科技有限公司 基于quic协议栈的数据处理方法、系统、设备及存储介质
CN111756776A (zh) * 2020-07-28 2020-10-09 支付宝(杭州)信息技术有限公司 服务器、报文分配设备、程序交接系统以及程序交接的方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101022423A (zh) * 2007-03-22 2007-08-22 华为技术有限公司 一种atm网络与ip网络数据交换的方法和系统
CN103516820A (zh) * 2012-06-25 2014-01-15 中兴通讯股份有限公司 基于mac地址的端口映射方法和装置
WO2019033910A1 (zh) * 2017-08-14 2019-02-21 中兴通讯股份有限公司 多端口组播方法、设备及计算机可读存储介质
CN111490963A (zh) * 2019-01-25 2020-08-04 上海哔哩哔哩科技有限公司 基于quic协议栈的数据处理方法、系统、设备及存储介质
CN110011919A (zh) * 2019-03-27 2019-07-12 新华三技术有限公司 报文转发方法、装置、网络设备及存储介质
CN111124690A (zh) * 2020-01-02 2020-05-08 哈尔滨理工大学 基于OpenMP线程优化的电子邮件服务器的安全分发方法
CN111756776A (zh) * 2020-07-28 2020-10-09 支付宝(杭州)信息技术有限公司 服务器、报文分配设备、程序交接系统以及程序交接的方法

Similar Documents

Publication Publication Date Title
CN106850568B (zh) 多通道协议的会话老化方法及装置
CN105591973A (zh) 应用识别方法及装置
CN109167762B (zh) 一种iec104报文校验方法及装置
CN111934969B (zh) Mac转发表的维护方法及装置
CN112954045A (zh) 节点中的数据传输方法、装置、介质及电子设备
CN103748925A (zh) 管理长期演进技术/演进分组核心网络中的分组数据网络连接的机构
CN107547505B (zh) 一种报文处理方法及装置
CN111182611B (zh) 一种通信方法及装置
CN113992508A (zh) 智能设备的局域网自动组网方法及智能设备
CN112995192B (zh) 白名单生成方法、系统、设备及存储介质
CN114697411A (zh) 数据处理方法、装置、服务器及存储介质
CN106789695B (zh) 报文处理方法及装置
CN112311627B (zh) 一种基于xml格式的规约描述文件的电力规约通用测试方法及系统
CN112527589A (zh) 监控进程的方法和监控进程的装置
EP2701353B1 (en) Mobile Application Classification
CN112948195B (zh) 接口测试的方法、装置、电子设备和存储介质
CN113783744B (zh) 一种时延测量方法、装置、计算机设备和存储介质
CN113032255A (zh) 响应噪音的识别方法、模型、电子设备及计算机存储介质
CN113050978B (zh) 应用的灰度发布控制方法、装置、设备及计算机存储介质
CN110602265B (zh) 一种适用于ied设备的61850模型短地址配置及资源映射方法
CN110266599B (zh) 一种基于分布式设备mac地址学习方法及系统
CN111277449A (zh) 语音业务设备的安全性测试方法及装置
CN110932979B (zh) 一种快速转发报文的方法和装置
CN109905325A (zh) 一种流量引导方法及流量识别设备
CN114697375B (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