CN116828020A - 通信方法和装置、电子设备和存储介质 - Google Patents

通信方法和装置、电子设备和存储介质 Download PDF

Info

Publication number
CN116828020A
CN116828020A CN202210289005.5A CN202210289005A CN116828020A CN 116828020 A CN116828020 A CN 116828020A CN 202210289005 A CN202210289005 A CN 202210289005A CN 116828020 A CN116828020 A CN 116828020A
Authority
CN
China
Prior art keywords
target
data
connection
node
protocol
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
CN202210289005.5A
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 Kingsoft Cloud Network Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network 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 Kingsoft Cloud Network Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN202210289005.5A priority Critical patent/CN116828020A/zh
Publication of CN116828020A publication Critical patent/CN116828020A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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
    • 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/141Setup of application sessions
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请提供了一种通信方法和装置、电子设备和存储介质,其中,该方法包括:获取来自于第一节点的请求数据;将请求数据封装为目标协议的目标数据,其中,目标协议为支持一个TCP连接中同时包括多个数据流的协议;建立唯一对应于目标应用的假连接,其中,假连接用于将目标应用的数据传输至目标应用对应的真连接,真连接为第一节点与第二节点之间的支持目标协议的TCP连接;通过真连接以及假连接将目标数据转发至第二节点。本申请通过建立唯一对应于目标应用的假连接,进而使每一个请求数据对于目标应用来说都独占一个连接,这样可以在不对目标应用进行改写情况,即可实现目标应用支持目标协议,并通过目标协议进行通信的目的。

Description

