一种通信方法及服务器、客户端与流程

文档序号:17659680发布日期:2019-05-15 22:17阅读:246来源:国知局

本申请涉及电子信息领域,尤其涉及一种通信方法及服务器、客户端。



背景技术:

分布式存储系统是将数据分散存储在多台独立的设备上的存储系统。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。

随着分布式存储系统日益广泛的应用,对分布式系统的性能提出了更高的要求,通信时延是衡量分布式系统的性能的重要指标。

如何在不降低分布式存储系统的稳定性的前提下,降低分布式系统的通信时延,成为目前亟待解决的问题。



技术实现要素:

本申请提供了一种通信方法及服务器、客户端,目的在于解决如何在不降低分布式存储系统的稳定性的前提下,降低分布式系统的通信时延的问题。

为了实现上述目的,本申请提供了以下技术方案:

一种通信方法,包括:

接收通信请求,所述通信请求中包括通信类型参数,所述通信类型参数用于指示通信的类型;

在所述通信类型参数指示自适应类型的情况下,如果网络不拥塞,使用rdma协议通信。

可选的,如果所述网络拥塞,使用tcp通信。

可选的,确定所述网络拥塞的方法包括:

如果所述网络中的数据传输满足预设条件,则确定所述网络拥塞;

其中,所述预设条件包括:数据传输的时延大于预设的时长,或者,数据传输的超时错误的数量大于预设的数值,或者,数据传输的时延大于预设的时长并且数据传输的超时错误的数量大于预设的数值。

可选的,所述通信类型参数用于指示tcp、rdma协议或所述自适应类型;

所述方法还包括:

在所述通信类型参数指示所述tcp的情况下,使用所述tcp通信;

在所述通信类型参数指示所述rdma协议的情况下,使用所述rdma协议通信。

一种通信方法,包括:

依据通信请求的业务类型,确定通信类型参数为tcp、rdma协议或自适应类型;

发送包括所述通信类型参数的通信请求,所述通信请求用于接收方在所述通信类型参数指示自适应类型的情况下,如果网络不拥塞,使用rdma协议通信。

一种通信方法,包括:

判断网络是否拥塞;

在所述网络拥塞的情况下,使用tcp进行通信,在所述网络不拥塞的情况下,使用rdma协议进行通信。

可选的,所述判断网络是否拥塞包括:

判断所述网络中的数据传输满足预设条件,如果是,则确定所述网络拥塞,如果否,则确定所述网络不拥塞;

其中,所述预设条件包括:数据传输的时延大于预设的时长,或者,数据传输的超时错误的数量大于预设的数值,或者,数据传输的时延大于预设的时长并且数据传输的超时错误的数量大于预设的数值。

一种服务器,包括:

处理器和接收器;

所述接收器用于,接收通信请求,所述通信请求中包括通信类型参数,所述通信类型参数用于指示通信的类型;

所述处理器用于,在所述通信类型参数指示自适应类型的情况下,如果网络不拥塞,使用rdma协议通信。

可选的,所述处理器还用于:

如果所述网络拥塞,使用tcp通信。

可选的,所述处理器还用于:

如果所述网络中的数据传输满足预设条件,则确定所述网络拥塞;

其中,所述预设条件包括:数据传输的时延大于预设的时长,或者,数据传输的超时错误的数量大于预设的数值,或者,数据传输的时延大于预设的时长并且数据传输的超时错误的数量大于预设的数值。

可选的,所述通信类型参数用于指示tcp、rdma协议或所述自适应类型;

所述处理器还用于:

在所述通信类型参数指示所述tcp的情况下,使用所述tcp通信;

在所述通信类型参数指示所述rdma协议的情况下,使用所述rdma协议通信。

可选的,还包括第一网卡和第二网卡;

所述第一网卡用于传输tcp数据,所述第二网卡用于传输所述tcp数据和rdma协议数据;或者,

所述第一网卡用于传输所述tcp数据,所述第二网卡用于传输所述rdma协议数据;或者,

所述第一网卡用于传输所述tcp数据和所述rdma协议数据,所述第二网卡用于传输所述tcp数据和所述rdma协议数据。

一种客户端,包括:

处理器,用于依据通信请求的业务类型,确定通信类型参数为tcp、rdma协议或自适应类型;

发送器,用于发送包括所述通信类型参数的通信请求,所述通信请求用于接收方在所述通信类型参数指示自适应类型的情况下,如果网络不拥塞,使用rdma协议通信。

一种服务器,包括:

处理器,用于判断网络是否拥塞;

在所述网络拥塞的情况下,使用tcp进行通信,在所述网络不拥塞的情况下,使用rdma协议进行通信。

