流量切换方法、装置、设备及计算机可读存储介质与流程

文档序号:17320977发布日期:2019-04-05 21:32阅读:266来源:国知局
流量切换方法、装置、设备及计算机可读存储介质与流程

本发明涉及智能运维技术领域,尤其涉及一种流量切换方法、装置、设备及计算机可读存储介质。



背景技术:

在现有的分布式技术架构中,服务请求方通常采用单进程固定发送通道,并部署多个服务请求方来近似按比例控制分配流量。例如,服务请求方一共需要部署10个进程,其中,4个进程固定使用消息通道a,6个进程固定使用消息通道b,也即40%的进程选择消息通道a发送消息,而60%的进程选择消息通道b发送消息。若需要将流量从消息通道a切换到消息通道b,则只需要逐渐减少使用消息通道a的进程数量,直到所有进程全部使用通道b则完成流量切换。

由上可知,现有技术中是通过调整使用消息通道的进程数量来实现流量切换的,虽然实现了流量在不同消息通道之间的切换,但是要进行流量切换时,需要修改配置并重新启动后才实现切换,切换过程有中断,因此,无法实现对构成流量的每一条消息在不同消息通道之间的平滑、精确切换。



技术实现要素:

本发明的主要目的在于提供一种流量切换方法、装置、设备及计算机可读存储介质,旨在解决现有技术无法实现对构成流量的每一条消息在不同消息通道之间的平滑、精确切换。

为实现上述目的,本发明提供一种流量切换方法,所述流量切换方法包括以下步骤:

分别建立服务请求方和服务提供方与各消息通道之间的网络连接;

获取本次服务请求方调用服务的流量分配比值;

根据所述流量分配比值,采用预设的通道选择算法选择本次服务请求方发送请求消息的对应消息通道;

通过选择的消息通道,将所述请求消息从服务请求方发送至服务提供方。

可选地,在所述获取本次服务请求方调用服务的流量分配比值的步骤之前,还包括:

从第三方配置中心动态获取服务流量分配表并缓存至本地;

所述获取本次服务请求方调用服务的流量分配比值包括:

查找所述服务流量分配表,以获取本次服务请求方调用服务的流量分配比值,其中,所述流量分配比值为服务请求方流量在各消息通道的分配比值。

可选地,所述查找所述服务流量分配表,以获取本次服务请求方调用服务的流量分配比值包括:

根据服务请求方对应的子系统以及该子系统所在数据中心,查找所述服务流量分配表,以获取本次服务请求方调用服务的流量分配比值。

可选地,所述获取本次服务请求方调用服务的流量分配比值包括:

根据服务请求方对应的子系统以及该子系统所在数据中心,查找第三方配置中心的服务流量分配表,以动态获取本次服务请求方调用服务的流量分配比值,其中,所述流量分配比值为服务请求方流量在各消息通道的分配比值。

可选地,所述根据所述流量分配比值,采用预设的通道选择算法选择本次服务请求方发送请求消息的对应消息通道包括:

判断所述流量分配比值中是否存在等于1的分配比值;

若存在,则将等于1的分配比值对应消息通道作为本次服务请求方发送的所有请求消息的对应消息通道;

若不存在,则将大于0且小于1的分配比值对应消息通道作为本次服务请求方发送请求消息的对应消息通道;

若本次服务请求方发送请求消息的对应消息通道存在多个,则基于预设计算规则,确定本次服务请求方发送的每一条请求消息所对应的消息通道。

可选地,所述若本次服务请求方发送请求消息的对应消息通道存在多个,则基于预设计算规则,确定本次服务请求方发送的每一条请求消息所对应的消息通道包括:

若本次服务请求方发送请求消息的对应消息通道存在多个,则累计本次服务请求方发送的每一条请求消息,得到请求消息总数;

当所述请求消息总数达到预置数值时,将所述请求消息总数重置为零,并重新累计本次服务请求方发送的每一条请求消息;

其中,在每次开始累计请求消息时,以选定的消息通道中的任一消息通道作为本次服务请求方发送请求消息的对应消息通道;

在每次累计请求消息的过程中,判断当前消息通道所流入的请求消息数量与所述预置数值之间的比值是否达到当前消息通道对应的流量分配比值;

若是,则将另一消息通道作为本次服务请求方发送请求消息的对应消息通道,并继续判断重新确定的当前消息通道所流入的请求消息数量与所述预置数值之间的比值是否达到当前消息通道对应的流量分配比值。

进一步地,为实现上述目的,本发明还提供一种流量切换装置,所述流量切换装置包括:

连接建立模块,用于分别建立服务请求方和服务提供方与各消息通道之间的网络连接;

比值获取模块,用于获取本次服务请求方调用服务的流量分配比值;

通道选择模块,用于根据所述流量分配比值,采用预设的通道选择算法选择本次服务请求方发送请求消息的对应消息通道;

流量传输模块,用于通过选择的消息通道,将所述请求消息从服务请求方发送至服务提供方。

可选地,所述比值获取模块还用于:

从第三方配置中心动态获取服务流量分配表并缓存至本地;

查找所述服务流量分配表,以获取本次服务请求方调用服务的流量分配比值,其中,所述流量分配比值为服务请求方流量在各消息通道的分配比值。

可选地,所述比值获取模块还用于:

根据服务请求方对应的子系统以及该子系统所在数据中心,查找所述服务流量分配表,以获取本次服务请求方调用服务的流量分配比值。

