CN111917511B - 一种数据的接收方法 - Google Patents

一种数据的接收方法 Download PDF

Info

Publication number
CN111917511B
CN111917511B CN202010642859.8A CN202010642859A CN111917511B CN 111917511 B CN111917511 B CN 111917511B CN 202010642859 A CN202010642859 A CN 202010642859A CN 111917511 B CN111917511 B CN 111917511B
Authority
CN
China
Prior art keywords
response data
protocol
data
transmission unit
size
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.)
Active
Application number
CN202010642859.8A
Other languages
English (en)
Other versions
CN111917511A (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.)
Qingdao Haier Technology Co Ltd
Original Assignee
Qingdao Haier 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 Qingdao Haier Technology Co Ltd filed Critical Qingdao Haier Technology Co Ltd
Priority to CN202010642859.8A priority Critical patent/CN111917511B/zh
Publication of CN111917511A publication Critical patent/CN111917511A/zh
Application granted granted Critical
Publication of CN111917511B publication Critical patent/CN111917511B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0002Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0006Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission format
    • H04L1/0007Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the transmission format by modifying the frame length
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1812Hybrid protocols; Hybrid automatic repeat request [HARQ]
    • H04L1/1816Hybrid protocols; Hybrid automatic repeat request [HARQ] with retransmission of the same, encoded, message
    • 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
    • H04L2212/00Encapsulation of packets

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Communication Control (AREA)

Abstract

本发明实施例提供了一种数据的接收方法,包括向服务端发送请求;根据响应数据的封装类型接收该响应数据,其中,该响应数据是该服务端响应于该请求向该客户端所发送的,该响应数据的封装类型是根据该响应数据的大小所确定的,在该响应数据的大小位于指定范围的情况下,该响应数据被封装为指定封装类型的响应数据,不同封装类型的响应数据的传输速率不同。

Description

