本申请涉及通信领域,尤其涉及一种负载均衡方法和装置。
背景技术:
随着网络中业务量、访问量和数据流量的成倍增长,内容分发网络(contentdeliverynetwork,cdn)系统应运而生。在cdn系统中,可以通过网络地址转换(networkaddresstransformation,nat)或直接路由(directrouting,dr)等负载均衡方法将用户的请求导向到cdn服务器集群中离用户最近的cdn服务节点上,使用户可就近取得所需内容,改善网络拥挤的状况,提高用户访问网站的响应速度。
然而,随着cdn服务器集群的部署进一步分布化,可能会出现多个cdn服务器部署在不同的网段内,导致nat和dr等传统负载均衡模式变得不可用。因此如何在分布化cdn场景下进行有效的负载均衡成为一个亟待解决的问题。
技术实现要素:
本申请实施例提供一种负载均衡方法和装置,能够在分布化cdn场景下进行有效的负载均衡。
第一方面,本申请实施例提供一种负载均衡方法,包括:终端设备向负载均衡设备发送第一请求消息,该第一请求消息用于请求待传输数据和cdn服务器的网际协议(internetprotocol,ip)地址;该终端设备接收该cdn服务器发送的第一响应消息,该第一响应消息包括待传输数据的长度和该cdn服务器的ip地址,该第一响应消息的源ip地址为该负载均衡设备的ip地址;若该终端设备确定待传输数据的长度大于或等于预设阈值,该终端设备根据该cdn服务器的ip地址与该cdn服务器建立连接。这样一来,终端设备可以根据cdn服务器的ip地址与不同网段内的cdn服务器建立直接连接,相比nat和dr等传统负载均衡模式无法进行跨网段的负载均衡,本申请实施例能够在分布化cdn场景下进行有效的负载均衡。
并且,基于上述方案,负载均衡设备可以将终端设备发送的第一请求消息转发给cdn服务器,以便终端设备与cdn服务器之间的数据传输可以快速启动。而且,终端设备与cdn服务器建立连接后,可以进一步从cdn服务器接收待传输的数据中的未传输的数据。从而,上述方案可以降低终端设备接收待传输数据时的传输时延,提高了数据传输效率。
在一种可能的实现方式中,该方法还包括:该终端设备向该负载均衡设备发送中断连接请求,该中断连接请求用于指示断开该终端设备与该负载均衡设备的连接。由此,终端设备与cdn服务器建立连接后,可以断开与负载均衡设备的连接,能够卸载负载均衡设备的长连接,降低负载均衡设备的资源消耗。
在一种可能的实现方式中,该终端设备根据该cdn服务器的ip地址与该cdn服务器建立连接之前,该方法还包括:该终端设备接收该cdn服务器发送的第二响应消息,该第二响应消息包括待传输的数据中的部分数据,该第二响应消息的源ip地址为该负载均衡设备的ip地址,即该第二响应消息是cdn服务器以负载均衡设备的名义发送的。这样一来,终端设备与cdn服务器建立连接之前,可以接收cdn服务器以负载均衡设备的名义发送的待传输的数据中的部分数据,能够提高数据传输的效率,从而降低终端设备接收待传输数据时的传输时延。
在一种可能的实现方式中,该终端设备与该cdn服务器建立连接后,该方法还包括:该终端设备向该cdn服务器发送第二请求消息,该第二请求消息用于请求待传输的数据中未传输的数据;该终端设备接收该cdn服务器发送的第三响应消息,该第三响应消息包括该未传输的数据,该第三响应消息的源ip地址为该cdn服务器的ip地址。可以理解的是,在终端设备与cdn服务器建立连接前或建立连接的过程中,终端设备可以接收部分数据,当终端设备与cdn服务器建立连接后,可以从cdn服务器接收待传输数据中剩余的部分。从而可以降低终端设备接收待传输数据时的传输时延,提高了数据传输效率。
在一种可能的实现方式中,该终端设备向该cdn服务器发送第二请求消息包括:该终端设备向该cdn服务器发送超文本传输协议(hypertexttransportprotocol,http)获取请求,该http获取请求包括待传输的数据中未传输的数据的起始位置。
在一种可能的实现方式中,该终端设备根据该cdn服务器的ip地址与该cdn服务器建立连接之后,该方法还包括:该终端设备在预设时间间隔内接收该cdn服务器发送的第四响应消息,该第四响应消息包括待传输的数据中的部分数据,该预设时间间隔是根据该终端设备和该cdn服务器之间的往返时间rtt确定的,该第四响应消息的源ip地址为该负载均衡设备的ip地址;或者,该终端设备在预设时间间隔内接收该负载均衡设备发送的第五响应消息,该第五响应消息包括待传输的数据中的部分数据,该预设时间间隔是根据述终端设备和该负载均衡设备之间的往返时间rtt确定的。这是由于终端设备与cdn服务器建立连接之后,不能立刻从cdn服务器接收数据,会导致数据传输发生中断。因此,使终端设备在预设时间间隔内从cdn服务器或负载均衡设备接收数据,能够保持数据传输的稳定,从而减少抖动。
第二方面,本申请实施例提供一种负载均衡方法,包括:负载均衡设备接收终端设备发送的第一请求消息,该第一请求消息用于请求待传输数据和cdn服务器的ip地址;该负载均衡设备向该cdn服务器发送该第一请求消息,使该cdn服务器向该终端设备发送第一响应消息,该第一响应消息包括待传输数据的长度和该cdn服务器的ip地址。
基于上述方案,负载均衡设备可以将终端设备发送的请求消息转发给cdn服务器,以便cdn服务器向终端设备发送cdn服务器的ip地址,从而终端设备可以根据cdn服务器的ip地址与不同网段内的cdn服务器建立直接连接。相比nat和dr等传统负载均衡模式无法进行跨网段的负载均衡,本申请实施例能够在分布化cdn场景下进行有效的负载均衡。
在一种可能的实现方式中,该负载均衡设备接收该终端设备发送的中断连接请求,该中断连接请求用于指示断开该终端设备与该负载均衡设备的连接;该负载均衡设备向该终端设备发送中断连接响应,并断开负载均衡设备与终端设备之间的链路。这样一来,负载均衡设备可以卸载其与终端设备的连接,能够降低负载均衡设备的资源消耗。
在一种可能的实现方式中,该方法还包括:该负载均衡设备在预设时间间隔内向该终端设备发送第五响应消息,该第五响应消息包括待传输的数据中的部分数据,该预设时间间隔是根据该终端设备和该负载均衡设备间的往返时间rtt确定的。
第三方面,本申请实施例提供一种负载均衡方法,包括:cdn服务器接收负载均衡设备发送的第一请求消息,该第一请求消息用于请求待传输数据和cdn服务器的ip地址;该cdn服务器向终端设备发送第一响应消息,该第一响应消息包括待传输数据的长度和该cdn服务器的ip地址,使该终端设备根据该待传输数据的长度确定是否与该cdn服务器建立连接。基于本方案,cdn服务器可以将其ip地址发送给终端设备,以便终端设备可以根据cdn服务器的ip地址与不同网段内的cdn服务器建立连接,从而能够在分布化cdn场景下进行有效的负载均衡。
在一种可能的实现方式中,该cdn服务器接收负载均衡设备发送的第一请求消息之后,该方法还包括:该cdn服务器向该终端设备发送第二响应消息,该第二响应消息包括待传输的数据中的部分数据,该第二响应消息的源ip地址为该负载均衡设备的ip地址。
在一种可能的实现方式中,该cdn服务器向终端设备发送第一响应消息之后,该方法还包括:该cdn服务器接收该终端设备发送的第二请求消息,该第二请求消息用于请求该待传输的数据中未传输的数据;该cdn服务器向该终端设备发送第三响应消息,该第三响应消息包括该未传输的数据,该第三响应消息的源ip地址为该cdn服务器的ip地址。
在一种可能的实现方式中,该cdn服务器接收该终端设备发送的第二请求消息包括:该cdn服务器接收该终端设备发送的http获取请求,该http获取请求包括待传输的数据中未传输的数据的起始位置。
在一种可能的实现方式中,若该终端设备与该cdn服务器建立连接,该方法还包括:该cdn服务器在预设时间间隔内向该终端设备发送第四响应消息,该第四响应消息包括待传输的数据中的部分数据,该预设时间间隔是根据该终端设备和该cdn服务器之间的往返时间rtt确定的,该第四响应消息的源ip地址为该负载均衡设备的ip地址。
第四方面,本申请实施例提供一种终端设备,包括:发送单元,用于向负载均衡设备发送第一请求消息,该第一请求消息用于请求待传输数据和cdn服务器的ip地址;接收单元,用于接收该cdn服务器发送的第一响应消息,该第一响应消息包括待传输数据的长度和该cdn服务器的ip地址,该第一响应消息的源ip地址为该负载均衡设备的ip地址;处理单元,用于若确定该待传输数据的长度大于或等于预设阈值,根据该cdn服务器的ip地址与该cdn服务器建立连接。
在一种可能的实现方式中,该发送单元还用于:向该负载均衡设备发送中断连接请求,该中断连接请求用于指示断开该终端设备与该负载均衡设备的连接。
在一种可能的实现方式中,该接收单元还用于:接收该cdn服务器发送的第二响应消息,该第二响应消息包括待传输的数据中的部分数据,该第二响应消息的源ip地址为该负载均衡设备的ip地址。
在一种可能的实现方式中,该发送单元还用于:向该cdn服务器发送第二请求消息,该第二请求消息用于请求该待传输的数据中未传输的数据;该接收单元,还用于接收该cdn服务器发送的第三响应消息,该第三响应消息包括该未传输的数据,该第三响应消息的源ip地址为该cdn服务器的ip地址。
在一种可能的实现方式中,该发送单元用于:向该cdn服务器发送http获取请求,该http获取请求包括待传输的数据中未传输的数据的起始位置。
第五方面,本申请实施例提供一种负载均衡设备,包括:接收单元,用于接收终端设备发送的第一请求消息,该第一请求消息用于请求待传输数据和cdn服务器的ip地址;发送单元,用于向该cdn服务器发送该第一请求消息,使该cdn服务器向该终端设备发送第一响应消息,该第一响应消息包括待传输数据的长度和该cdn服务器的ip地址。
在一种可能的实现方式中,该接收单元还用于:接收该终端设备发送的中断连接请求,该中断连接请求用于指示断开该终端设备与该负载均衡设备的连接;该发送单元还用于,向该终端设备发送中断连接响应,并通过处理单元断开负载均衡设备与终端设备之间的链路。
第六方面,本申请实施例提供一种cdn服务器,包括:接收单元,用于接收负载均衡设备发送的第一请求消息,该第一请求消息用于请求待传输数据和cdn服务器的ip地址;发送单元,用于向终端设备发送第一响应消息,该第一响应消息包括待传输数据的长度和该cdn服务器的ip地址,使该终端设备根据该待传输数据的长度确定是否与该cdn服务器建立连接。
在一种可能的实现方式中,该cdn服务器接收负载均衡设备发送的第一请求消息之后,该发送单元还用于:向该终端设备发送第二响应消息,该第二响应消息包括待传输的数据中的部分数据,该第二响应消息的源ip地址为该负载均衡设备的ip地址。
在一种可能的实现方式中,该cdn服务器向终端设备发送第一响应消息之后,该接收单元还用于:接收该终端设备发送的第二请求消息,该第二请求消息用于请求该待传输的数据中未传输的数据;该发送单元,还用于向该终端设备发送第三响应消息,该第三响应消息包括该未传输的数据,该第三响应消息的源ip地址为该cdn服务器的ip地址。
在一种可能的实现方式中,该接收单元用于:接收该终端设备发送的http获取请求,该http获取请求包括待传输的数据中未传输的数据的起始位置。
在一种可能的实现方式中,若该终端设备与该cdn服务器建立连接,该发送单元还用于:在预设时间间隔内向该终端设备发送第四响应消息,该第四响应消息包括待传输的数据中的部分数据,该预设时间间隔是根据该终端设备和该cdn服务器之间的往返时间rtt确定的,该第四响应消息的源ip地址为该负载均衡设备的ip地址。
第七方面,本申请实施例提供一种负载均衡系统,包括终端设备、负载均衡设备和cdn服务器,其中:该终端设备,用于向该负载均衡设备发送第一请求消息,该第一请求消息用于请求待传输数据和该cdn服务器的ip地址;该负载均衡设备,用于接收该终端设备发送的该第一请求消息;该负载均衡设备,还用于向该cdn服务器发送该第一请求消息;该cdn服务器,用于接收该负载均衡设备发送的该第一请求消息;该cdn服务器,还用于向该终端设备发送第一响应消息,该第一响应消息包括待传输数据的长度和该cdn服务器的ip地址,该第一响应消息的源ip地址为该负载均衡设备的ip地址;该终端设备,还用于接收该cdn服务器发送的该第一响应消息;该终端设备,还用于若确定该待传输数据的长度大于或等于预设阈值,根据该cdn服务器的ip地址与该cdn服务器建立连接。
第八方面,本发明实施例提供了一种装置,该装置以芯片的产品形态存在,该装置的结构中包括处理器和存储器,该存储器用于与处理器耦合,保存该装置必要的程序指令和数据,该处理器用于执行存储器中存储的程序指令,使得该装置执行上述方法中终端设备、负载均衡设备或cdn服务器的功能。
第九方面,本发明实施例提供了一种终端设备、负载均衡设备或cdn服务器,该终端设备、负载均衡设备或cdn服务器可以实现上述方法实施例中终端设备、负载均衡设备或cdn服务器所执行的功能,功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个上述功能相应的模块。
在一种可能的设计中,该终端设备、该负载均衡设备或该cdn服务器的结构中包括处理器和通信接口,该处理器被配置为支持该终端设备、该负载均衡设备或该cdn服务器执行上述方法中相应的功能。该通信接口用于支持该终端设备与其他网元之间的通信。该终端设备、该负载均衡设备或该cdn服务器还可以包括存储器,该存储器用于与处理器耦合,其保存该终端设备、该负载均衡设备或该cdn服务器必要的程序指令和数据。
第十方面,本发明实施例提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行第一方面、第二方面或第三方面提供的任意一种方法。
第十一方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行第一方面、第二方面或第三方面提供的任意一种方法。
附图说明
图1为本申请实施例提供的一种适用于负载均衡方法的通信架构示意图一;
图2为本申请实施例提供的一种适用于负载均衡方法的通信架构示意图二;
图3为本申请实施例提供的一种负载均衡方法的信号交互示意图;
图4为本申请实施例提供的一种终端设备的结构示意图一;
图5为本申请实施例提供的一种终端设备的结构示意图二;
图6为本申请实施例提供的一种cdn服务器的结构示意图一;
图7为本申请实施例提供的一种cdn服务器的结构示意图二;
图8为本申请实施例提供的一种负载均衡设备的结构示意图一;
图9为本申请实施例提供的一种负载均衡设备的结构示意图二。
具体实施方式
本申请实施例提供一种负载均衡方法和装置,应用于负载均衡场景。例如应用于分布化cdn的负载均衡场景。分布化cdn的负载均衡场景例如可以是cdn系统中的cdn服务器集群部署在多个不同的网段中的场景。
如图1所示,为本申请实施例提供的一种适用于负载均衡方法的通信架构示意图,包括终端设备、负载均衡设备以及cdn服务器。其中,负载均衡设备例如可以为负载均衡(serverloadbalance,slb)服务器或网络负载平衡(networkloadbalancing,nlb)服务器。终端设备用于接收用户的操作,发起内容请求(例如请求下载视频)。负载均衡设备用于解析内容请求,并根据负载均衡策略确定一个该终端设备对应的cdn服务器,然后向该cdn服务器转发内容请求。cdn服务器用于解析内容请求,并可以直接向终端设备或通过负载均衡设备向终端设备传输相应的内容和该cdn服务器的ip地址。终端设备根据内容大小及业务需要,决定是否与cdn服务器建立直接连接,以便向cdn服务器请求传输后续未传输的内容。
在一种可能的设计中,如图2所示,负载均衡方法的通信架构可以进一步包括本地域名系统(localdomainnamesystem,ldns)服务器(简称ldns)、授权域名系统(domainnamesystem,dns)服务器(例如服务提供商(serviceprovider,sp)的授权dns服务器)和全局负载均衡(globalserverloadbalance,gslb)设备(简称gslb)。ldns、授权dns服务器和gslb主要用于向终端设备提供负载均衡设备的ip地址,以便终端设备根据负载均衡设备的ip地址向负载均衡设备发送内容请求。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请的描述中,除非另有说明,“多个”是指两个或多于两个。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
本申请实施例提供一种负载均衡方法,以负载均衡设备为slb服务器(下文简称为slb)为例进行说明,如图3所示,包括:
301、终端设备向负载均衡设备发送第一请求消息,第一请求消息用于请求待传输数据和cdn服务器的ip地址。
需要说明的是,终端设备向slb发送第一请求消息之前,终端设备可以通过ldns、授权dns服务器以及gslb获取slb的ip地址。示例性的,首先,用户可以通过点击一个视频文件(例如,该视频文件的统一资源定位符(uniformresourcelocator,url)可以为http://movie.netitv.com.cn/abc.mp4),使终端设备向ldns发送第一请求消息。第一请求消息用于请求待传输数据和cdn服务器的ip地址,待传输数据即该视频文件的内容,cdn服务器即可以向终端设备提供该视频文件的内容且距离终端设备最近的cdn服务器。ldns接收到第一请求消息后,可以请求授权dns服务器解析该视频文件的域名(即movie.netitv.com.cn)。授权dns服务器根据该视频文件的域名确定该域名的cname(例如,movie.netitv.cdn.cn),向ldns返回该cname以及负责解析该cname的gslb的ip地址。ldns接收到该cname以及负责解析该cname的gslb的ip地址后,请求该gslb解析该cname。gslb根据该cname和该ldns的ip地址确定距离终端设备最近的slb,将该slb的ip地址返回给ldns。ldns向终端设备返回该slb的ip地址。从而,终端设备可以向该slb发送第一请求消息,以请求该slb提供服务。
在一种可能的设计中,上述视频文件对应的第一请求消息包括的字段如下所示:
gethttp://webpage.comhttp/1.1
host:vali.cp31.ott.cibntv.net
proxy-connection:keep-alive
user-agent:mozilla/5.0(windowsnt6.1;win64;x64)
x-requested-with:shockwaveflash/26.0.0.137
accept:*/*
real-server:ip/32bits
accept-encoding:gzip,deflate
accept-language:zh-cn,zh;q=0.8,en;q=0.6
其中,字段“gethttp://webpage.comhttp/1.1”用于表示采用的传输协议;
字段“host:vali.cp31.ott.cibntv.net”用于表示服务器信息;
字段“proxy-connection:keep-alive”用于表示连接状态为保持连接;
字段“user-agent:mozilla/5.0(windowsnt6.1;win64;x64)”用于表示浏览器版本;
字段“x-requested-with:shockwaveflash/26.0.0.137”用于表示播放器版本;
字段“accept:*/*”用于表示保留字段;
字段“real-server:ip/32bits”用于表示返回cdn服务器的32位ip地址;
字段“accept-encoding:gzip,deflate”用于表示压缩类型;
字段“accept-language:zh-cn,zh;q=0.8,en;q=0.6”用于表示语言类型。
302、负载均衡设备向cdn服务器发送第一请求消息。
slb接收终端设备发送的第一请求消息,根据负载均衡策略为该终端设备选择一个可以为该终端设备服务且距离该终端设备较近的cdn服务器。而后,slb将第一请求消息发送给该cdn服务器。其中,负载均衡策略可以包括以下至少一项:分布化的cdn服务器的网络状况、负载状况、内容存在性和网络时延。
在一种可能的设计中,slb可以通过ip隧道(tunnel)将第一请求消息发送给该cdn服务器。具体的,slb接收到来自终端设备的第一请求消息后,为第一请求消息封装可以跨网段的源ip地址(即slb的ip地址),然后以数据包形式将封装后的第一请求消息通过ip隧道转发到cdn服务器。该cdn服务器接到来自slb发送的第一请求消息后,按照slb的ip地址把请求结果返回给终端设备。这是由于第一请求消息的消息头中携带的目的ip地址为slb的ip地址,因此应该以slb的ip地址为源地址将请求结果返回给终端设备。由此,slb不再承担转发从cdn服务器返回ip数据包给终端设备的任务,减轻了slb的负载。
303、cdn服务器向终端设备发送第一响应消息,第一响应消息包括待传输数据的长度和cdn服务器的ip地址。
cdn服务器接收slb发送的第一请求消息。而后,cdn服务器可以通过首包向终端设备发送待传输数据的长度和cdn服务器的ip地址,即第一响应消息可以包括cdn服务器接收到第一请求消息后向终端设备发送的第一个数据包。
304、终端设备接收cdn服务器发送的第一响应消息。
需要说明的是,第一响应消息的源ip地址为slb的ip地址,即cdn服务器以slb的名义(即以slb的ip地址作为发送地址,终端设备的ip地址为目的地址)发出第一响应消息。虽然cdn服务器发送数据时绕过了slb而直接发送给终端设备,但对于终端设备来说,仍然认为自身接收到的数据报文是slb发送的,从而将对该数据报文的确认(acknowledgement,ack)报文发送给slb,而slb会再次将ack报文通过ip隧道转发给cdn服务器。也就是说,终端设备回复的ack报文必须经过slb后才能到达cdn服务器。在高并发请求时,容易导致slb成为热点设备(需要维持与大量终端设备的http连接)。基于上述原因,终端设备可以继续执行步骤305-309,以避免slb面临的高并发请求访问的压力和风险的问题。
305、若终端设备确定待传输数据的长度大于或等于预设阈值,终端设备根据cdn服务器的ip地址与cdn服务器建立连接。
需要说明的是,终端设备根据cdn服务器的ip地址与cdn服务器建立连接之前,终端设备可以接收cdn服务器发送的第二响应消息,第二响应消息包括待传输的数据中的部分数据。在一种可能的设计中,cdn服务器直接向终端设备发送第二响应消息,该第二响应消息的源ip地址为负载均衡设备的ip地址。在另一种可能的设计中,cdn服务器通过slb向终端设备发送第二响应消息。这样一来,终端设备与cdn服务器建立连接之前,可以从cdn服务器接收待传输的数据中的部分数据,能够达到数据传输快速启动的目的,从而提高了数据传输的效率。
根据步骤301中的举例,若终端设备确定该视频文件的内容的大小大于或等于预设阈值,则向cdn服务器发送连接建立请求,例如http请求,以建立新的tcp连接,并使用该新的tcp连接接收待传输数据的后续内容。待传输数据的后续内容即待传输的数据中未传输的数据,是指待传输的数据中除了第二响应消息中包括的部分数据之外的其他数据。其中,预设阈值可以是根据终端设备与cdn服务器或终端设备与slb之间的rtt确定的。预设阈值可以例如但不限于是100k、500k、1m、10m、100m等等。
306、终端设备与cdn服务器建立连接后,终端设备向cdn服务器发送第二请求消息,第二请求消息用于请求待传输的数据中未传输的数据。
在一种可能的设计中,终端设备可以通过断点续传技术获取待传输数据中未传输的数据。例如,终端设备可以向cdn服务器发送http获取请求(第二请求消息),http获取请求包括待传输的数据中未传输的数据的起始位置。举例来说,假设终端设备已经通过第二响应消息接收到1024字节(bytes)的数据,那么httpget请求的内容可以包括:range:1024+。其中,range:1024+用于指示将要请求待传输的数据中未传输的数据的起始位置。
307、cdn服务器向终端设备发送第三响应消息。
cdn服务器接收到第二请求消息后,可以向终端设备发送第三响应消息,终端设备接收cdn服务器发送的第三响应消息,第三响应消息包括待传输数据中未传输的数据,第三响应消息的源ip地址为cdn服务器的ip地址。
在一种可能的设计中,终端设备向cdn服务器发送第二请求消息之后的预设时间间隔内,终端设备可以执行步骤308或309,以保持数据传输的稳定,从而减少抖动。
308、终端设备在预设时间间隔内接收cdn服务器发送的第四响应消息。
在一种可能的设计中,终端设备向cdn服务器发送第二请求消息之后,终端设备可以在预设时间间隔内接收cdn服务器发送的第四响应消息。第四响应消息包括待传输的数据中的部分数据,第四响应消息的源ip地址为负载均衡设备的ip地址。即终端设备在预设时间间隔内接收cdn服务器以slb的名义发送的第四响应消息。其中,预设时间间隔是根据终端设备和cdn服务器之间的rtt确定的。举例来说,预设时间间隔可以是0.5rtt、1rtt、1.5rtt等等。
309、终端设备在预设时间间隔内接收负载均衡设备发送的第五响应消息。
在一种可能的设计中,终端设备向cdn服务器发送第二请求消息之后,终端设备在预设时间间隔内接收slb发送的第五响应消息,第五响应消息包括待传输的数据中的部分数据。即终端设备在预设时间间隔内接收cdn服务器通过slb发送的第四响应消息。其中,预设时间间隔是根据述终端设备和负载均衡设备之间的rtt确定的。举例来说,预设时间间隔可以是0.5rtt、1rtt、1.5rtt等等。
310、终端设备向负载均衡设备发送中断连接请求,中断连接请求用于指示断开终端设备与负载均衡设备的连接。
负载均衡设备接收终端设备发送的中断连接请求,负载均衡设备向终端设备发送中断连接响应,并断开负载均衡设备与终端设备之间的链路。
也就是说,终端设备与cdn服务器建立连接后,终端设备可以断开与slb的连接。这样一来,通过把终端设备与slb之间的数据通道切换到终端设备和cdn服务器之间新的数据传输通道的方式,卸载了slb的资源消耗,减少了slb的长连接的数目(即slb不用保持与大量终端设备的http连接),从而降低了slb面临高并发请求访问时的压力和风险。
另外,若终端设备确定待传输数据的长度小于预设阈值,终端设备执行步骤311。
311、若终端设备确定待传输数据的长度小于预设阈值,终端设备等候待传输的数据通过slb或cdn服务器传输完毕。
当终端设备请求小文件(小文件对应的待传输数据的长度小于预设阈值)的时候,由于终端设备与cdn服务器重新建立连接的时延较长,因此终端设备无需与cdn服务器建立连接,仅需等候小文件通过slb或cdn服务器传输完毕。其中,cdn服务器以slb的名义或者通过slb向终端设备发送小文件。这样一来,在小文件的传输过程中,不会导致下载时延过长。而且,由于小文件的传输时长较短,slb无需长时间保持与该终端设备的连接,即不会长时间占用slb,不会加重slb的负载问题。
需要说明的是,步骤301-311之间没有必然的执行先后顺序,本实施例对各步骤之间的执行先后顺序不作具体限定。
本申请实施例中,终端设备可以根据cdn服务器的ip地址与不同网段内的cdn服务器建立直接连接,相比nat和dr等传统负载均衡模式无法进行跨网段的负载均衡,本申请实施例能够在分布化cdn场景下进行有效的负载均衡。并且,基于上述方案,负载均衡设备可以将终端设备发送的第一请求消息转发给cdn服务器,以便终端设备与cdn服务器之间的数据传输可以快速启动。而且,终端设备与cdn服务器建立连接后,可以进一步从cdn服务器接收待传输的数据中的未传输的数据。这样一来,可以降低终端设备接收待传输数据时的传输时延,提高了数据传输效率。
上述主要从终端设备、cdn服务器和负载均衡设备的角度对本申请实施例提供的方案进行了介绍。可以理解的是,终端设备、cdn服务器和负载均衡设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对终端设备、cdn服务器和负载均衡设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图4示出了上述实施例中所涉及的终端设备4的一种可能的结构示意图一,终端设备包括:发送单元401、接收单元402和处理单元403。在本申请实施例中,发送单元401可以用于向负载均衡设备发送第一请求消息,第一请求消息用于请求待传输数据和cdn服务器的ip地址。接收单元402用于接收cdn服务器发送的第一响应消息,第一响应消息包括待传输数据的长度和cdn服务器的ip地址,第一响应消息的源ip地址为负载均衡设备的ip地址。处理单元403用于若确定待传输数据的长度大于或等于预设阈值,根据cdn服务器的ip地址与cdn服务器建立连接。发送单元401可以用于支持终端设备执行图3中的过程301、306和310。接收单元402用于支持终端设备执行图3中的以下过程中的至少一个:过程304、308、309和310。处理单元403用于支持终端设备执行图3中的过程305和311。
在一种可能的设计中,终端设备可以通过图5中的结构(装置或系统)来实现。
图5所示为本申请实施例提供的一种结构的示意图。结构500包括至少一个处理器501,通信总线502,存储器503以及至少一个通信接口504。
处理器501可以是一个中央处理单元(centralprocessingunit,cpu),微处理单元,通用处理单元,数字信号处理单元(digitalsignalprocessor,dsp),专用集成电路(application-specificintegratedcircuit,asic),现场可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。
通信总线502可包括一通路,在上述组件之间传送信息。
通信接口504,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(radioaccessnetwork,ran),无线局域网(wirelesslocalareanetworks,wlan)等。
存储器503可以是只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(randomaccessmemory,ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理单元相连接。存储器也可以和处理单元集成在一起。
其中,存储器503用于存储执行本申请方案的应用程序代码,并由处理器501来控制执行。处理器501用于执行存储器503中存储的应用程序代码,从而实现本申请方法中的功能。
在具体实现中,作为一种实施例,处理器501可以包括一个或多个cpu,例如图5中的cpu0和cpu1。
在具体实现中,作为一种实施例,结构500可以包括多个处理器,例如图5中的处理器501和处理器507。这些处理器中的每一个可以是一个单核(single-cpu)处理器,也可以是一个多核(multi-cpu)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,结构500还可以包括输出设备505和输入设备506。输出设备505和处理器501通信,可以以多种方式来显示信息。例如,输出设备505可以是液晶显示器(liquidcrystaldisplay,lcd),发光二级管(lightemittingdiode,led)显示设备,阴极射线管(cathoderaytube,crt)显示设备,或投影仪(projector)等。输入设备506和处理器501通信,可以以多种方式接受用户的输入。例如,输入设备506可以是鼠标、键盘、触摸屏设备或传感设备等。
在具体实现中,结构500可以是台式机、便携式电脑、网络服务器、掌上电脑(personaldigitalassistant,pda)、移动手机、平板电脑、无线终端设备、通信设备、嵌入式设备或有图5中类似结构的设备。本申请实施例不限定结构500的类型。
其中,收发器可以用于执行上述方法实施例中终端设备执行的各种信息收发。
处理器501可以用于执行上述方法实施例中终端设备除了信息收发之外的其他处理。
在采用对应各个功能划分各个功能模块的情况下,图6示出了上述实施例中所涉及的cdn服务器6的一种可能的结构示意图一,cdn服务器包括:接收单元601和发送单元602。在本申请实施例中,接收单元601,用于接收负载均衡设备发送的第一请求消息,第一请求消息用于请求待传输数据和cdn服务器的ip地址;发送单元602,用于向终端设备发送第一响应消息,第一响应消息包括待传输数据的长度和cdn服务器的ip地址,使终端设备根据待传输数据的长度确定是否与cdn服务器建立连接。发送单元602用于支持cdn服务器执行图3中的过程303和307。
在一种可能的设计中,cdn服务器可以通过图7中的结构(装置或系统)来实现。
图7所示为本申请实施例提供的一种结构的示意图。结构700包括至少一个处理器701,通信总线702,存储器703以及至少一个通信接口704。
处理器701可以是一个cpu,微处理单元,通用处理单元,dsp,asic,fpga或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。
通信总线702可包括一通路,在上述组件之间传送信息。
通信接口704,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,ran,wlan等。
存储器703可以是rom或可存储静态信息和指令的其他类型的静态存储设备,ram或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom、cd-rom或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理单元相连接。存储器也可以和处理单元集成在一起。
其中,存储器703用于存储执行本申请方案的应用程序代码,并由处理器701来控制执行。处理器701用于执行存储器703中存储的应用程序代码,从而实现本申请方法中的功能。
在具体实现中,作为一种实施例,处理器701可以包括一个或多个cpu,例如图7中的cpu0和cpu1。
在具体实现中,作为一种实施例,结构700可以包括多个处理器,例如图7中的处理器701和处理器705。这些处理器中的每一个可以是一个单核处理器,也可以是一个多核处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
其中,收发器可以用于执行上述方法实施例中cdn服务器执行的各种信息收发。
处理器701可以用于执行上述方法实施例中cdn服务器除了信息收发之外的其他处理。
在采用对应各个功能划分各个功能模块的情况下,图8示出了上述实施例中所涉及的负载均衡设备8的一种可能的结构示意图一,负载均衡设备包括:接收单元801、发送单元802和处理单元803。在本申请实施例中,接收单元801,用于接收终端设备发送的第一请求消息,该第一请求消息用于请求待传输数据和cdn服务器的ip地址。发送单元802,用于向该cdn服务器发送该第一请求消息,使该cdn服务器向该终端设备发送第一响应消息,该第一响应消息包括待传输数据的长度和该cdn服务器的ip地址。处理单元803用于断开负载均衡设备与终端设备之间的链路。其中,发送单元802用于支持负载均衡设备执行图3中的过程302。
在一种可能的设计中,负载均衡设备可以通过图9中的结构(装置或系统)来实现。
图9所示为本申请实施例提供的一种结构的示意图。结构900包括至少一个处理器901,通信总线902,存储器903以及至少一个通信接口904。
处理器901可以是一个cpu,微处理单元,通用处理单元,dsp,asic,fpga或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。
通信总线902可包括一通路,在上述组件之间传送信息。
通信接口904,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,ran,wlan等。
存储器903可以是rom或可存储静态信息和指令的其他类型的静态存储设备,ram或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom、cd-rom或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理单元相连接。存储器也可以和处理单元集成在一起。
其中,存储器903用于存储执行本申请方案的应用程序代码,并由处理器901来控制执行。处理器901用于执行存储器903中存储的应用程序代码,从而实现本申请方法中的功能。
在具体实现中,作为一种实施例,处理器901可以包括一个或多个cpu,例如图9中的cpu0和cpu1。
在具体实现中,作为一种实施例,结构900可以包括多个处理器,例如图9中的处理器901和处理器905。这些处理器中的每一个可以是一个单核处理器,也可以是一个多核处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
其中,收发器可以用于执行上述方法实施例中负载均衡设备执行的各种信息收发。
处理器901可以用于执行上述方法实施例中负载均衡设备除了信息收发之外的其他处理。
本申请实施例还提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述任一方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一方法。
本申请实施例还提供了一种装置,该装置以芯片的产品形态存在,该装置包括处理器、存储器和收发组件,收发组件包括输入输出电路,存储器用于存储计算机执行指令,处理器通过执行存储器中存储的计算机执行指令实现上述任一方法。该情况下,执行本申请实施例提供的方法的执行主体可以为芯片。
本申请实施例还提供了一种通信系统,至少包括:第一设备、第二设备和第三设备,其中,第一设备可以为上述实施例提供的任意一种终端设备,第二设备可以为上述实施例提供的任意一种负载均衡设备、第三设备可以为上述实施例提供的任意一种cdn服务器。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请的保护范围之内。
本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理单元以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。