可选地,所述比值获取模块还用于:

根据服务请求方对应的子系统以及该子系统所在数据中心,查找第三方配置中心的服务流量分配表,以动态获取本次服务请求方调用服务的流量分配比值,其中,所述流量分配比值为服务请求方流量在各消息通道的分配比值。

可选地,所述通道选择模块用于:

判断所述流量分配比值中是否存在等于1的分配比值;

若存在,则将等于1的分配比值对应消息通道作为本次服务请求方发送的所有请求消息的对应消息通道;

若不存在,则将大于0且小于1的分配比值对应消息通道作为本次服务请求方发送请求消息的对应消息通道;

若本次服务请求方发送请求消息的对应消息通道存在多个,则基于预设计算规则,确定本次服务请求方发送的每一条请求消息所对应的消息通道。

可选地,所述通道选择模块还用于:

若本次服务请求方发送请求消息的对应消息通道存在多个,则累计本次服务请求方发送的每一条请求消息,得到请求消息总数;

当所述请求消息总数达到预置数值时,将所述请求消息总数重置为零,并重新累计本次服务请求方发送的每一条请求消息;

其中,在每次开始累计请求消息时,以选定的消息通道中的任一消息通道作为本次服务请求方发送请求消息的对应消息通道;

在每次累计请求消息的过程中,判断当前消息通道所流入的请求消息数量与所述预置数值之间的比值是否达到当前消息通道对应的流量分配比值;

若是,则将另一消息通道作为本次服务请求方发送请求消息的对应消息通道,并继续判断重新确定的当前消息通道所流入的请求消息数量与所述预置数值之间的比值是否达到当前消息通道对应的流量分配比值。

进一步地,为实现上述目的,本发明还提供一种流量切换设备,所述流量切换设备包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的流量切换程序,所述流量切换程序被所述处理器执行时实现如上述任一项所述的流量切换方法的步骤。

进一步地,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有流量切换程序,所述流量切换程序被处理器执行时实现如上述任一项所述的流量切换方法的步骤。

本发明通过消息通道,分别搭建服务请求方、服务提供方与各消息通道的网络连接,以建立起流量的多个传输通道,进而便于对构成流量的每一条消息在不同消息通道之间进行切换。此外,进一步获取每一次服务请求方调用服务的流量分配比值,以便根据流量分配比值,确定每一次服务请求方发送的每一条请求消息所对应的消息通道,通过该消息通道将请求消息从服务请求方发送至服务提供方,进而实现对每一条消息在不同消息通道之间的流量切换,由于无须修改配置后重启,整个切换过程更平滑,并且通过流量分配比值控制流量切换,而不是进程数,使得流量切换更加精确。

附图说明

图1为本发明流量切换设备实施例方案涉及的设备硬件运行环境的结构示意图;

图2为本发明流量切换方法一实施例的流程示意图;

图3为本发明流量切换方法一实施例中服务请求方与服务提供方之间的网络连接架构示意图;

图4为图2中步骤s30一实施例的流程示意图;

图5为本发明流量切换装置一的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

本发明提供一种流量切换设备。

参照图1,图1为本发明流量切换设备实施例方案涉及的设备硬件运行环境的结构示意图。

本发明流量切换设备优选部署在分布式架构系统内,用于实现分布式系统内的流量切换控制。

如图1所示,流量切换设备可以包括:处理器1001,例如cpu,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储设备。需要说明的是,处理器1001采用嵌入式芯片方式安装在流量切换设备内。

本领域技术人员可以理解,图1中示出的流量切换设备的硬件结构并不构成对流量切换设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及流量切换程序。其中,操作系统是管理和控制流量切换设备与软件资源的程序,支持网络通信模块、用户接口模块、流量切换程序以及其他程序或软件的运行;网络通信模块用于管理和控制网络接口1004;用户接口模块用于管理和控制用户接口1003。

在图1所示的流量切换设备硬件结构中,网络接口1004主要用于连接系统后台,与系统后台进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;流量切换设备通过处理器1001调用存储器1005中存储的流量切换程序,并执行下文所述的流量切换方法。

基于上述流量切换设备的设备硬件运行环境,提出本发明流量切换方法的以下各实施例。

本发明流量切换方法优选应用于分布式系统,同一分布式系统部署有多个子系统,子系统为用于实现具体业务功能的应用程序,比如查询子系统可实现查询业务、转账子系统可实现转账业务、贷款子系统可实现贷款业务。此外,分布式系统采用多数据中心方式部署子系统,同一子系统可以部署在一个或多个数据中心内。

为便于管理,在分布式系统中具体以服务来表示原子业务,比如扣款服务表示扣款业务、贷款服务表示贷款业务等。不同服务通过服务标识(topic)进行区分。执行业务也即相当于实现对应的服务,也即涉及子系统间的调用,因而会在不同子系统之间产生流量。

参照图2,图2为本发明流量切换方法一实施例的流程示意图。本实施例中,所述流量切换方法包括以下步骤:

步骤s10,分别建立服务请求方和服务提供方与各消息通道之间的网络连接;

本实施例中,服务的实现需要建立服务请求方和服务提供方之间的网络连接,以供传输流量,实现二者之间的交互。