一种数据的接收方法
技术领域
本发明涉及通信领域,具体而言,涉及一种数据的接收方法。
背景技术
在智慧家庭场景下,智能设备复杂多样,功能的多样导致每个指令的响应数据的字节大小是多样的,有时候指令的响应数据很小,例如简单的控制指令,有时候指令响应数据中等,例如分享菜谱,也有情况下指令的响应数据很大,例如视频分享、视频点播、设备软件升级等。目前的客户端与服务端并不能灵活地应对响应数据有大有小的情况,例如,一般情况下,dubbo客户端启动后与dubbo服务端会建立固定不变的同一种传输协议的连接,例如每个dubbo客户端与每个服务端建立了一个或多个同一种传输控制协议(例如Transmission Control Protocol,简称TCP协议)连接,利用该连接传输响应数据。但是这种单一的固定不变的连接并不能较好的适应响应数据有大有小的情况,可能会导致传输效率低或者资源浪费的问题。
例如,在响应数据比较大的情况下,TCP协议连接无法做到较快的传输比较大的响应数据;又如,如果响应数据特别小,例如远小于TCP协议的传输单元容量,则利用这种单一的固定的协议进行传输,则可能会浪费传输资源。
也就是说,目前,由于客户端与服务端之间建立了固定不变的连接,导致数据传输不能够较好的适应响应数据大小变化的情况,因此造成数据传输效率较低或浪费传输资源的问题。
发明内容
本发明实施例提供了一种数据的接收方法,以至少解决相关技术中由于固定的传输连接所导致的响应数据传输效率较低或传输资源浪费的问题。
根据本发明的一个实施例,一种数据的接收方法,应用于客户端,包括:
向服务端发送请求;
根据响应数据的封装类型接收所述响应数据,其中,所述响应数据是所述服务端响应于所述请求向所述客户端所发送的,所述响应数据的封装类型是根据所述响应数据的大小所确定的,在所述响应数据的大小位于指定范围的情况下,所述响应数据被封装为指定封装类型的响应数据,不同封装类型的响应数据的传输速率不同。
在一个示例性的实施方式中,不同封装类型的所述响应数据分别在所述客户端与所述服务端之间的不同连接通道上传输。
在一个示例性的实施方式中,在所述根据响应数据的封装类型接收所述响应数据之后,所述方法还包括:在所述连接通道在预设的时间段之内无数据传输的情况下,关闭所述连接通道。
在一个示例性的实施方式中,在所述响应数据的大小小于第一协议的传输单元的容量的情况下,所述响应数据被封装为第一协议数据;在所述响应数据的大小大于所述第一协议的传输单元的容量的情况下,所述响应数据被封装为第二协议数据,其中,所述第二协议的传输单元的容量大于所述第一协议的传输单元的容量。
在一个示例性的实施方式中,在所述响应数据的大小大于所述第一协议的传输单元的容量的情况下,所述响应数据被封装为第二协议数据,包括:
在所述响应数据的大小大于所述第二协议的传输单元的容量,并且,大于或等于所述第二协议的最大传输单元的容量的情况下,所述响应数据被按照所述第二协议的最大传输单元封装;
在所述响应数据的大小大于所述第二协议的传输单元的容量,并且,小于所述第二协议的最大传输单元的容量的情况下,所述响应数据被按照增大后的所述第二协议的传输单元封装,其中,所述第二协议的传输单元的容量被增大,增大后的所述第二协议的传输单元的容量大于或等于所述响应数据的大小。
在一个示例性的实施方式中,所述第二协议用于指示所述服务端在所述响应数据丢失的情况下,重传丢失的所述响应数据。
在一个示例性的实施方式中,在所述第二协议包括KCP协议的情况下,所述响应数据被封装为第二协议数据,包括:所述响应数据被按照UDP协议封装为UDP协议数据。
在一个示例性的实施方式中,所述根据响应数据的封装类型接收所述响应数据,包括:在所述响应数据的封装类型为指定封装类型的情况下,将所述响应数据分发到所述指定封装类型所对应的线程池进行处理,其中,所述指定封装类型所对应的线程池的处理速率与所述响应数据的大小相匹配,所述处理包括:解码处理。
在一个示例性的实施方式中,在所述响应数据为TCP协议数据的情况下,将所述响应数据分发至I/O线程进行处理;在所述响应数据为KCP协议数据或者UDP协议数据的情况下,将所述响应数据分发至业务线程进行处理,其中,所述业务线程的处理速率高于所述I/O线程的处理速率。
在一个示例性的实施方式中,所述方法还包括:根据所述响应数据中携带的封装类型信息确定所述响应数据的封装类型,其中,所述响应数据中携带的封装类型信息包括:协议头信息,不同协议的数据对应不同的封装类型。
在一个示例性的实施方式中,所述方法还包括:在按照与所述指定封装类型所对应的协议接收所述响应数据之后,按照所述指定封装类型所对应的协议发送确认信息,其中,所述确认信息用于指示确定接收到所述响应数据。
根据本发明的另一个实施例,提供了一种数据的接收装置,包括:
发送模块,用于向服务端发送请求;
接收模块,用于根据响应数据的封装类型接收所述响应数据,其中,所述响应数据是所述服务端响应于所述请求向所述客户端所发送的,所述响应数据的封装类型是根据所述响应数据的大小所确定的,在所述响应数据的大小位于指定范围的情况下,所述响应数据被封装为指定封装类型的响应数据,不同封装类型的响应数据的传输速率不同。
根据本发明的又一个实施例,还提供了一种计算机可读的存储介质,所述计算机可读的存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明实施例,由于向服务端发送请求;根据响应数据的封装类型接收所述响应数据,其中,所述响应数据是所述服务端响应于所述请求向所述客户端所发送的,所述响应数据的封装类型是根据所述响应数据的大小所确定的,在所述响应数据的大小位于指定范围的情况下,所述响应数据被封装为指定封装类型的响应数据,不同封装类型的响应数据的传输速率不同,由于可以根据响应数据的大小确定响应数据的封装类型,以使得封装类型能够与响应数据的大小相匹配,可以避免过大的数据传输效率低的情况,也能够避免过小的数据占据较多的传输资源的情况;因此,可以解决相关技术中由于固定的传输连接所导致的响应数据传输效率较低或传输资源浪费的问题,达到提高数据传输效率、避免传输资源浪费的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种数据的接收方法的智能家居设备的硬件结构框图;
图2是根据本发明实施例的数据的接收方法的流程图;
图3是根据本发明实施例的数据的接收装置的结构框图;
图4是根据本发明可选实施方式的线程协作图;
图5是是根据本发明可选实施方式的协议决策流程图;
图6是图4中的协议判断一流程图;
图7是图4中的协议判断二流程图;
图8是根据本发明可选实施方式的KCP协议线程协作图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
实施例1
本申请实施例一所提供的方法实施例可以在移动终端、智能家居设备、计算机终端或者类似的运算装置中执行。以运行在智能家居设备上为例,图1是本发明实施例的一种数据的接收方法的智能家居设备的硬件结构框图。如图1所示,智能家居设备10可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,在一个示例性的实施方式中,上述智能家居设备还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述智能家居设备的结构造成限定。例如,智能家居设备10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的数据的接收方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至智能家居设备10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括智能家居设备10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于上述移动终端或智能家居终端的方法,可以应用客户端,图2是根据本发明实施例的数据的接收方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,向服务端发送请求;
步骤S204,根据响应数据的封装类型接收该响应数据,其中,该响应数据是该服务端响应于该请求向该客户端所发送的,该响应数据的封装类型是根据该响应数据的大小所确定的,在该响应数据的大小位于指定范围的情况下,该响应数据被封装为指定封装类型的响应数据,不同封装类型的响应数据的传输速率不同。
通过上述步骤,由于向服务端发送请求;根据响应数据的封装类型接收该响应数据,其中,该响应数据是该服务端响应于该请求向该客户端所发送的,该响应数据的封装类型是根据该响应数据的大小所确定的,在该响应数据的大小位于指定范围的情况下,该响应数据被封装为指定封装类型的响应数据,不同封装类型的响应数据的传输速率不同,由于可以根据响应数据的大小确定响应数据的封装类型,以使得封装类型能够与响应数据的大小相匹配,可以避免过大的数据传输效率低的情况,也能够避免过小的数据占据较多的传输资源的情况;因此,可以解决相关技术中由于固定的传输连接所导致的响应数据传输效率较低或传输资源浪费的问题,达到提高数据传输效率、避免传输资源浪费的效果。
在一个示例性的实施方式中,上述步骤的执行主体可以为移动终端、智能家居终端、计算机终端等,但不限于此。
在一个示例性的实施方式中,不同封装类型的该响应数据分别在该客户端与该服务端之间的不同连接通道上传输。需要说明的是,由于不同的封装类型需要通过不同的连接通道进行传输,所以需要在客户端与服务端之间建立不同的连接通道,分别用于传输不同封装类型的数据。还需要说明的是,连接通道可以在某封装类型的数据需要被传输之前建立。
在一个示例性的实施方式中,在所述根据响应数据的封装类型接收所述响应数据之后,在所述连接通道在预设的时间段之内无数据传输的情况下,关闭所述连接通道。
需要说明的是,如果连接通道被建立之后,长期无数据传输,会造成资源浪费,因此,可以预设一定的时间段,若一定时间段之内无数据传输,则关闭该连接通道,以节约资源。需要进行数据传输时,在重新建立对应的连接通道。
在一个示例性的实施方式中,在该响应数据的大小小于第一协议的传输单元的容量的情况下,该响应数据被封装为第一协议数据;在该响应数据的大小大于该第一协议的传输单元的容量的情况下,该响应数据被封装为第二协议数据,其中,该第二协议的传输单元的容量大于该第一协议的传输单元的容量。需要说明的是,第一协议可以是传输控制协议(Transmission Control Protocol,简称TCP协议),第二协议可以是KCP协议(快速可靠协议,又称为KCP算法)或者用户数据报协议(User Datagram Protocol,简称UDP协议)。
在一个示例性的实施方式中,在该响应数据的大小大于该第一协议的传输单元的容量的情况下,该响应数据被封装为第二协议数据,包括:在该响应数据的大小大于该第二协议的传输单元的容量,并且,大于或等于该第二协议的最大传输单元的容量的情况下,该响应数据被按照该第二协议的最大传输单元封装;在该响应数据的大小大于该第二协议的传输单元的容量,并且,小于该第二协议的最大传输单元的容量的情况下,该响应数据被按照增大后的该第二协议的传输单元封装,其中,该第二协议的传输单元的容量被增大,增大后的该第二协议的传输单元的容量大于或等于该响应数据的大小。
需要说明的是,将传输单元的容量增大,可以实现通过一次传输即传输了所有的响应数据,提升了数据传输的效率。
在一个示例性的实施方式中,该第二协议用于指示该服务端在该响应数据丢失的情况下,重传丢失的该响应数据。需要说明的是,KCP协议可以实现丢失数据的重传。
在一个示例性的实施方式中,在该第二协议包括KCP协议的情况下,该响应数据被封装为第二协议数据,包括:该响应数据被按照UDP协议封装为UDP协议数据。需要说明的是,由于KCP协议(又称为KCP算法)是屏蔽协议差异的一种算法,最终该响应数据需要以一种传输协议进行传输,所以可以将响应数据封装为UDP协议数据进行传输,封装为UDP协议的响应数据中也可以携带KCP标志。
在一个示例性的实施方式中,该根据响应数据的封装类型接收该响应数据,包括:在该响应数据的封装类型为指定封装类型的情况下,将该响应数据分发到该指定封装类型所对应的线程池进行处理,其中,该指定封装类型所对应的线程池的处理速率与该响应数据的大小相匹配,该处理包括:解码处理。
在一个示例性的实施方式中,在该响应数据为TCP协议数据的情况下,将该响应数据分发至I/O线程进行处理;在该响应数据为KCP协议数据或者UDP协议数据的情况下,将该响应数据分发至业务线程进行处理,其中,该业务线程的处理速率高于该I/O线程的处理速率。
需要说明的是,根据响应数据的大小将响应数据分发到不同的线程处理,例如将大的数据分发至处理效率高的线程,将小的数据分发至处理效率相对较低的线程,可以提高数据接收的效率,避免延时。
在一个示例性的实施方式中,本实施例的方法还包括:根据该响应数据中携带的封装类型信息确定该响应数据的封装类型,其中,该响应数据中携带的封装类型信息包括:指定协议头信息,不同协议的数据对应不同的封装类型。需要说明的是,确定响应数据的封装类型即可确定将该响应数据分发到什么线程池进行处理。
在一个示例性的实施方式中,,该方法还包括:在按照与该指定封装类型所对应的协议接收该响应数据之后,按照该指定封装类型所对应的协议发送确认信息,其中,该确认信息用于指示确定接收到该响应数据。
在本实施例中还提供了一种数据的接收装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图3是根据本发明实施例的数据的接收装置的结构框图,如图3所示,该装置包括:
发送模块31,用于向服务端发送请求;
接收模块33,用于根据响应数据的封装类型接收该响应数据,其中,该响应数据是该服务端响应于该请求向该客户端所发送的,该响应数据的封装类型是根据该响应数据的大小所确定的,在该响应数据的大小位于指定范围的情况下,该响应数据被封装为指定封装类型的响应数据,不同封装类型的响应数据的传输速率不同。
通过上述模块,由于向服务端发送请求;根据响应数据的封装类型接收该响应数据,其中,该响应数据是该服务端响应于该请求向该客户端所发送的,该响应数据的封装类型是根据该响应数据的大小所确定的,在该响应数据的大小位于指定范围的情况下,该响应数据被封装为指定封装类型的响应数据,不同封装类型的响应数据的传输速率不同,由于可以根据响应数据的大小确定响应数据的封装类型,以使得封装类型能够与响应数据的大小相匹配,可以避免过大的数据传输效率低的情况,也能够避免过小的数据占据较多的传输资源的情况;因此,可以解决相关技术中由于固定的传输连接所导致的响应数据传输效率较低或传输资源浪费的问题,达到提高数据传输效率、避免传输资源浪费的效果。
在一个示例性的实施方式中,不同封装类型的该响应数据分别在该客户端与该服务端之间的不同连接通道上传输。
在一个示例性的实施方式中,该装置还包括:关闭模块,用于在所述根据响应数据的封装类型接收所述响应数据之后,在所述连接通道在预设的时间段之内无数据传输的情况下,关闭所述连接通道。
在一个示例性的实施方式中,在该响应数据的大小小于第一协议的传输单元的容量的情况下,该响应数据被封装为第一协议数据;在该响应数据的大小大于该第一协议的传输单元的容量的情况下,该响应数据被封装为第二协议数据,其中,该第二协议的传输单元的容量大于该第一协议的传输单元的容量。
在一个示例性的实施方式中,在该响应数据的大小大于该第一协议的传输单元的容量的情况下,该响应数据被封装为第二协议数据,包括:
在该响应数据的大小大于该第二协议的传输单元的容量,并且,大于或等于该第二协议的最大传输单元的容量的情况下,该响应数据被按照该第二协议的最大传输单元封装;
在该响应数据的大小大于该第二协议的传输单元的容量,并且,小于该第二协议的最大传输单元的容量的情况下,该响应数据被按照增大后的该第二协议的传输单元封装,其中,该第二协议的传输单元的容量被增大,增大后的该第二协议的传输单元的容量大于或等于该响应数据的大小。
在一个示例性的实施方式中,该第二协议用于指示该服务端在该响应数据丢失的情况下,重传丢失的该响应数据。
在一个示例性的实施方式中,在该第二协议包括KCP协议的情况下,该响应数据被封装为第二协议数据,包括:该响应数据被按照UDP协议封装为UDP协议数据。
在一个示例性的实施方式中,该根据响应数据的封装类型接收该响应数据,包括:在该响应数据的封装类型为指定封装类型的情况下,将该响应数据分发到该指定封装类型所对应的线程池进行处理,其中,该指定封装类型所对应的线程池的处理速率与该响应数据的大小相匹配,该处理包括:解码处理。
在一个示例性的实施方式中,在该响应数据为TCP协议数据的情况下,将该响应数据分发至I/O线程进行处理;在该响应数据为KCP协议数据或者UDP协议数据的情况下,将该响应数据分发至业务线程进行处理,其中,该业务线程的处理速率高于该I/O线程的处理速率。
在一个示例性的实施方式中,该装置还包括:确定模块,用于根据该响应数据中携带的封装类型信息确定该响应数据的封装类型,其中,该响应数据中携带的封装类型信息包括:协议头信息,不同协议的数据对应不同的封装类型。
在一个示例性的实施方式中,该装置还包括:反馈模块,用于在按照与该指定封装类型所对应的协议接收该响应数据之后,按照该指定封装类型所对应的协议发送确认信息,其中,该确认信息用于指示确定接收到该响应数据。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
示例实施方式
以下结合具体场景对本发明实施例进一步解释说明。
如果使用TCP协议进行数据传输,虽然能让数据传输无误,但是当数据因为某种原因丢失后,TCP超时计算是RTOx2,这样连续丢三次包就变成RTOx8了,超时较多,而KCP启动快速模式后不x2,只是x1.5,可以提高传输速度。比较KCP的快速模式和普通模式与TCP的RTO算法。可知TCP协议下,在连续丢包后重传超时时间快速上涨,这就导致了客户端严重超时,数据获取等待过长。而UDP协议我们知道比TCP传输更快,但是会丢数据,因此可以使用KCP算法结合UDP协议实现比TCP更快的传输。
本发明实施例在服务端通过对响应数据大小进行判断,自动决策使用TCP协议还是KCP算法结合UDP,在客户端若发现接收到的数据是TCP数据就在I/O线程解码,如果是KCP+UDP数据就在业务线程进行解码,这样降低了客户端的延时,提高了传输效率。
本发明实施例中在服务端能够根据响应数据的大小进行决策,数据达到一定范围后自动选择KCP+UDP协议传输,否则使用TCP协议传输,协议的切换利用了Dubbo的SPI机制,通过一个自己的类来自动切换协议。
客户端根据接收到数据的协议封装类型,同样利用SPI(Service ProviderInterface)机制将任务分发到在不同线程进行解码,提高了传输效率。图4是根据本发明可选实施方式的线程协作图,如图4所示:
其中协议决策根据需要发送的数据大小与TCP协议的参数MTU大小和KCP算法参数mtu(传输单元)、max_mtu(最大传输单元)计算和调整得出结论。data为需要传输的数据大小,MTU为TCP协议一次传输最大的数据,获取mtu参数用于设置KCP算法最大传输速率。
图5是根据本发明可选实施方式的协议决策流程图,如图5所示:
在KCP算法情况下,若data<=mtu,mtu不再调整;若data>mtu,mtu动态调整的计算公式如下:
n=1、2、3…n,data>mtu
即,在响应数据大于max_mtu的情况下,可以使用该max_mtu封装数据;在响应数据大于KCP算法参数mtu(传输单元)并且小于max_mtu(最大传输单元)时,可以提高当前设置的KCP算法参数mtu(传输单元)的容量,以使响应数据可以封装在一个传输单元中,一次传输即可传输全部的响应数据,提高传输的效率。
其中,图6是图4中的协议判断一流程图,如图6所示,协议判断一根据响应的数据是否包含KCP的头信息,该头信息包括八个字段,有这些字段代表数据是KCP算法的数据。若有KCP头信息,系统将KCP算法的数据进行分发到业务线程池,在业务线程池中解码和后续处理,否则将数据交给I/O线程池进行解码和后续处理。
图7是图4中的协议判断二流程图,如图7所示,协议判断二用于回复ACK用,同样是通过判断包中是否有KCP头信息,客户端确定接收到的响应数据是否包含KCP头,如果是,则通过SPI机制从UDP通道返回ACK;如果不包含KCP头,则通过SPI机制从TCP通道返回ACK。
本发明实施例将KCP协议的数据交给业务线程处理,而不是Dubbo官方的在I/O线程解码,减轻了I/O线程的压力,图8是根据本发明可选实施方式的KCP协议线程协作图,如图8所示:KCP协议的数据被提交到业务线程池进行解码。
本实施例通过计算和dubbo的SPI机制来决策使用什么传输协议,协议判断一之后将不同的协议数据分发给I/O线程和业务线程解码,而官方dubbo中把数据的解码全部放在I/O线程池上,本发明充分利用了可用的线程资源和UDP的优点,解决了在大响应数据下的延时问题。
本发明实施例可以根据数据的大小自动切换协议,能够自动调整参数mtu,选择最合适的KCP参数,提高传输效率;充分利用UDP的优点;合理配置I/O线程和业务线程的工作量,在大响应数据情况下降低丢包后超时间的等待从而降低延时时间。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本发明的实施例还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性的实施方式中,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,向服务端发送请求;
S2,根据响应数据的封装类型接收该响应数据,其中,该响应数据是该服务端响应于该请求向该客户端所发送的,该响应数据的封装类型是根据该响应数据的大小所确定的,在该响应数据的大小位于指定范围的情况下,该响应数据被封装为指定封装类型的响应数据,不同封装类型的响应数据的传输速率不同。
通过上述步骤,由于向服务端发送请求;根据响应数据的封装类型接收该响应数据,其中,该响应数据是该服务端响应于该请求向该客户端所发送的,该响应数据的封装类型是根据该响应数据的大小所确定的,在该响应数据的大小位于指定范围的情况下,该响应数据被封装为指定封装类型的响应数据,不同封装类型的响应数据的传输速率不同,由于可以根据响应数据的大小确定响应数据的封装类型,以使得封装类型能够与响应数据的大小相匹配,可以避免过大的数据传输效率低的情况,也能够避免过小的数据占据较多的传输资源的情况;因此,可以解决相关技术中由于固定的传输连接所导致的响应数据传输效率较低或传输资源浪费的问题,达到提高数据传输效率、避免传输资源浪费的效果。
在一个示例性的实施方式中,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
在一个示例性的实施方式中,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random AccessMemory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性的实施方式中,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
在一个示例性的实施方式中,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,向服务端发送请求;
S2,根据响应数据的封装类型接收该响应数据,其中,该响应数据是该服务端响应于该请求向该客户端所发送的,该响应数据的封装类型是根据该响应数据的大小所确定的,在该响应数据的大小位于指定范围的情况下,该响应数据被封装为指定封装类型的响应数据,不同封装类型的响应数据的传输速率不同。
通过上述步骤,由于向服务端发送请求;根据响应数据的封装类型接收该响应数据,其中,该响应数据是该服务端响应于该请求向该客户端所发送的,该响应数据的封装类型是根据该响应数据的大小所确定的,在该响应数据的大小位于指定范围的情况下,该响应数据被封装为指定封装类型的响应数据,不同封装类型的响应数据的传输速率不同,由于可以根据响应数据的大小确定响应数据的封装类型,以使得封装类型能够与响应数据的大小相匹配,可以避免过大的数据传输效率低的情况,也能够避免过小的数据占据较多的传输资源的情况;因此,可以解决相关技术中由于固定的传输连接所导致的响应数据传输效率较低或传输资源浪费的问题,达到提高数据传输效率、避免传输资源浪费的效果。
在一个示例性的实施方式中,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,在一个示例性的实施方式中,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种数据的接收方法,应用于客户端,其特征在于,包括:
向服务端发送请求;
根据响应数据的封装类型接收所述响应数据,其中,所述响应数据是所述服务端响应于所述请求向所述客户端所发送的,所述响应数据的封装类型是所述服务器根据所述响应数据的大小所确定的,在所述响应数据的大小位于指定范围的情况下,所述响应数据被封装为指定封装类型的响应数据,不同封装类型的响应数据的传输速率不同;
其中,所述根据响应数据的封装类型接收所述响应数据,包括:
在所述响应数据的封装类型为指定封装类型的情况下,将所述响应数据分发到所述指定封装类型所对应的线程池进行处理,其中,所述指定封装类型所对应的线程池的处理速率与所述响应数据的大小相匹配,所述处理包括:解码处理;
其中,在所述响应数据的大小小于第一协议的传输单元的容量的情况下,所述响应数据被封装为第一协议数据;在所述响应数据的大小大于所述第一协议的传输单元的容量的情况下,所述响应数据被封装为第二协议数据,其中,所述第二协议的传输单元的容量大于所述第一协议的传输单元的容量;
其中,在所述响应数据的大小大于所述第一协议的传输单元的容量的情况下,所述响应数据被封装为第二协议数据,包括:在所述响应数据的大小大于所述第二协议的传输单元的容量,并且,大于或等于所述第二协议的最大传输单元的容量的情况下,所述响应数据被按照所述第二协议的最大传输单元封装;在所述响应数据的大小大于所述第二协议的传输单元的容量,并且,小于所述第二协议的最大传输单元的容量的情况下,所述响应数据被按照增大后的所述第二协议的传输单元封装,其中,所述第二协议的传输单元的容量被增大,增大后的所述第二协议的传输单元的容量大于或等于所述响应数据的大小。
2.根据权利要求1所述的方法,其特征在于,不同封装类型的所述响应数据分别在所述客户端与所述服务端之间的不同连接通道上传输。
3.根据权利要求2所述的方法,其特征在于,在所述根据响应数据的封装类型接收所述响应数据之后,所述方法还包括:
在所述连接通道在预设的时间段之内无数据传输的情况下,关闭所述连接通道。
4.根据权利要求1所述的方法,其特征在于,所述第二协议用于指示所述服务端在所述响应数据丢失的情况下,重传丢失的所述响应数据。
5.根据权利要求4所述的方法,其特征在于,在所述第二协议包括KCP协议的情况下,所述响应数据被封装为第二协议数据,包括:所述响应数据被按照UDP协议封装为UDP协议数据。
6.根据权利要求1所述的方法,其特征在于,在所述响应数据为TCP协议数据的情况下,将所述响应数据分发至I/O线程进行处理;在所述响应数据为KCP协议数据或者UDP协议数据的情况下,将所述响应数据分发至业务线程进行处理,其中,所述业务线程的处理速率高于所述I/O线程的处理速率。
7.根据权利要求1所述的方法,其特征在于,根据所述响应数据中携带的封装类型信息确定所述响应数据的封装类型,其中,所述响应数据中携带的封装类型信息包括:协议头信息,不同协议的数据对应不同的封装类型。
8.根据权利要求1至5中任一项所述的方法,其特征在于,所述方法还包括:
在按照与所述指定封装类型所对应的协议接收所述响应数据之后,按照所述指定封装类型所对应的协议发送确认信息,其中,所述确认信息用于指示确定接收到所述响应数据。
CN202010642859.8A 2020-07-06 2020-07-06 一种数据的接收方法 Active CN111917511B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010642859.8A CN111917511B (zh) 2020-07-06 2020-07-06 一种数据的接收方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010642859.8A CN111917511B (zh) 2020-07-06 2020-07-06 一种数据的接收方法