可选的,所述处理器具体用于:

判断所述网络中的数据传输满足预设条件,如果是,则确定所述网络拥塞,如果否,则确定所述网络不拥塞;

其中,所述预设条件包括:数据传输的时延大于预设的时长,或者,数据传输的超时错误的数量大于预设的数值,或者,数据传输的时延大于预设的时长并且数据传输的超时错误的数量大于预设的数值。

一种计算机可读介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如下功能:接收通信请求,所述通信请求中包括通信类型参数,所述通信类型参数用于指示通信的类型;在所述通信类型参数指示自适应类型的情况下,如果网络不拥塞,使用rdma协议通信。

一种计算机可读介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如下功能:依据通信请求的业务类型,确定通信类型参数为tcp、rdma协议或自适应类型;发送包括所述通信类型参数的通信请求,所述通信请求用于接收方在所述通信类型参数指示自适应类型的情况下,如果网络不拥塞,使用rdma协议通信。

一种计算机可读介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如下功能:判断网络是否拥塞;在所述网络拥塞的情况下,使用tcp进行通信,在所述网络不拥塞的情况下,使用rdma协议进行通信。

本申请所述的通信方法,分布式系统中的服务器在网络拥塞的情况下,使用稳定性较高的tcp进行通信,而在网络不拥塞的情况下,使用时延较低的rdma协议进行通信,因为网络的情况良好,所以,能够弥补rdma稳定性较低的缺点。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为分布式存储系统的数据的输入或输出操作过程的示意图;

图2为本申请实施例公开的一种通信方法的流程图;

图3为本申请实施例公开的一种服务器的结构示意图;

图4为本申请实施例公开的又一种通信方法的流程图;

图5为本申请实施例公开的客户端以及服务器的结构示意图。

具体实施方式

分布式存储系统的数据的输入或输出操作过程如图1所示:客户端与服务器之间通常使用远程过程调用(remoteprocedurecall,rpc)协议通信,即客户端向服务器发送包括rpc参数的通信请求,服务器依据rpc参数对分布式存储系统中存储的数据进行相应的操作。

本申请的实施例中公开的通信方法,在服务器使用rpc协议通信(不限定于rpc协议通信)的过程中,依据网络的状态,自适应选择传输控制协议(transmissioncontrolprotocol,tcp)或者全称远程直接数据存取(remotedirectmemoryaccess,rdma)协议,以在网络状态良好的情况下,使用rdma协议进行通信,而在网络状态不好的情况下,使用tcp进行通信,从而实现在不降低分布式存储系统的稳定性的前提下,降低分布式系统的通信时延的目的。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图2为本申请实施例公开的一种通信方法,应用在图1所示的服务器上,包括以下过程:

s201:判断网络是否拥塞,如果是,执行s202,如果否,执行s203。

因为分布式存储系统对于数据传输的时延比较敏感,所以,具体的,通过判断网络中的数据传输是否满足预设条件,来判断网络是否拥塞。

其中,预设条件包括:数据传输的时延大于预设的时长,或者,数据传输的超时错误的数量大于预设的数值,或者,数据传输的时延大于预设的时长并且数据传输的超时错误的数量大于预设的数值。如果满足上述预设条件,则确定网络拥塞。

可见,如果满足数据传输的时延较大以及超时错误较多中的任意一项,则说明网络处于拥塞状态。

结合图1,服务器可以记录历史数据的发送和接收使用的时间,从而得到数据传输的时延。服务器还可以从rpc组件反馈的网络错误码中,查询超时错误,并统计超时错误的次数。其中,网络错误码由rpc组件在每次数据传输失败的情况下生成,用于指示数据传输失败的原因。不同的错误码对应不同的失败原因,超时为其中一种失败原因。

通过以上预设条件判断网络拥塞仅为一种实现方式,还可以使用现有技术中其它方式判断网络是否拥塞。

可选的,可以以预设周期执行s201。

s202:使用tcp进行通信。

tcp泛指基于tcp/ip协议体系的网络通信技术,特点为稳定性高但时延大。使用tcp链路进行通信是指,通信设备之间,即图1所示的服务器与客户端之间,使用tcp进行数据的传输。

s203:使用rdma协议进行通信。

rdma协议为一种远程内存访问技术,具有较低的通信延时和开销,但稳定性比tcp差。

从图2可以看出,分布式系统中的服务器在网络拥塞的情况下,使用稳定性较高的tcp进行通信,而在网络不拥塞的情况下,使用时延较低的rdma协议进行通信,因为网络的情况良好,所以,能够弥补rdma稳定性较低的缺点。