本实施例中,服务请求方指服务的消费者(服务的调用方,对应某个子系统),服务提供方指服务的提供者(服务的被调用方,对应某个子系统)。服务请求方将请求消息(相当于调用消息)发送至服务提供方,进而调用服务提供方进行业务处理,服务提供方返回响应(或者不返回响应)。

基于上述分布式系统的说明可知,在分布式系统中,不同子系统可能会使用相同的服务,比如存款子系统、贷款子系统、转账子系统都需要使用取款服务(比如由取款子系统提供取款服务),也即,存款子系统与取款子系统之间、贷款子系统与取款子系统之间、转账子系统与取款子系统之间都存在流量传输。为实现流量控制,因而需要对流量传输进行切换。

本实施例优选在服务请求方与服务提供方之间,通过多条消息通道来实现二者之间的网络连接,同时进一步实现对流量传输进行切换控制。

如图3所示,假设有消息通道a、b可用于实现服务请求方与服务提供方之间的网络连接,优选在服务请求方与服务提供方各自启动时,分别与消息通道a、消息通道b建立一条网络连接,从而通过消息通道a和/或消息通道b,以实现服务请求方与服务提供方之间的网络连接。

本实施例中,消息通道指对请求消息和响应消息进行传输的通道。消息通道指任何可以用来传输消息的渠道,包括但不限于如rocketmq(messagequeue)、activemq、rabbitmq等消息队列(也即消息中间件),或者是可提供消息传输的物理网络、消息中间件物理硬件产品等。

本实施例中,服务请求方建立与消息通道之间的连接,具体是指服务请求方与消息通道之间建立物理连接,进而使得服务请求方可通过该消息通道与服务提供方之间在物理上可进行消息流转,但并不表示一定有消息流通。而服务提供方建立与消息通道之间的连接,具体是指服务提供方与消息通道之间建立物理连接,进而使得服务提供方可通过该消息通道在物理上可接收服务请求方的调用消息。

步骤s20,获取本次服务请求方调用服务的流量分配比值;

本实施例中,在建立好服务请求方与服务提供方之间的网络连接后,服务请求方即可向服务提供方发送请求消息,进而服务提供方也可向服务请求方返回响应消息。为实现对二者之间流量传输控制,因而需要进行流量切换,本实施例优选通过切换流量传输通道以实现流量切换。

为实现对流量的精确切换控制,本实施例优选基于流量分配比值来对流量切换进行控制。流量分配比值为服务请求方流量在各消息通道的分配比值。也即流量分配比值是百分比数值,其数值大小在[0,1]之间,同一服务请求方调用相同服务的流量,其在各消息通道上的分配比值之和等于1(100%)。

本实施例对于流量分配比值的配置方式不限。例如,在服务请求方的配置文件中配置静态的流量分配比值,也可以是由独立的第三方配置动态的流量分配比值。

步骤s30,根据所述流量分配比值,采用预设的通道选择算法选择本次服务请求方发送请求消息的对应消息通道;

本实施例中,由于服务请求方与服务提供方之间设有多条消息通道,而流量精确切换需要确定每一条消息的输出通道,也即需要进行消息通道选择。

由于消息由服务请求方所发起,因此本实施例优选由服务请求方作为消息通道的选择方,以决定每一条即将发送的请求消息具体采用哪一条消息通道而传输至服务提供方。

本实施例优选根据获得的本次服务请求方调用服务的流量分配比值,采用预设的通道选择算法选择本次服务请求方发送请求消息的对应消息通道。本实施例对于通道选择算法的具体实现过程不限。

步骤s40,通过选择的消息通道,将所述请求消息从服务请求方发送至服务提供方。

本实施例中,在确定了消息的发送通道后,即可将服务请求方发起的请求消息,通过选定的消息通道传送给服务提供方,服务提供方接收请求消息后进行业务处理,然后再将响应消息按原消息通道原路返回给服务请求方。

需要进一步说明的是,服务提供方与服务请求方需要引入一致的api,以进行与服务调用相关的消息的发送接收处理。

本实施例通过消息通道,分别搭建服务请求方、服务提供方与各消息通道的网络连接,以建立起流量的多个传输通道,进而便于对构成流量的每一条消息在不同消息通道之间进行切换。此外,进一步获取每一次服务请求方调用服务的流量分配比值,以便根据流量分配比值,确定每一次服务请求方发送的每一条请求消息所对应的消息通道,通过该消息通道将请求消息从服务请求方发送至服务提供方,进而实现对每一条消息在不同消息通道之间的流量切换,由于无须修改配置后重启,整个切换过程更平滑,并且通过流量分配比值控制流量切换,而不是进程数,使得流量切换更加精确。

进一步地,由于本发明通过消息通道,搭建服务请求方、服务提供方分别与各消息通道的网络连接,以建立起流量的多个传输通道,进而可通过配置流量分配比值以对流量切换进行控制。

因此,在一实施例中,为进一步便于对流量分配比值进行集中控制,同时避免调整流量分配比值时对服务请求方或提供方产生影响,因此,优选由独立的第三方配置中心配置流量分配比值,而对流量分配比值的具体数值优选由管理人员根据需要进行动态配置。

另外,由于本发明采用的是通过服务请求方与服务提供方之间搭建的网络连接来传输流量,因而可从子系统级别粒度或数据中心级别粒度来设置流量分配比值,进而可实现对流量的精确切换控制。