Publications (2)

Publication Number Publication Date
CN111917511A CN111917511A (zh) 2020-11-10
CN111917511B true CN111917511B (zh) 2024-01-30

Family

ID=73227448

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010642859.8A Active CN111917511B (zh) 2020-07-06 2020-07-06 一种数据的接收方法

Country Status (1)

Country Link
CN (1) CN111917511B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115348321B (zh) * 2022-08-12 2024-04-26 中国建设银行股份有限公司 一种基于流量控制的数据获取方法及相关装置

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1655547A (zh) * 2004-09-09 2005-08-17 上海川海信息科技有限公司 一种流媒体传输系统中的速率控制方法
CN1968276A (zh) * 2006-11-24 2007-05-23 清华大学 面向服务的体系结构环境下服务之间数据传输的动态优化方法
CN101964739A (zh) * 2009-07-22 2011-02-02 中国移动通信集团公司 数据传送方法、装置及系统
CN104040545A (zh) * 2012-01-06 2014-09-10 苹果公司 基于数据特性的智能数据传输和存储
US9014264B1 (en) * 2011-11-10 2015-04-21 Google Inc. Dynamic media transmission rate control using congestion window size
US9246819B1 (en) * 2011-06-20 2016-01-26 F5 Networks, Inc. System and method for performing message-based load balancing
CN107295007A (zh) * 2017-07-31 2017-10-24 浪潮天元通信信息系统有限公司 一种支持多种协议的服务方法、装置及系统
CN109284182A (zh) * 2018-10-10 2019-01-29 广州虎牙信息科技有限公司 响应数据更新方法、装置及计算机设备
CN109474365A (zh) * 2018-12-29 2019-03-15 深圳市柠檬互动科技有限公司 一种帧同步udp网络同步方法
CN110113440A (zh) * 2019-04-15 2019-08-09 北京奇艺世纪科技有限公司 一种请求响应方法、装置及终端

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006253852A (ja) * 2005-03-09 2006-09-21 Hitachi Ltd 可変通信容量データ伝送装置及びデータ伝送装置
US10845399B2 (en) * 2007-04-03 2020-11-24 Electro Industries/Gaugetech System and method for performing data transfers in an intelligent electronic device
KR20100133205A (ko) * 2009-06-11 2010-12-21 (주)씨디네트웍스 최적의 전송 프로토콜 선택 방법 및 그 장치
FR3031862B1 (fr) * 2015-01-16 2017-02-17 Sagemcom Broadband Sas Procede de transmission d'un flux de donnees utilisant un protocole de diffusion en direct.

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1655547A (zh) * 2004-09-09 2005-08-17 上海川海信息科技有限公司 一种流媒体传输系统中的速率控制方法
CN1968276A (zh) * 2006-11-24 2007-05-23 清华大学 面向服务的体系结构环境下服务之间数据传输的动态优化方法
CN101964739A (zh) * 2009-07-22 2011-02-02 中国移动通信集团公司 数据传送方法、装置及系统
US9246819B1 (en) * 2011-06-20 2016-01-26 F5 Networks, Inc. System and method for performing message-based load balancing
US9014264B1 (en) * 2011-11-10 2015-04-21 Google Inc. Dynamic media transmission rate control using congestion window size
CN104040545A (zh) * 2012-01-06 2014-09-10 苹果公司 基于数据特性的智能数据传输和存储
CN107295007A (zh) * 2017-07-31 2017-10-24 浪潮天元通信信息系统有限公司 一种支持多种协议的服务方法、装置及系统
CN109284182A (zh) * 2018-10-10 2019-01-29 广州虎牙信息科技有限公司 响应数据更新方法、装置及计算机设备
CN109474365A (zh) * 2018-12-29 2019-03-15 深圳市柠檬互动科技有限公司 一种帧同步udp网络同步方法
CN110113440A (zh) * 2019-04-15 2019-08-09 北京奇艺世纪科技有限公司 一种请求响应方法、装置及终端