通信方法和装置、电子设备和存储介质
技术领域
本申请涉及通信技术领域,尤其涉及一种通信方法和装置、电子设备和存储介质。
背景技术
目前,随着http2.0协议在网络应用中的逐渐普及,在CDN场景中,CDN客户已经不在满足于CDN平台只在网民接入端支持http2.0协议,一些对安全和传输性能要求较高的客户要求CDN平台支持全链路http2.0协议,即CDN接入端、CDN内部网络,CDN回客户源站端全面支持http2.0协议通信,同时在动态业务和一些大并发高连接数场景下,http2.0协议连接多路复用和数据压缩等特性可以很好节省设备资源,CDN平台支持全链路http2.0可以更好的应对业务压力。
相关技术中,虽然http2.0协议提供了的一个重要特性是多条数据流复用一条连接,但是,现有的实现http2.0协议回源的现有方案均不支持http2.0协议的这一重要特性。
因此,相关技术中存在无法实现http2.0协议提供的多条数据流复用一条连接的问题。
发明内容
本申请提供了一种通信方法和装置、电子设备和存储介质,以至少解决相关技术中存在无法实现http2.0协议提供的多条数据流复用一条连接的问题。
根据本申请实施例的一个方面,提供了一种通信方法,包括:
获取来自于第一节点的请求数据,其中,所述请求数据来自于所述第一节点上的目标应用;
将所述请求数据封装为目标协议的目标数据,其中,所述目标协议为支持一个TCP连接中同时包括多个数据流的协议;
建立唯一对应于所述目标应用的假连接,其中,所述假连接用于将所述目标应用的数据传输至所述目标应用对应的真连接,所述真连接为所述第一节点与第二节点之间的支持目标协议的TCP连接;
通过所述真连接以及所述假连接将所述目标数据转发至第二节点。
可选地,如前述的方法,所述建立唯一对应于所述目标应用的假连接包括:
确定在所述真连接中所述目标应用对应的目标流的流编号,创建所述假连接;
建立所述假连接与所述流编号之间的对应关系。
可选地,如前述的方法,所述通过所述真连接以及所述假连接将所述目标数据转发至第二节点包括:
在所述第一节点与所述第二节点之间的网络状况不满足预设要求的情况下,通过所述假连接将所述目标数据发送至目标发送队列,其中,所述目标发送队列为用于缓存所述真连接的待发送数据的发送队列;
在所述网络状况满足所述预设要求的情况下,通过所述真连接将所述目标发送队列中的所述目标数据发送至所述第二节点。
可选地,如前述的方法,在所述通过所述真连接以及所述假连接将所述目标数据转发至第二节点之前,所述方法还包括:
确定第一节点的资源使用率达到预设上限的情况下,将所述假连接发送到待处理队列上。
可选地,如前述的方法,所述通过所述真连接以及所述假连接将所述目标数据转发至第二节点包括:
在确定所述真连接可以用于进行数据传输的情况下,回调所述待处理队列上的所述假连接的写回调;
按照所述写回调,唤醒所述目标应用将所述目标数据发送至所述假连接;
通过所述真连接将来自于所述假连接的所述目标数据转发至第二节点。
可选地,如前述的方法,所述将所述请求数据封装为目标协议的目标数据包括:
将所述请求数据封装为目标协议的初始数据;
在确定所述初始数据对应的所述真连接的情况下,根据所述真连接中已经存在的当前流的数量,对所述初始数据中的初始流编号进行修改,得到所述目标数据;和/或,确定所述请求数据对应的目标流的流量控制窗口;按照所述流量控制窗口对所述初始数据进行封装,得到所述目标数据,其中,所述目标数据中的每帧数据的数据量小于或等于所述流量控制窗口的流量大小。
可选地,如前述的方法,在所述通过所述真连接以及所述假连接将所述目标数据转发至第二节点之后,所述方法还包括:
获取来自于所述第二节点的响应头;
在通过解析所述响应头,确定所述响应头对应的客户端,其中,所述目标数据为所述客户端发送至所述第一节点;
读取所述响应头对应的响应数据;
按照所述客户端支持的数据类型,对所述响应数据进行封装,得到封装后数据;
将所述封装后数据发送至所述客户端。
可选地,如前述的方法,在所述获取来自于第一节点的请求数据之后,所述方法还包括:
获取用于指示所述第二节点是否支持所述目标协议的确认信息;
在所述确认信息指示所述第二节点支持所述目标协议的情况下,执行用于跳转至步骤将所述请求数据封装为目标协议的目标数据的跳转操作;
在所述确认信息指示所述第二节点不支持所述目标协议的情况下,按照所述第二节点与所述第一节点共同支持的候选协议,将所述请求数据发送至所述第二节点。
根据本申请实施例的另一个方面,还提供了一种通信装置,包括:
获取模块,用于获取来自于第一节点的请求数据,其中,所述请求数据来自于所述第一节点上的目标应用;
封装模块,用于将所述请求数据封装为目标协议的目标数据,其中,所述目标协议为支持一个TCP连接中同时包括多个数据流的协议;
建立模块,用于建立唯一对应于所述目标应用的假连接,其中,所述假连接用于将所述目标应用的数据传输至所述目标应用对应的真连接,所述真连接为所述第一节点与第二节点之间的支持目标协议的TCP连接;
发送模块,用于通过所述真连接以及所述假连接将所述目标数据转发至第二节点。
根据本申请实施例的又一个方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;其中,存储器,用于存储计算机程序;处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行上述任一实施例中的方法步骤。
根据本申请实施例的又一个方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一实施例中的方法步骤。
在本申请实施例中,采用获取来自于第一节点的请求数据,其中,所述请求数据来自于所述第一节点上的目标应用;将所述请求数据封装为目标协议的目标数据,其中,所述目标协议为支持一个TCP连接中同时包括多个数据流的协议;建立唯一对应于所述目标应用的假连接,其中,所述假连接用于将所述目标应用的数据传输至所述目标应用对应的真连接,所述真连接为所述第一节点与所述第二节点之间的支持目标协议的TCP连接;通过所述真连接以及所述假连接将所述目标数据转发至第二节点的方式,通过建立唯一对应于所述目标应用的假连接,由于可以使每一个请求数据对于目标应用来说都是独占一个连接,这样可以在不对目标应用进行改写情况,即,目标应用无需针对目标协议进行适配,即可实现支持一个TCP连接中同时包括多个数据流的目标协议,并通过目标协议进行通信的目的。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的一种可选的通信方法的流程示意图;
图2是根据本申请实施例的另一种可选的通信方法的流程示意图;
图3是根据本申请实施例的另一种可选的通信方法的流程示意图;
图4是根据本申请实施例的一种可选的通信装置的结构框图;
图5是根据本申请实施例的一种可选的电子设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一个方面,提供了一种通信方法。可选地,在本实施例中,上述通信方法可以应用于由终端和服务器所构成的硬件环境中。服务器通过网络与终端进行连接,可用于为终端或终端上安装的客户端提供服务(如消息推送服务、应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器提供数据存储服务。
上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:WIFI(Wireless Fidelity,无线保真),蓝牙。终端可以并不限定于为PC、手机、平板电脑等。
本申请实施例的通信方法可以由服务器来执行,也可以由终端来执行,还可以是由服务器和终端共同执行。其中,终端执行本申请实施例的通信方法也可以是由安装在其上的客户端来执行。
以由服务器来执行本实施例中的通信方法为例,如图1所示,本申请实施例提供了一种通信方法,包括如下所述步骤:
步骤S101,获取来自于第一节点的请求数据,其中,请求数据来自于第一节点上的目标应用;
本实施例中的通信方法可以应用于在不对现有的支持一条连接只能传输一条数据流的协议的应用进行修改的情况下,使该应用可以支持多条数据流复用一条连接的协议的场景,例如:使支持http1.1协议的应用实现通过http2.0协议通信的场景、使支持http1.1协议的应用实现通过http3.0协议通信的场景等,也可以是令支持一条连接只能传输一条数据流的协议的应用可以支持多条数据流复用一条连接的其他协议的场景。本申请实施例中以使支持http1.1协议的应用实现通过http2.0协议通信为例说明上述的通信方法,对于其他类型的通信协议,在不矛盾的情况下,上述的通信方法同样适用。
以使支持http1.1协议的目标应用实现通过http2.0协议通信场景为例,通过在应用层与http2.0协议的连接之间增加与目标应用唯一对应的另一连接,以使目标应用误以为本身仍然采用http1.1协议。
第一节点可以是能够与其他节点进行通信的节点,在将本申请应用于CDN场景下时,第一节点可以是与客户端对接的边缘节点。
目标数据可以是由第一节点上的目标应用产生的数据;也可以是第一节点中的目标应用转发自其他端的数据;还可以是第一节点接受其他端的原始数据之后,目标应用对原始数据进行处理后得到的用于向第二节点进行请求的数据。
目标应用可以是支持一条连接只能传输一条数据流的协议的应用,例如,支持http1.1协议的应用。
例如,在CDN场景下时,在边缘节点(即,第一节点)接受到来自客户端的请求数据之后,若该边缘节点上不存在该访问请求对应的数据,则边缘节点上的目标应用通过该请求数据向上一层节点请求客户端所需的数据。
步骤S102,将请求数据封装为目标协议的目标数据,其中,目标协议为支持一个TCP连接中同时包括多个数据流的协议。
在获取请求数据之后,为了实现通过目标协议进行通信,因此,需要将请求数据封装为目标协议的目标数据。其中,目标协议时支持一个TCP连接中同时包括多个数据流的协议,例如,http2.0协议、或http3.0协议等等。
例如,在获取请求数据之后,确定目标协议为http2.0协议的情况下,可以将请求数据封装成http2.0帧格式,例如http2.0协议的header帧、data帧。
步骤S103,建立唯一对应于目标应用的假连接,其中,假连接用于将目标应用的数据传输至目标应用对应的真连接,真连接为第一节点与第二节点之间的支持目标协议的TCP连接。
在确定出目标应用需要发送请求数据之后,并且由于目标应用本身并不支持多流复用协议,因此建立与目标应用唯一对应的假连接,以使目标应用感知到其采用的协议仍然是一个连接用于传输一条数据流的协议。
假连接可以是用于使目标应用感知目标应用本身仍在通过原有的http1.1协议进行通信的连接。通过假连接,可以将请求数据传输至真连接。
真连接可以是第一节点与第二节点之间的支持目标协议的TCP连接,即,真连接可以是支持一个TCP连接中同时包括多个数据流的协议。
可选地,第一节点对应于一个上层节点时,目标应用可以具有一个唯一对应的假连接,当第一节点对应于上层节点时,目标应用可以具有与每个上层节点对应的假连接。并且,假连接可以用于将目标应用的数据传输至目标应用对应的真连接。即,目标应用并不是直接通过真连接对请求数据进行传输,而是通过假连接将目标应用的数据传输至目标应用对应的真连接。
步骤S104,通过真连接以及假连接将目标数据转发至第二节点。
在确定出目标应用对应的假连接以及假连接用于对接的真连接时,即可通过真连接以及假连接将目标数据转发至第二节点。
通过本实施例中的方法,可以使每一个请求数据对于目标应用来说都是独占一个连接,这样可以在不对目标应用进行改写情况,即,目标应用无需针对目标协议进行适配,即可实现支持一个TCP连接中同时包括多个数据流的目标协议,并通过目标协议进行通信的目的。
作为一种可选的实施方式,如前述的方法,所述步骤S103建立唯一对应于目标应用的假连接包括如下所述步骤:
步骤S201,确定在真连接中目标应用对应的目标流的流编号,创建假连接;
步骤S202,建立假连接与流编号之间的对应关系。
在确定目标应用具有请求数据需要发送时,可以先查找是否有与第二节点保活的连接,如果有就直接使用,如果没有则需要重新建立连接;在有的情况下,可以确定出该保活的连接当前的数据流的数量,进而确定出目标应用对应的目标流的流编号,例如,当已存在2个数据流的情况下,则目标流的流编号为2(从0开始编号);当不存在保活的连接的情况下,则重新建立新的连接,则该新的连接中一般情况下不存在已有的数据流,因此流编号为0。
为了使目标应用可以独占一个连接,因此创建得到假连接;并且,建立该假连接与流编号之间的对应关系。因此,在请求数据根据流编号调度至假连接之后,假连接可以根据流编号将该请求数据调度给真连接中的与流编号对应的目标流,进而可以将该目标数据通过真连接发送至第二节点。
通过本实施例中的方法,达到了建立与真连接中的目标流对应的假连接的目的,进而可以便于后期通过假连接将目标应用向第二节点请求的目标数据通过假连接以及真连接发送至第二节点。
如图2所示,作为一种可选的实施方式,如前述的方法,所述步骤S104通过真连接以及假连接将目标数据转发至第二节点包括如下所述步骤:
步骤S301,在第一节点与第二节点之间的网络状况不满足预设要求的情况下,通过假连接将目标数据发送至目标发送队列,其中,目标发送队列为用于缓存真连接的待发送数据的发送队列;
步骤S302,在网络状况满足预设要求的情况下,通过真连接将目标发送队列中的目标数据发送至第二节点。
第一节点与第二节点之间的网络状况不满足预设要求的情况下,可以是第一节点与第二节点之间的网络延迟高于预设阈值(例如,60ms)或者网络断开的情况下。
在第一节点与第二节点之间的网络状况不满足预设要求的情况下,则先对目标数据进行缓存,并通过假连接将目标数据发送至目标发送队列。
目标发送队列可以是在缓存中的发送队列。
在网络状况满足预设要求的情况下,真连接对目标发送队列进行读取,并且读取到目标数据的情况下,则可以通过该真连接将目标数据发送至第二节点,以最终达到通过真连接实现发包的目的。
进一步的,在第一节点与第二节点之间的网络状况指示畅通(例如,网络延迟小于或等于预设阈值(例如,60ms))时,则直接将目标数据调度给真连接,以通过真连接直接发送该目标数据。
通过本实施例中的方法,可以根据网络状况判断是否直接将目标数据调度给真连接,进而可以保证通信的稳定性。
如图3所示,作为一种可选的实施方式,如前述的方法,在所述步骤S104通过真连接以及假连接将请求数据转发至第二节点之前,方法还包括如下所述步骤:
步骤S401,确定第一节点的资源使用率达到预设上限的情况下,将假连接发送到待处理队列上。
当第一节点为CDN系统中的边缘节点,且短时间内承受大量访问,出现高并发的情况时,会导致第一节点的资源使用率达到预设上限,同时,由于发包过程是容易发生阻塞,进而会进一步影响第一节点的资源使用率。
资源使用率可以包括但不限于带宽使用率、计算资源使用率等等。
在第一节点的资源使用率达到预设上限的情况下,可以将该假连接发送到待处理队列上。
待处理队列可以是用于存储优先级较低的处理任务的队列。
例如,在第一节点为边缘节点时,如果第一节点发包过程中出现阻塞,则realconnection(即,真连接)将阻塞的fake connection(假连接)发到post队列(存在于Nginx中的一个队列)上,等待epoll(操作系统给应用层的接口,用于供应用层了解内核态数据读写状态)触发写事件之后,处理假连接。
所述步骤104通过真连接以及假连接将目标数据转发至第二节点包括:
步骤S402,在确定真连接可以用于进行数据传输的情况下,回调待处理队列上的假连接的写回调;
步骤S403,按照写回调,唤醒目标应用将目标数据发送至假连接。
在第一节点的系统确定在确定真连接可以用于进行数据传输的情况下,当真连接中不存在该目标数据情况下,则可以通过回调函数实现回调待处理队列上的假连接的写回调,以唤醒目标应用将目标数据发送至假连接的回调。
步骤S404,通过真连接将来自于假连接的目标数据转发至第二节点。
目标数据被调度至假连接之后,即可通过真连接将来自于假连接的目标数据转发至第二节点。
通过本实施例中的方法,可以根据第一节点的资源使用率情况,对是否处理假连接进行策略的规划,可以在宏观层面上提高系统的运行效率。
作为一种可选的实施方式,如前述的方法,所述步骤S102将请求数据封装为目标协议的目标数据包括如下所述步骤:
步骤S501,将请求数据封装为目标协议的初始数据。
在获取请求数据之后,可以按照通信基于的目标协议,对请求数据济宁封装,得到初始数据。例如,将请求数据封装成http2.0帧格式的初始数据。
在得到初始数据之后,由于暂未清楚对初始数据进行传输的连接或者数据流等信息,可以将初始数据的连接或者流编号等信息赋值为初始值,例如“0”。
步骤S502,在确定初始数据对应的真连接的情况下,根据真连接中已经存在的当前流的数量,对初始数据中的初始流编号进行修改,得到目标数据;和/或,确定请求数据对应的目标流的流量控制窗口;按照流量控制窗口对初始数据进行封装,得到目标数据,其中,目标数据中的每帧数据的数据量小于或等于流量控制窗口的流量大小。
在确定初始数据对应的真连接之后,即可确定出真连接中已经存在的当前流的数量。当前流可以是在建立与请求数据对应的目标流之前即存在于真连接中的数据流。
由于0号流为整个连接的控制流不进行数据传输,奇数流号为上行数据,偶数流号为下行数据,在确定出当前流的数量N之后,即可对初始数据中的初始流编号进行修改,并修改为流编号(即,2N+1),得到目标数据。
同时,还可以确定请求数据对应的目标流的流量控制窗口,流量控制窗口可以是用于限制目标流的流量的信息。
在确定出流量控制窗口之后,即可按照该流量控制窗口对初始数据进行二次封装,得到目标数据,并且目标数据中的每帧数据的数据量小于或等于流量控制窗口的流量大小。
通过本实施例中的方法,可以对初始数据进行二次封装,以使最终在真连接中传输的数据满足真连接的要求。
作为一种可选的实施方式,如前述的方法,在所述步骤S104通过真连接以及假连接将目标数据转发至第二节点之后,方法还包括如下所述步骤:
步骤S601,获取来自于第二节点的响应头;
步骤S602,在通过解析响应头,确定响应头对应的客户端,其中,请求数据为客户端发送至第一节点;
步骤S603,读取响应头对应的响应数据;
步骤S604,按照客户端支持的数据类型,对响应数据进行封装,得到封装后数据;
步骤S605,将封装后数据发送至客户端。
在将目标数据发送至第二节点之后,则第二节点会对该目标数据进行响应,并生成响应数据。由于响应数据是通过真连接接受的,因此,可以通过真连接接受到来自于第二节点的响应数据,根据流编号将响应数据调度到对应的假连接,目标应用通过假连接获取响应数据。
在得到响应数据之后,可以基于客户端可以解析的数据类型(例如,支持的协议),将响应数据进行封装,得到客户端可以解析的封装后数据。
在得到封装后数据之后,即可将该封装后数据发送至客户端。
通过本实施例中的方法,可以在得到来自于第二节点的响应数据之后,将响应数据发送至对应的客户端。
作为一种可选的实施方式,如前述的方法,在所述步骤S104获取来自于第一节点的请求数据之后,方法还包括如下所述步骤:
步骤S701,获取用于指示第二节点是否支持目标协议的确认信息。
可选地,可以通过对第二节点询问其是否支持目标协议,并获取第二节点响应于该询问的确认信息。
确认信息可以是用于指示第二节点是否支持目标协议的信息。
例如,可以通过在TLS握手时通过alpn的方式获取第二节点是否支持http2.0协议,
步骤S702,在确认信息指示第二节点支持目标协议的情况下,执行用于跳转至步骤将请求数据封装为目标协议的目标数据的跳转操作。
确定第二节点支持目标协议,可以是第二节点本身即支持目标协议,也可以是第二节点可以在协商升级之后,支持目标协议。
在确认信息指示第二节点支持目标协议的情况下,则说明第二节点可以通过目标协议进行通信,进而可以执行用于跳转至步骤将请求数据封装为目标协议的目标数据的跳转操作。
步骤S703,在确认信息指示第二节点不支持目标协议的情况下,按照第二节点与第一节点共同支持的候选协议,将请求数据发送至第二节点。
在确定信息指示第二节点不支持目标协议的情况下,可以确定出第二节点支持的协议,以及第一节点支持的协议,然后确定出按照第二节点与第一节点共同支持的候选协议,并按照该候选协议将请求数据发送至第二节点。
例如,使用http2.0协议可以分为俩种模式,直接使用http2.0协议通信和通过协商升级的方式从http1.1协议升级到http2.0协议。并且可以通过在TLS握手时通过alpn的方式获取第二节点是否支持http2.0协议,在第二节点不支持http2.0协议时回退到http1.1协议,实现第一节点和第二节点之间的通信。在第二节点支持协商升级到http2.0协议的情况下,则可以采用http2.0协议进行通信。
通过本实施例中的方法,可以在确定第二节点对不同的通信协议的支持情况确定通信所基于的协议,可以有效保证通信的稳定性。
如下所述,提供一种应用前述任一实施例的应用例:
一.边缘节点通过Nginx与中间层节点通信时,数据流的流转过程会经历如下阶段:
1)封装边缘节点向中间层节点发起的请求数:将请求数据封装成http2.0帧格式的http2.0帧;
2)查找是否有边缘节点与中间层节点保活的真连接(即,查找是否已经存在http2.0连接),如果有就直接使用该真连接,如果没有则需要重新建立边缘节点与中间层节点之间的连接;
3)处理向中间层节点发起请求的数据:检查http2.0帧,如果有需要会进行二次封装,得到目标数据,并基于http2.0将目标数据发送至中间层节点;
4)解析来自于中间层节点的响应头,确定对应的客户端;
5)发送响应头给客户端;
6)读取后端的响应数据进行处理;
7)发送响应数据给客户端;
二.步骤3)中基于http2.0将目标数据发送至中间层节点,即实现http2.0连接多流复用的其中一种可选的实现方法如下所示:
1)针对http2.0上的流创建一个fake connection(即,假连接)来应对原有的Nginx upstream(目标应用通过upstream将请求数据调度至fake connection),upstream不会感知到real connection,因此,可以实现Nginx upstream对数据的处理流程和http2.0的real connection剥离开,每一个http2.0回源请求对于Nginx upstream都是独占一个连接,这样可以最大限度适配Nginx upsteram处理数据的流程,实际上多个http2.0回源请求复用一个连接已达成http2.0多流复用的特性;real connection负责http2.0协议层面的收发包和读写事件回调;
2)epoll触发读事件,real connection的读回调将recv到的数据调度给相应流的fake connection并调用fake connection的读回调,upstream通过fake connection获取数据进行处理;
3)upstream通过fake connection发送数据,fake connection将数据发给realconnection的发送队列上,real connection实现真实发包;
4)如果发包过程中出现阻塞(例如,访问量高导致高并发时),则real connection将阻塞的fake connection发到post队列(即,待处理队列)上,等待epoll触发写事件;
5)epoll触发写事件,real connection发包,然后回调post队列上的fakeconnection的写回调,唤醒fake connection上的upstream回调。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM(Read-Only Memory,只读存储器)/RAM(Random Access Memory,随机存取存储器)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
根据本申请实施例的另一个方面,还提供了一种用于实施上述通信方法的通信装置。图4是根据本申请实施例的一种可选的通信装置的结构框图,如图4所示,该装置可以包括:
获取模块1,用于获取来自于第一节点的请求数据,其中,请求数据来自于第一节点上的目标应用;
封装模块2,用于将请求数据封装为目标协议的目标数据,其中,目标协议为支持一个TCP连接中同时包括多个数据流的协议;
建立模块3,用于建立唯一对应于目标应用的假连接,其中,假连接用于将目标应用的数据传输至目标应用对应的真连接;
发送模块4,用于通过真连接以及假连接将请求数据转发至第二节点,其中,真连接为第一节点与第二节点之间的支持目标协议的TCP连接。
需要说明的是,该实施例中的获取模块1可以用于执行上述步骤S101,该实施例中的封装模块2可以用于执行上述步骤S102,该实施例中的建立模块3可以用于执行上述步骤S103,该实施例中的发送模块4可以用于执行上述步骤S104。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实现图1所示方法的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本申请实施例的又一个方面,还提供了一种用于实施上述通信方法的电子设备,该电子设备可以是服务器、终端、或者其组合。
根据本申请的另一个实施例,还提供一种电子设备,包括:如图5所示,电子设备可以包括:处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信。
存储器1503,用于存放计算机程序;
处理器1501,用于执行存储器1503上所存放的程序时,实现如下步骤:
步骤S101,获取来自于第一节点的请求数据,其中,请求数据来自于第一节点上的目标应用;
步骤S102,将请求数据封装为目标协议的目标数据,其中,目标协议为支持一个TCP连接中同时包括多个数据流的协议。
步骤S103,建立唯一对应于目标应用的假连接,其中,假连接用于将目标应用的数据传输至目标应用对应的真连接,真连接为第一节点与第二节点之间的支持目标协议的TCP连接。
步骤S104,通过真连接以及假连接将目标数据转发至第二节点。
可选地,在本实施例中,上述的通信总线可以是PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线、或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,可以包含但不限于:CPU(Central ProcessingUnit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(DigitalSignal Processor,数字信号处理器)、ASIC(Application Specific IntegratedCircuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请实施例还提供一种计算机可读存储介质,存储介质包括存储的程序,其中,程序运行时执行上述方法实施例的方法步骤。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、ROM、RAM、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例中所提供的方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (11)

1.一种通信方法,其特征在于,包括:
获取来自于第一节点的请求数据,其中,所述请求数据来自于所述第一节点上的目标应用;
将所述请求数据封装为目标协议的目标数据,其中,所述目标协议为支持一个TCP连接中同时包括多个数据流的协议;
建立唯一对应于所述目标应用的假连接,其中,所述假连接用于将所述目标应用的数据传输至所述目标应用对应的真连接,所述真连接为所述第一节点与第二节点之间的支持目标协议的TCP连接;
通过所述真连接以及所述假连接将所述目标数据转发至第二节点。
2.根据权利要求1所述的方法,其特征在于,所述建立唯一对应于所述目标应用的假连接包括:
确定在所述真连接中所述目标应用对应的目标流的流编号,创建所述假连接;
建立所述假连接与所述流编号之间的对应关系。
3.根据权利要求1所述的方法,其特征在于,所述通过所述真连接以及所述假连接将所述目标数据转发至第二节点包括:
在所述第一节点与所述第二节点之间的网络状况不满足预设要求的情况下,通过所述假连接将所述目标数据发送至目标发送队列,其中,所述目标发送队列为用于缓存所述真连接的待发送数据的发送队列;
在所述网络状况满足所述预设要求的情况下,通过所述真连接将所述目标发送队列中的所述目标数据发送至所述第二节点。
4.根据权利要求1所述的方法,其特征在于,在所述通过所述真连接以及所述假连接将所述目标数据转发至第二节点之前,所述方法还包括:
确定第一节点的资源使用率达到预设上限的情况下,将所述假连接发送到待处理队列上。
5.根据权利要求4所述的方法,其特征在于,所述通过所述真连接以及所述假连接将所述目标数据转发至第二节点包括:
在确定所述真连接可以用于进行数据传输的情况下,回调所述待处理队列上的所述假连接的写回调;
按照所述写回调,唤醒所述目标应用将所述目标数据发送至所述假连接;
通过所述真连接将来自于所述假连接的所述目标数据转发至第二节点。
6.根据权利要求1所述的方法,其特征在于,所述将所述请求数据封装为目标协议的目标数据包括:
将所述请求数据封装为目标协议的初始数据;
在确定所述初始数据对应的所述真连接的情况下,根据所述真连接中已经存在的当前流的数量,对所述初始数据中的初始流编号进行修改,得到所述目标数据;和/或,确定所述请求数据对应的目标流的流量控制窗口;按照所述流量控制窗口对所述初始数据进行封装,得到所述目标数据,其中,所述目标数据中的每帧数据的数据量小于或等于所述流量控制窗口的流量大小。
7.根据权利要求1至6中任一项所述的方法,其特征在于,在所述通过所述真连接以及所述假连接将所述目标数据转发至第二节点之后,所述方法还包括:
获取来自于所述第二节点的响应头;
在通过解析所述响应头,确定所述响应头对应的客户端,其中,所述目标数据为所述客户端发送至所述第一节点;
读取所述响应头对应的响应数据;
按照所述客户端支持的数据类型,对所述响应数据进行封装,得到封装后数据;
将所述封装后数据发送至所述客户端。
8.根据权利要求1至6中任一项所述的方法,其特征在于,在所述获取来自于第一节点的请求数据之后,所述方法还包括:
获取用于指示所述第二节点是否支持所述目标协议的确认信息;
在所述确认信息指示所述第二节点支持所述目标协议的情况下,执行用于跳转至步骤将所述请求数据封装为目标协议的目标数据的跳转操作;
在所述确认信息指示所述第二节点不支持所述目标协议的情况下,按照所述第二节点与所述第一节点共同支持的候选协议,将所述请求数据发送至所述第二节点。
9.一种通信装置,其特征在于,包括:
获取模块,用于获取来自于第一节点的请求数据,其中,所述请求数据来自于所述第一节点上的目标应用;
封装模块,用于将所述请求数据封装为目标协议的目标数据,其中,所述目标协议为支持一个TCP连接中同时包括多个数据流的协议;
建立模块,用于建立唯一对应于所述目标应用的假连接,其中,所述假连接用于将所述目标应用的数据传输至所述目标应用对应的真连接,所述真连接为所述第一节点与第二节点之间的支持目标协议的TCP连接;
发送模块,用于通过所述真连接以及所述假连接将所述目标数据转发至第二节点。
10.一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信,其特征在于,
所述存储器,用于存储计算机程序;
所述处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行权利要求1至8中任一项所述的方法步骤。
11.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至8中任一项中所述的方法步骤。
CN202210289005.5A 2022-03-22 2022-03-22 通信方法和装置、电子设备和存储介质 Pending CN116828020A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210289005.5A CN116828020A (zh) 2022-03-22 2022-03-22 通信方法和装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210289005.5A CN116828020A (zh) 2022-03-22 2022-03-22 通信方法和装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN116828020A true CN116828020A (zh) 2023-09-29

Family

ID=88117267

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210289005.5A Pending CN116828020A (zh) 2022-03-22 2022-03-22 通信方法和装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN116828020A (zh)

Similar Documents

Publication Publication Date Title
US9215283B2 (en) System and method for mobility and multi-homing content retrieval applications
US9774651B2 (en) Method and apparatus for rapid data distribution
KR20190049508A (ko) 데이터 송수신장치 및 데이터 송수신장치의 동작 방법
WO2019000866A1 (zh) 一种数据处理方法及物联网网关
US20120011281A1 (en) Content conversion system and content conversion server
CN104509069A (zh) 支持选择性移动内容优化的技术
US8788612B1 (en) Cache based enhancement to optimization protocol
US9794320B2 (en) Method and apparatus for providing web service in wireless communication system
WO2011088725A1 (zh) 基于http的同步方法和装置
CN102904959A (zh) 网络加速方法和网关
US9900368B2 (en) Method for optimising downloading of data
US10136375B2 (en) Method for service data management, apparatus, and system
KR101367265B1 (ko) 푸시 서버, 푸시 서비스 제공시스템 및 그 방법
JP2003141002A (ja) Url長変換システム及びそのプログラム
KR101322213B1 (ko) P2p 오버레이 네트워크 상에서 무선 노드의 기능을처리하는 프록싱 처리 방법 및 서버
CN102439946A (zh) 数据传输方法和设备
CN116828020A (zh) 通信方法和装置、电子设备和存储介质
EP2847967B1 (en) Method and system for prefetching data
EP2999266A1 (en) Method, device and system for obtaining mobile network data resources
CN111222074A (zh) 一种基于Websocket协议的消息推送方法及系统
CN107528797B (zh) 数据处理方法、装置及系统
TWI353751B (en) Method and arrangement for polling management
CN113347234B (zh) 网络信息获取方法、装置、系统、计算机设备和存储介质
CN116155971A (zh) 一种基于tcp的多路复用网络数据传输方法及系统
CN117938844A (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