例如,按不同子系统切换流量。比如存款子系统、贷款子系统、转账子系统调用取款服务,并通过消息通道a、b传输流量,则可设置存款子系统的流量分配比值:消息通道a的分配比值为0.3、消息通道b的分配比值为0.7(也即30%的流量走消息通道a,而70%的流量走消息通道b);贷款子系统的流量分配比值:消息通道a的分配比值为0.5、消息通道b的分配比值为0.5;转账子系统的流量分配比值:消息通道a的分配比值为0.2、消息通道b的分配比值为0.8。

又例如,按不同数据中心级别切换流量,比如,若存款子系统在数据中心1的流量走消息通道a,在数据中心2的流量走消息通道b,则可设置存款子系统在不同数据中心内的流量分配比值:数据中心1内消息通道a的分配比值为1,消息通道b的分配比值为0;数据中心2内消息通道a的分配比值为0,消息通道b的分配比值为1。

由上述说明可知,本实施例的流量分配比值具有以下优点:

(1)过程平滑:根据需要动态调整流量分配比值,进而可实现流量切换过程的平滑调整,而不会因流量切换而导致流量传输量的突变。

(2)过程精确,风险可控:第一方面,可由小至大调整流量分配比值,若流量切换过程中出现不符合预期的情况,则不至于大批量影响业务调用。第二方面,可以按不同子系统切换流量,即可将多个子系统逐个地进行流量切换,避免所有子系统使用同样的流量分配比值而影响面太广。第三方面,可以按数据中心级别切换流量,比如某子系统在数据中心1的流量走通道a,在另一个数据中心2的流量走通道b。

此外,根据子系统级别以及数据中心级别只获取当前服务所必要的流量分配比值,进而可避免对分布式系统带宽与计算资源的浪费。

(3)控制集中:主导流量切换的管理人员可通过修改配置中心的数据以集中调整流量分配比值,且该调整过程不需要服务请求方或者服务提供方更改任何配置信息。

(4)弹性强:由于本实施例的流量分配比值由第三方配置中心进行配置,也即可基于分布式系统的实际情况进行配置,因而此方式既适合小企业少量系统流量切换的场景,同样适合成千上万个系统流量切换的场景。

(5)边界敏感:由于本实施例的流量分配比值由第三方配置中心人为进行配置,因而可保证流量全部准确切换至对应的消息通道进行传输,而不存在流量跑偏的情形。例如,若采用随机算法确定流量分配比值,则难以保证同一流量,其在各消息通道上的分配比值之和等于1,同时也难以保证分配比值可以被消息条数所整除,比如有100条消息,其中33.33%的消息通过消息通道a传输,而66.67%的消息通过消息通道b传输,由于33.33%和66.67%都无法被100所整除,进而导致存在流量跑偏的情形。

进一步地,由于流量分配比值存在于第三方配置中心,因此需要从第三方配置中心获取流量分配比值。在一实施例中,优选通过以下任一种方式从第三方配置中心获取流量分配比值。

方式一:先从第三方配置中心动态获取服务流量分配表并缓存至本地,然后通过查询服务流量分配表,以获取本次服务请求方调用服务的流量分配比值。

方式二:直接向第三方配置中心发起查询请求,通过查找第三方配置中心的服务流量分配表,以动态获取本次服务请求方调用服务的流量分配比值。

本实施例中,由于在第三方配置中心可能会调整流量分配比值,因此,优选定时从第三方配置中心动态获取流量分配比值。需要说明的是上述两种方式中,可以是定时从第三方配置中心动态获取流量分配比值,也可以是不定时从第三方配置中心动态获取流量分配比值。

此外,由上述实施例可知,为实现对流量切换的精确控制,因而可从子系统级别粒度或数据中心级别粒度来设置流量分配比值。因此,本实施例可根据服务请求方对应的子系统以及该子系统所在数据中心,查找服务流量分配表,以获取本次服务请求方调用服务的流量分配比值。

下面进一步对服务流量分配表以及流量分配比值进行举例说明。

服务流量分配表用于存储各子系统需要调用的服务的流量分配比值,并且各子系统按数据中心进行划分。

流量分配比值为服务请求方流量在各消息通道的分配比值。也即流量分配比值是百分比数值,其数值大小在[0,1]之间,同一服务请求方调用相同服务的流量,其在各消息通道上的分配比值之和等于1(100%)。

表1

如上述表1所示的服务流量分配表具体按子系统级别以及数据中心级别配置流量分配比值。其中,子系统1在数据中心1内调用服务t1所对应的流量分配比值为:消息通道a的分配比值为0、消息通道b的分配比值为0.8、消息通道c的分配比值为0.2;子系统2在数据中心1内调用服务t1所对应的流量分配比值为:消息通道a的分配比值为1、消息通道b的分配比值为0、消息通道c的分配比值为0。

进一步地,参照图4,图4为图2中步骤s30一实施例的流程示意图。基于上述实施例中所述的服务流量分配表以及流量分配比值说明,对消息通道的选择过程进行说明。

本实施例中,上述步骤s30进一步包括:

步骤s301,判断所述流量分配比值中是否存在等于1的分配比值;

步骤s302,若存在,则将等于1的分配比值对应消息通道作为本次服务请求方发送的所有请求消息的对应消息通道;