在以预设周期执行s201的情况下,有可能,上一个周期使用tcp(或rdma协议)进行通信,而当前周期网络状态发生了变化,从tcp(或rdma协议)切换到rdma协议(或tcp)进行通信。

可见,图2所示的方法,能够在不降低稳定性的情况下,降低通信的时延,从而提高分布式存储系统的通信性能。

需要说明的是,图2中,判断网络是否拥塞的过程中,需要服务器获取历史数据的发送和接收使用的时间或者网络错误码,而在服务器的刚启动后,还没有进行过数据传输,在此情况下,服务器可以默认网络拥塞或者不拥塞。

图3所示为具有图2所示功能的服务器的结构,服务器包括处理器和网卡。

网卡的设置方式包括但不限于图3所示的三种情况:

第一种情况:网卡1用于传输tcp数据,网卡2用于传输tcp数据和rdma协议数据。这种情况下,两条tcp链路互为保护链路,对稳定性要求较高的分布式存储系统可以采用这种方案。

第二种情况:网卡1用于传输tcp数据,网卡2用于传输rdma协议数据。对时延要求较高的分布式存储系统可以采用这种方案。

第三种情况:网卡1用于传输tcp数据和rdma协议数据,网卡2用于传输tcp数据和rdma协议数据。网卡1和网卡2的链路互为保护链路,这种情况兼顾稳定性和低时延,是一种是对稳定性和性能的折中方案。

图3中,可以依据业务的实际需求,分配用于传输tcp数据和rdma协议数据的流量,例如,对于时延敏感的业务,例如股票价格的查询业务,则为rdma协议数据分配总流量的三分之二。

图3中,处理器用于判断网络是否拥塞,并根据判断结果,选择相应的网卡执行s202或者s203。例如,使用rdma协议进行通信,则对于第一种情况,处理器选择网卡2传输rdma数据。对于第三种情况,处理器选择流量较大,即带宽较大的网卡传输rdma数据。

基于图2所示的方法,本申请实施例还公开的又一种通信方法,如图4所示,将图2所示的方法与客户端指定通信方法的方式结合,形成一种更为全面的通信方法。图4所示方法包括以下步骤:

s401:客户端向服务器发送通信请求。

其中,通信请求中包括通信类型参数,用于指示tcp、rdma协议或自适应类型。以rpc通信请求为例,通信请求的格式为:

rpc通信(选项,请求消息,响应消息,回调函数)

其中,选项即为通信类型参数。

客户端可以依据通信请求的业务类型,确定通信类型参数为tcp、rdma协议或自适应类型。具体的,针对延时敏感的业务,例如要求极低时延的数据查询业务,通信类型参数为rdma协议。针对延时不敏感的业务,例如后台垃圾回收,通信类型参数为tcp。针对延时和稳定性兼顾的业务,例如存储业务读写路径,通信类型参数为自适应类型。

s402:服务器接收到通信请求后,依据通信类型参数,进行相应的通信过程。

具体的,如果通信类型参数为tcp,则使用tcp进行通信,如果通信类型参数为rdma协议,则使用rdma协议进行通信,如果通信类型参数为自适应,则执行图2所示的过程。

从图4所示的过程可以看出,服务器为客户端提供了统一的通信接口,依据客户端发送的通信请求,选择相应的通信方式。tcp和rdma协议由于是底层消息通信技术,所以编程接口差异很大,在数据传输层面有自己的控制流,而这些差异隐藏在服务器内部,并没有暴露给客户端。客户端可以依据义务需求指定通信方式,也可以交给服务器依据网络状态自适应调整通信方式,所以,能够最大程度地兼顾网络的稳定性和低时延的需求。

图5为图4所示的客户端以及服务器的结构。

客户端包括处理器和发送器。其中,处理器用于依据通信请求的业务类型,确定通信类型参数为tcp、rdma协议或自适应。处理器用于发送包括通信类型参数的通信请求。可选的,客户端还可以包括接收器,用于接收通信请求的响应消息。

服务器包括处理器、接收器和网卡。其中,网卡的设置方式可以参见图3所示,这里不再赘述。接收器用于接收包括通信类型参数的通信请求,处理器用于依据通信类型参数,进行相应的通信过程。具体可参见图4。可选的,服务器还可以包括发送器,用于发送通信请求的响应消息。

图5所示的客户端和服务器,兼顾了分布式存储系统对性能和稳定性的要求,即可以根据网络状态自适应的采取不同通信方法,也可以根据用户的策略选用适当的通信方法。灵活度高、稳定性好、高性能,很好地满足了存储的需求。

本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1