Also Published As

Publication number Publication date
CN111917511A (zh) 2020-11-10

Similar Documents

Publication Publication Date Title
EP3396883A1 (en) Data transmission method and related device
US11019533B2 (en) Service traffic control method and system and decision network element
US20080016248A1 (en) Method and apparatus for time synchronization of parameters
WO2016100631A1 (en) Methods for enabling delay-awareness in the constrained application protocol (coap)
US20190159064A1 (en) Data transmission method and device
CN113438181B (zh) 网络拥塞控制方法和装置
US20220086262A1 (en) Network packet processing method and apparatus and network server
CN112631788B (zh) 数据传输方法及数据传输服务器
EP3534574A1 (en) Techniques for policy management of multi-connectivity network protocols
CN105262836A (zh) 服务器推送信息的方法及客户端接收推送信息的方法
CN102571912B (zh) 一种实现基于多核处理器和混合操作系统的卸载协议栈的方法
CN114363351B (zh) 一种代理连接抑制方法、网络架构及代理服务器
CN111917511B (zh) 一种数据的接收方法
US10645184B2 (en) Information transmission method, gateway, and controller
CN113347681B (zh) 数据传输方法、装置、存储介质及电子装置
US20180048581A1 (en) Communication apparatus and communication method
CN114500528A (zh) 一种基于云平台的数据传输方法及装置
CN112887416B (zh) 发送保活包的频率调整方法及装置
CN102315918A (zh) 一种tcp连接与sctp连接互通的方法及装置
CN111277599B (zh) 一种远程调用处理方法及装置
CN115982084A (zh) 数据传输方法及装置、通信设备、及存储介质
CN115396372A (zh) 数据流的速率控制方法、智能网卡、云端设备及存储介质
CN111245794B (zh) 数据传输方法和装置
CN114172977B (zh) 一种传输控制协议tcp代理方法、装置及基站
CN111083734B (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