本实施例中,由于流量分配比值为服务请求方流量在各消息通道的分配比值,因此,若流量需要流经某消息通道,则该消息通道对应的分配比值必然大于0,同理,若需要控制流量不流经某消息通道,则只需将该消息通道对应的分配比值设为0即可。如上述表1中所示,由于子系统1在消息通道a的分配比值为0,因此,子系统1调用服务t1的流量不流经通道a。

由上述说明可知,若需要控制流量流经某一个或某多个消息通道,则只需将消息通道对应的分配比值设为1或者设为大于0且小于1的数值即可。因而只能是从分配比值为1或者为大于0且小于1的数值所对应的消息通道中进行选择。

本实施例中,由于同一流量在各消息通道上的分配比值之和等于1,因此,若流量分配比值中存在等于1的分配比值,则只存在一个消息通道可传输流量,其他消息通道由于分配比值为0而不能传输流量,因而可唯一确定该分配比值对应的消息通道即为选定的作为本次服务请求方发送的所有请求消息的对应消息通道。

如上述表1中所示,由于子系统2在消息通道a的分配比值为1,而在其他消息通道的分配比值为0,因此,子系统2调用服务t1的流量只通过消息通道a进行传输。而若调整上述表1中子系统2调用服务t1的流量在各消息通道的分配比值,则可实现流量的切换控制。

步骤s303,若不存在,则将大于0且小于1的分配比值对应消息通道作为本次服务请求方发送请求消息的对应消息通道;

本实施例中,若同一流量的分配比值中不存在等于1的分配比值,则只能是存在大于0且小于1的分配比值,因此,将大于0且小于1的分配比值对应消息通道作为本次服务请求方发送请求消息的对应消息通道。

此外,由于同一流量在各消息通道上的分配比值之和等于1,因而不存在所有消息通道的分配比值都为0的情况,同时,若同一流量的分配比值中不存在等于1的分配比值,则必然存在多个大于0且小于1的分配比值。

如上述表1中所示,子系统1在消息通道a的分配比值为0、消息通道b的分配比值为0.8、消息通道c的分配比值为0.2。当子系统1调用服务t1时,流量对应的传输通道为消息通道b、c,也即存在多个对应的消息通道。

步骤s304,若本次服务请求方发送请求消息的对应消息通道存在多个,则基于预设计算规则,确定本次服务请求方发送的每一条请求消息所对应的消息通道。

本实施例中,为实现流量的精确切换控制,当选定的用于本次服务请求方发送请求消息的对应消息通道存在多个时,进一步基于预设计算规则,以确定本次服务请求方发送的每一条请求消息所对应的消息通道。相当于是存在多个通道,则任意选择一个。

本实施例能够针对子系统或子系统所在的数据中心进行流量切换控制,同时能够对每一条请求消息的传输通道进行精确控制,进而实现对每一条消息在不同消息通道之间的流量精确切换。

进一步可选的,在一实施例中,当服务请求方发送请求消息的对应消息通道存在多个时,具体通过以下计算规则,确定本次服务请求方发送的每一条请求消息所对应的消息通道:

(1)对服务请求方发送的请求消息进行流量切块处理,以得到流量按比例分配的基准数值。

本实施例中,消息通道所传输的请求消息条数不仅与该通道的流量分配比值相关,而且还与服务请求方发送的请求消息的总数相关。由于服务请求方发送的请求消息是随机、不定时且实时产生的,因而并不能预先获得请求消息的总数,进而无法确定流量按比例分配的基准数值。因此,需要对服务请求方发送的请求消息进行流量切块处理,以将一个流量切块的请求消息的数量作为流量按比例分配的基准数值。

本实施例具体通过以下方式得到一个流量切块:在服务请求方发送请求消息时,累计服务请求方发送的每一条请求消息,得到请求消息总数;当请求消息总数达到预置数值时,则得到一个流量切块,同时将当前的请求消息总数重置为零,并重新累计本次服务请求方发送的每一条请求消息,以得到下一个流量切块。

(2)在同一流量切块内,确定本流量切块内的每一条请求消息所对应的消息通道。

2.1、在每次开始累计请求消息时,以选定的消息通道中的任一消息通道作为本次服务请求方发送请求消息的对应消息通道;

2.2、在每次累计请求消息的过程中,判断当前消息通道所流入的请求消息数量与预置数值之间的比值是否达到当前消息通道对应的流量分配比值;

2.3、若是,则将另一消息通道作为本次服务请求方发送请求消息的对应消息通道,并继续判断重新确定的当前消息通道所流入的请求消息数量与预置数值之间的比值是否达到当前消息通道对应的流量分配比值;否则,继续向当前消息通道发送请求消息。

为便于理解本实施例,下面以上述表1中子系统1调用服务t1进行举例说明。

假设一个流量切块内的请求消息总数量为1000条,请求消息总数为msgnum,用于累计服务请求方发送的每一条请求消息。由于消息通道b、c的分配比值都大于0且小于1,因此,将消息通道b、c作为本次子系统1调用服务t1时发送请求消息的对应消息通道。

1、在开始累计子系统1发送的请求消息时,将第一条请求消息发送给消息通道b或者消息通道c,假设选择消息通道b发送请求消息;

2、在继续向消息通道b发送请求消息的同时,判断当前消息通道b所流入的请求消息数量与预置数值(1000)之间的比值(设为k)是否达到当前消息通道b对应的流量分配比值(0.8);

3、若达到消息通道b对应的流量分配比值,也即当msgnum=800条时,k=0.8,则需要进行流量切换,具体将消息通道c作为切换后的流量传输通道;

4、在将流量切换到消息通道c并继续发送请求消息的同时,判断当前消息通道c所流入的请求消息数量与预置数值之间的比值是否达到当前消息通道c对应的流量分配比值(0.2);其中,消息通道c所流入的请求消息数量可由msgnum-800得到。而当msgnum的数值达到1000时,也即k=0.2,由于此时msgnum的数值已达到预置数值,则需要进入下一个流量切块内的流量传输通道的切换,同时将msgnum重新置为0。

本实施例中,当服务请求方发送请求消息的对应消息通道存在多个时,采用切块的方式对流量进行划分,并在每一个流量切块内按照各消息通道配置的流量分配比值确定每一消息通道所流入的请求消息数,从而实现每一条消息在不同消息通道之间的流量精确切换。

本发明还提供一种流量切换装置。

参照图5,图5为本发明流量切换装置一的功能模块示意图。本实施例中,所述流量切换装置包括:

连接建立模块10,用于分别建立服务请求方和服务提供方与各消息通道之间的网络连接;

本实施例中,服务的实现需要建立服务请求方和服务提供方之间的网络连接,以供传输流量,实现二者之间的交互。

本实施例中,服务请求方指服务的消费者(服务的调用方,对应某个子系统),服务提供方指服务的提供者(服务的被调用方,对应某个子系统)。服务请求方将请求消息(相当于调用消息)发送至服务提供方,进而调用服务提供方进行业务处理,服务提供方返回响应(或者不返回响应)。

基于上述分布式系统的说明可知,在分布式系统中,不同子系统可能会使用相同的服务,比如存款子系统、贷款子系统、转账子系统都需要使用取款服务(比如由取款子系统提供取款服务),也即,存款子系统与取款子系统之间、贷款子系统与取款子系统之间、转账子系统与取款子系统之间都存在流量传输。为实现流量控制,因而需要对流量传输进行切换。

本实施例优选在服务请求方与服务提供方之间,通过多条消息通道来实现二者之间的网络连接,同时进一步实现对流量传输进行切换控制。

如图3所示,假设有消息通道a、b可用于实现服务请求方与服务提供方之间的网络连接,优选在服务请求方与服务提供方各自启动时,分别与消息通道a、消息通道b建立一条网络连接,从而通过消息通道a和/或消息通道b,以实现服务请求方与服务提供方之间的网络连接。

本实施例中,消息通道指对请求消息和响应消息进行传输的通道。消息通道指任何可以用来传输消息的渠道,包括但不限于如rocketmq、activemq、rabbitmq等消息队列(也即消息中间件),或者是可提供消息传输的物理网络、消息中间件物理硬件产品等。

本实施例中,服务请求方建立与消息通道之间的连接,具体是指服务请求方与消息通道之间建立物理连接,进而使得服务请求方可通过该消息通道与服务提供方之间在物理上可进行消息流转,但并不表示一定有消息流通。而服务提供方建立与消息通道之间的连接,具体是指服务提供方与消息通道之间建立物理连接,进而使得服务提供方可通过该消息通道在物理上可接收服务请求方的调用消息。

比值获取模块20,用于获取本次服务请求方调用服务的流量分配比值;

本实施例中,在建立好服务请求方与服务提供方之间的网络连接后,服务请求方即可向服务提供方发送请求消息,进而服务提供方也可向服务请求方返回响应消息。为实现对二者之间流量传输控制,因而需要进行流量切换,本实施例优选通过切换流量传输通道以实现流量切换。

为实现对流量的精确切换控制,本实施例优选基于流量分配比值来对流量切换进行控制。流量分配比值为服务请求方流量在各消息通道的分配比值。也即流量分配比值是百分比数值,其数值大小在[0,1]之间,同一服务请求方调用相同服务的流量,其在各消息通道上的分配比值之和等于1(100%)。

本实施例对于流量分配比值的配置方式不限。例如,在服务请求方的配置文件中配置静态的流量分配比值,也可以是由独立的第三方配置动态的流量分配比值。

通道选择模块30,用于根据所述流量分配比值,采用预设的通道选择算法选择本次服务请求方发送请求消息的对应消息通道;

本实施例中,由于服务请求方与服务提供方之间设有多条消息通道,而流量精确切换需要确定每一条消息的输出通道,也即需要进行消息通道选择。

由于消息由服务请求方所发起,因此本实施例优选由服务请求方作为消息通道的选择方,以决定每一条即将发送的请求消息具体采用哪一条消息通道而传输至服务提供方。

本实施例优选根据获得的本次服务请求方调用服务的流量分配比值,采用预设的通道选择算法选择本次服务请求方发送请求消息的对应消息通道。本实施例对于通道选择算法的具体实现过程不限。

流量传输模块40,用于通过选择的消息通道,将所述请求消息从服务请求方发送至服务提供方。

本实施例中,在确定了消息的发送通道后,即可将服务请求方发起的请求消息,通过选定的消息通道传送给服务提供方,服务提供方接收请求消息后进行业务处理,然后再将响应消息按原消息通道原路返回给服务请求方。

需要进一步说明的是,服务提供方与服务请求方需要引入一致的api,以进行与服务调用相关的消息的发送接收处理。

本实施例通过消息通道,分别搭建服务请求方、服务提供方与各消息通道的网络连接,以建立起流量的多个传输通道,进而便于对构成流量的每一条消息在不同消息通道之间进行切换。此外,进一步获取每一次服务请求方调用服务的流量分配比值,以便根据流量分配比值,确定每一次服务请求方发送的每一条请求消息所对应的消息通道,通过该消息通道将请求消息从服务请求方发送至服务提供方,进而实现对每一条消息在不同消息通道之间的流量切换,由于无须修改配置后重启,整个切换过程更平滑,并且通过流量分配比值控制流量切换,而不是进程数,使得流量切换更加精确。

进一步地,由于本发明流量切换装置通过消息通道,搭建服务请求方、服务提供方分别与各消息通道的网络连接,以建立起流量的多个传输通道,进而可通过配置流量分配比值以对流量切换进行控制。

因此,在本发明流量切换装置一实施例中,为进一步便于对流量分配比值进行集中控制,同时避免调整流量分配比值时对服务请求方或提供方产生影响,因此,优选由独立的第三方配置中心配置流量分配比值,而对流量分配比值的具体数值优选由管理人员根据需要进行动态配置。

由于流量分配比值存在于第三方配置中心,因此需要从第三方配置中心获取流量分配比值。在一实施例中,比值获取模块20优选通过以下任一种方式从第三方配置中心获取流量分配比值。

方式一:先从第三方配置中心动态获取服务流量分配表并缓存至本地,然后通过查询服务流量分配表,以获取本次服务请求方调用服务的流量分配比值。

方式二:直接向第三方配置中心发起查询请求,通过查找第三方配置中心的服务流量分配表,以动态获取本次服务请求方调用服务的流量分配比值。

本实施例中,由于在第三方配置中心可能会调整流量分配比值,因此,优选定时从第三方配置中心动态获取流量分配比值。需要说明的是上述两种方式中,可以是定时从第三方配置中心动态获取流量分配比值,也可以是不定时从第三方配置中心动态获取流量分配比值。

另外,由于本发明采用的是通过服务请求方与服务提供方之间搭建的网络连接来传输流量,因而可从子系统级别粒度或数据中心级别粒度来设置流量分配比值,进而可实现对流量的精确切换控制。因此,在一实施例中,比值获取模块20可根据服务请求方对应的子系统以及该子系统所在数据中心,查找服务流量分配表,以获取本次服务请求方调用服务的流量分配比值。

下面进一步对服务流量分配表以及流量分配比值进行举例说明。

服务流量分配表用于存储各子系统需要调用的服务的流量分配比值,并且各子系统按数据中心进行划分。

流量分配比值为服务请求方流量在各消息通道的分配比值。也即流量分配比值是百分比数值,其数值大小在[0,1]之间,同一服务请求方调用相同服务的流量,其在各消息通道上的分配比值之和等于1(100%)。

表2

如上述表2所示的服务流量分配表具体按子系统级别以及数据中心级别配置流量分配比值。其中,子系统1在数据中心1内调用服务t2所对应的流量分配比值为:消息通道a的分配比值为0.3、消息通道b的分配比值为0.5、消息通道c的分配比值为0.2;子系统2在数据中心1内调用服务t2所对应的流量分配比值为:消息通道a的分配比值为1、消息通道b的分配比值为0、消息通道c的分配比值为0。

进一步地,基于上述流量切换装置实施例中所述的服务流量分配表以及流量分配比值说明,对消息通道的选择过程进行说明。

本实施例中,所述通道选择模块30具体用于:

判断所述流量分配比值中是否存在等于1的分配比值;

若存在,则将等于1的分配比值对应消息通道作为本次服务请求方发送的所有请求消息的对应消息通道;

若不存在,则将大于0且小于1的分配比值对应消息通道作为本次服务请求方发送请求消息的对应消息通道;

若本次服务请求方发送请求消息的对应消息通道存在多个,则基于预设计算规则,确定本次服务请求方发送的每一条请求消息所对应的消息通道。

本实施例中,由于流量分配比值为服务请求方流量在各消息通道的分配比值,因此,若流量需要流经某消息通道,则该消息通道对应的分配比值必然大于0,同理,若需要控制流量不流经某消息通道,则只需将该消息通道对应的分配比值设为0即可。如上述表2中所示,由于子系统2在消息通道b、c的分配比值为0,因此,子系统2调用服务t2的流量不流经通道b、c。

由上述说明可知,若需要控制流量流经某一个或某多个消息通道,则只需将消息通道对应的分配比值设为1或者设为大于0且小于1的数值即可。因而只能是从分配比值为1或者为大于0且小于1的数值所对应的消息通道中进行选择。

本实施例中,由于同一流量在各消息通道上的分配比值之和等于1,因此,若流量分配比值中存在等于1的分配比值,则只存在一个消息通道可传输流量,其他消息通道由于分配比值为0而不能传输流量,因而可唯一确定该分配比值对应的消息通道即为选定的作为本次服务请求方发送的所有请求消息的对应消息通道。

如上述表2中所示,由于子系统2在消息通道a的分配比值为1,而在其他消息通道的分配比值为0,因此,子系统2调用服务t2的流量只通过消息通道a进行传输。而若调整上述表2中子系统2调用服务t2的流量在各消息通道的分配比值,则可实现流量的切换控制。

本实施例中,若同一流量的分配比值中不存在等于1的分配比值,则只能是存在大于0且小于1的分配比值,因此,将大于0且小于1的分配比值对应消息通道作为本次服务请求方发送请求消息的对应消息通道。

此外,由于同一流量在各消息通道上的分配比值之和等于1,因而不存在所有消息通道的分配比值都为0的情况,同时,若同一流量的分配比值中不存在等于1的分配比值,则必然存在多个大于0且小于1的分配比值。

如上述表2中所示,子系统1在消息通道a的分配比值为0.3、消息通道b的分配比值为0.5、消息通道c的分配比值为0.2。当子系统1调用服务t2时,流量对应的传输通道为消息通道a、b、c,也即存在多个对应的消息通道。

本实施例中,为实现流量的精确切换控制,当选定的用于本次服务请求方发送请求消息的对应消息通道存在多个时,进一步基于预设计算规则,以确定本次服务请求方发送的每一条请求消息所对应的消息通道。

本实施例能够针对子系统或子系统所在的数据中心进行流量切换控制,同时能够对每一条请求消息的传输通道进行精确控制,进而实现对每一条消息在不同消息通道之间的流量精确切换。

进一步可选的,在本发明流量切换装置另一实施例中,当服务请求方发送请求消息的对应消息通道存在多个时,通道选择模块30具体通过以下计算规则,确定本次服务请求方发送的每一条请求消息所对应的消息通道:

(1)对服务请求方发送的请求消息进行流量切块处理,以得到流量按比例分配的基准数值。

本实施例中,消息通道所传输的请求消息条数不仅与该通道的流量分配比值相关,而且还与服务请求方发送的请求消息的总数相关。由于服务请求方发送的请求消息是随机、不定时且实时产生的,因而并不能预先获得请求消息的总数,进而无法确定流量按比例分配的基准数值。因此,需要对服务请求方发送的请求消息进行流量切块处理,以将一个流量切块的请求消息的数量作为流量按比例分配的基准数值。

本实施例具体通过以下方式得到一个流量切块:在服务请求方发送请求消息时,累计服务请求方发送的每一条请求消息,得到请求消息总数;当请求消息总数达到预置数值时,则得到一个流量切块,同时将当前的请求消息总数重置为零,并重新累计本次服务请求方发送的每一条请求消息,以得到下一个流量切块。

(2)在同一流量切块内,确定本流量切块内的每一条请求消息所对应的消息通道。

2.1、在每次开始累计请求消息时,以选定的消息通道中的任一消息通道作为本次服务请求方发送请求消息的对应消息通道;

2.2、在每次累计请求消息的过程中,判断当前消息通道所流入的请求消息数量与预置数值之间的比值是否达到当前消息通道对应的流量分配比值;

2.3、若是,则将另一消息通道作为本次服务请求方发送请求消息的对应消息通道,并继续判断重新确定的当前消息通道所流入的请求消息数量与预置数值之间的比值是否达到当前消息通道对应的流量分配比值;否则,继续向当前消息通道发送请求消息。

为便于理解本实施例,下面以上述表2中子系统1调用服务t2进行举例说明。

假设一个流量切块内的请求消息总数量为1000条,请求消息总数为msgnum,用于累计服务请求方发送的每一条请求消息。由于消息通道a、b、c的分配比值都大于0且小于1,因此,将消息通道a、b、c作为本次子系统1调用服务t2时发送请求消息的对应消息通道。

1、在开始累计子系统1发送的请求消息时,将第一条请求消息发送给消息通道a或者消息通道b或者消息通道c,假设选择消息通道b发送请求消息;

2、在继续向消息通道b发送请求消息的同时,判断当前消息通道b所流入的请求消息数量与预置数值(1000)之间的比值(设为k)是否达到当前消息通道b对应的流量分配比值(0.5);

3、若达到消息通道b对应的流量分配比值,也即当msgnum=500条时,k=0.5,则需要进行流量切换,假设将消息通道c作为切换后的流量传输通道;

4、在将流量切换到消息通道c并继续发送请求消息的同时,判断当前消息通道c所流入的请求消息数量与预置数值之间的比值是否达到当前消息通道c对应的流量分配比值(0.2);其中,消息通道c所流入的请求消息数量可由msgnum-500得到。

5、若达到消息通道c对应的流量分配比值,也即当msgnum=700条时,k=0.2,则需要进行流量切换,将消息通道a作为切换后的流量传输通道;

6、在将流量切换到消息通道a并继续发送请求消息的同时,判断当前消息通道a所流入的请求消息数量与预置数值之间的比值是否达到当前消息通道a对应的流量分配比值(0.3);其中,消息通道a所流入的请求消息数量可由msgnum-500-200得到。而当msgnum的数值达到1000时,也即k=0.3,由于此时msgnum的数值已达到预置数值,则需要进入下一个流量切块内的流量传输通道的切换,同时将msgnum重新置为0。

本实施例中,当服务请求方发送请求消息的对应消息通道存在多个时,采用切块的方式对流量进行划分,并在每一个流量切块内按照各消息通道配置的流量分配比值确定每一消息通道所流入的请求消息数,从而实现每一条消息在不同消息通道之间的流量精确切换。

本发明还提供一种计算机可读存储介质。

本发明计算机可读存储介质上存储有流量切换程序,所述流量切换程序被处理器执行时实现如上述任一项实施例中所述的流量切换方法的步骤。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器或者网络设备等)执行本发明各个实施例所述的方法。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,这些均属于本发明的保护之内。

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