发明内容
基于此,有必要针对上述技术问题,提供一种对访问请求进行智能化调度的集群流量管理方法、装置、计算机设备、存储介质和计算机程序产品。
第一方面,本申请提供了一种集群流量管理方法。所述方法包括:
在接收到服务访问请求时,确定所述服务访问请求中的目标应用服务、以及所述目标应用服务所处的多个目标集群;
对每个所述目标集群进行异常检测,得到每个所述目标集群各自对应的检测结果,并根据各所述检测结果,确定每个所述目标集群各自对应的流量权重;
根据预设的路由配置规则,确定包括目标配置状态和多个所述流量权重的目标路由配置信息;
在所述目标配置状态为目标状态时,根据所述目标路由配置信息,将所述服务访问请求发送至每个所述目标集群;
其中,发送的所述服务访问请求用于触发所述目标集群访问所述目标应用服务,得到与所述目标应用服务相关的应用数据;得到所述应用数据的数据量与所述目标路由配置信息中的流量权重相对应。
在其中一个实施例中,所述对每个所述目标集群进行异常检测,得到每个所述目标集群各自对应的检测结果,包括:针对多个目标集群中的每个目标集群,均对当前目标集群进行异常检测,得到初始的检测结果;当所述初始的检测结果表征异常时,按照预设时间间隔,对所述当前目标集群进行预设次数的节点检测,得到所述当前目标集群的检测结果;当所述初始的检测结果表征正常时,将所述初始的检测结果,作为所述当前目标集群的检测结果。
在其中一个实施例中,所述根据各所述检测结果,确定每个所述目标集群各自对应的流量权重,包括:根据预设的网关参数,确定各所述目标集群各自对应的初始权重;当各所述检测结果均表征正常时,将每个所述初始权重分别作为相应的目标集群所对应的流量权重;当各所述检测结果中的任一检测结果表征异常时,将预设权重作为所述检测结果表征异常的目标集群的流量权重;根据多个所述初始权重和所述预设权重,得到所述检测结果表征正常的目标集群的流量权重。
在其中一个实施例中,根据预设的路由配置规则,确定包括目标配置状态和多个所述流量权重的目标路由配置信息,包括:获取路由域名,并根据所述路由配置规则,将所述路由域名和所述目标应用服务进行关联,得到所述目标应用服务的路由标签;从制品库中查找与所述路由标签相同的历史路由配置信息,得到查找结果,并根据所述查找结果,确定所述服务访问请求对应的目标配置状态;综合所述路由标签、所述目标配置状态和多个所述流量权重,得到所述目标应用服务对应的初始路由配置信息;当所述目标配置状态为发布状态时,将所述初始路由配置信息作为所述目标路由配置信息。
在其中一个实施例中,所述根据预设的路由配置规则,确定包括目标配置状态和多个所述流量权重的目标路由配置信息,包括:根据预设的路由配置规则,生成初始路由配置信息;所述初始路由配置信息包括初始版本号和目标配置状态;响应于针对所述初始路由配置信息的修改配置操作,得到修改路由配置信息;所述修改路由配置信息包括修改版本号和修改配置状态;所述修改版本号通过所述路由配置规则和所述初始版本号生成得到;将所述初始路由配置信息中的目标配置状态更新为下线状态,并将所述修改路由配置信息中的修改配置状态更新为发布状态;将发布状态的所述修改路由配置信息替换所述初始路由配置信息,得到目标路由配置信息。
在其中一个实施例中,根据预设的路由配置规则,确定包括目标配置状态和多个所述流量权重的目标路由配置信息,包括:根据预设的路由配置规则,生成初始路由配置信息;所述初始路由配置信息包括路由标签;当容器集群中的初始网关发生目标事件时,从数据仓库中查找与路由标签相同的历史路由配置信息;所述历史路由配置信息包括历史配置状态;将所述历史配置状态由下线状态更新为发布状态,并将发布状态下的所述历史路由配置信息替换所述初始路由配置信息,得到目标路由配置信息;上述方法还包括:将所述目标路由配置信息存储至制品库中,并在数据仓库中对所述制品库中的信息进行备份。
第二方面,本申请还提供了一种集群流量管理装置。所述装置包括:
请求接收模块,用于在接收到服务访问请求时,确定所述服务访问请求中的目标应用服务、以及所述目标应用服务所处的多个目标集群;
信息确定模块,用于对每个所述目标集群进行异常检测,得到每个所述目标集群各自对应的检测结果,并根据各所述检测结果,确定每个所述目标集群各自对应的流量权重;根据预设的路由配置规则,确定包括目标配置状态和多个所述流量权重的目标路由配置信息;
请求发送模块,用于在所述目标配置状态为目标状态时,根据所述目标路由配置信息,将所述服务访问请求发送至每个所述目标集群;其中,发送的所述服务访问请求用于触发所述目标集群访问所述目标应用服务,得到与所述目标应用服务相关的应用数据;得到所述应用数据的数据量与所述目标路由配置信息中的流量权重相对应。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
在接收到服务访问请求时,确定所述服务访问请求中的目标应用服务、以及所述目标应用服务所处的多个目标集群;
对每个所述目标集群进行异常检测,得到每个所述目标集群各自对应的检测结果,并根据各所述检测结果,确定每个所述目标集群各自对应的流量权重;
根据预设的路由配置规则,确定包括目标配置状态和多个所述流量权重的目标路由配置信息;
在所述目标配置状态为目标状态时,根据所述目标路由配置信息,将所述服务访问请求发送至每个所述目标集群;
其中,发送的所述服务访问请求用于触发所述目标集群访问所述目标应用服务,得到与所述目标应用服务相关的应用数据;得到所述应用数据的数据量与所述目标路由配置信息中的流量权重相对应。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
在接收到服务访问请求时,确定所述服务访问请求中的目标应用服务、以及所述目标应用服务所处的多个目标集群;
对每个所述目标集群进行异常检测,得到每个所述目标集群各自对应的检测结果,并根据各所述检测结果,确定每个所述目标集群各自对应的流量权重;
根据预设的路由配置规则,确定包括目标配置状态和多个所述流量权重的目标路由配置信息;
在所述目标配置状态为目标状态时,根据所述目标路由配置信息,将所述服务访问请求发送至每个所述目标集群;
其中,发送的所述服务访问请求用于触发所述目标集群访问所述目标应用服务,得到与所述目标应用服务相关的应用数据;得到所述应用数据的数据量与所述目标路由配置信息中的流量权重相对应。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
在接收到服务访问请求时,确定所述服务访问请求中的目标应用服务、以及所述目标应用服务所处的多个目标集群;
对每个所述目标集群进行异常检测,得到每个所述目标集群各自对应的检测结果,并根据各所述检测结果,确定每个所述目标集群各自对应的流量权重;
根据预设的路由配置规则,确定包括目标配置状态和多个所述流量权重的目标路由配置信息;
在所述目标配置状态为目标状态时,根据所述目标路由配置信息,将所述服务访问请求发送至每个所述目标集群;
其中,发送的所述服务访问请求用于触发所述目标集群访问所述目标应用服务,得到与所述目标应用服务相关的应用数据;得到所述应用数据的数据量与所述目标路由配置信息中的流量权重相对应。
上述集群流量管理方法、装置、计算机设备、存储介质和计算机程序产品,通过在接收到服务访问请求时,可确定服务访问请求中的目标应用服务、以及目标应用服务所处的多个目标集群,进而通过对每个目标集群进行异常检测,得到每个目标集群各自对应的检测结果,并根据各检测结果,可确定每个目标集群各自对应的流量权重。如此,便可根据预设的路由配置规则,确定包括目标配置状态和多个流量权重的目标路由配置信息,在目标配置状态为目标状态时,直接根据目标路由配置信息,可将服务访问请求发送至每个目标集群。由于本申请是在主动地对目标集群进行异常检测之后,便可直接确定出流量权重,相较于传统的在容器集群发生异常后才能被动地进行配置文件的修改的方式,本申请确保了访问请求的发送过程不发生中断,避免了触发目标集群访问目标应用服务的延迟,因此,使得对访问请求的调度更加智能化;同时,通过准确得到的目标路由配置信息,可使得访问到的应用数据的数据量与目标路由配置信息中的流量权重相对应,提高了对访问请求进行发送的准确性。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本申请提供的集群流量管理方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信,服务器104通过网络与计算机设备106进行通信;终端102和服务器104位于同一初始集群,计算机设备106位于与初始集群不同的目标集群。数据存储***可以存储服务器104需要处理的数据。数据存储***可以集成在服务器104上,也可以放在云上或其他网络服务器上。终端102用于提供服务访问请求;服务器104在接收到服务访问请求时,确定服务访问请求中的目标应用服务、以及目标应用服务所处的多个目标集群,并对每个目标集群进行异常检测,得到每个目标集群各自对应的检测结果;服务器104还用于根据各检测结果,确定每个目标集群各自对应的流量权重,并根据预设的路由配置规则,确定包括目标配置状态和多个流量权重的目标路由配置信息;服务器104还用于在目标配置状态为目标状态时,根据目标路由配置信息,将服务访问请求发送至每个目标集群对应的计算机设备106。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现,服务器104可以是一种智能网关。
在其中一个实施例中,如图2所示,提供了一种集群流量管理方法,该方法由图1中的服务器为例进行执行,包括以下步骤:
步骤202,在接收到服务访问请求时,确定服务访问请求中的目标应用服务、以及目标应用服务所处的多个目标集群。
其中,不同的容器集群中部署有多种应用服务、出口模块、入口模块和应用服务对应的负载均衡模块;容器集群包括初始集群和目标集群。当跨容器集群内的应用服务之间进行流量访问时,也即需要通过服务访问请求进行触发,例如,第一容器集群为初始集群,第二容器集群为目标集群,初始集群中的初始应用服务对目标集群中的目标应用服务进行流量访问。
具体地,如图3所示,图3为容器集群之间的应用服务进行访问的原理示意图。当初始应用服务所在的终端响应于用户的触发操作时,生成服务访问请求,并通过初始集群中的初始负载均衡模块,将服务访问请求发送至初始集群中的初始出口模块,使得初始出口模块确定出服务访问请求中的目标应用服务、以及目标应用服务所处的多个目标集群。
在其中一个实施例中,执行集群流量管理方法的服务器可为初始出口模块,初始出口模块也可为初始网关。
在其中一个实施例中,服务器中可提供一种黑名单,黑名中包括POD容器的IP地址、网段范围等,用于对部分应用服务的流量访问进行源头限制。当初始应用服务所在的终端响应于用户的触发操作时,确定用户所选择的目标应用服务、以及目标应用服务的IP地址,将该IP地址和黑名单进行对比,当该IP地址并未处于黑名单中时,根据目标应用服务和IP地址,生成服务访问请求。
在其中一个实施例中,容器集群中的出口模块可为一种网关,例如APISIX网关;容器集群中的入口模块可为Ingress CLB模块。
在其中一个实施例中,APISIX网关支持etcd集群,通过etcd集群增强了集群流量管理***的可用性,当通过etcd集群来统一存储管理所有的配置时,可避免了配置管理杂乱、维护成本高等问题。
在其中一个实施例中,目标集群中的目标入口模块,作为容器集群的统一流量入口,用来接收所有的服务访问请求,并将服务访问请求转发到目标集群中的目标负载均衡模块,使得通过目标负载均衡模块,将服务访问请求转发至目标应用服务中的POD容器进行处理。
步骤204,对每个目标集群进行异常检测,得到每个目标集群各自对应的检测结果,并根据各检测结果,确定每个目标集群各自对应的流量权重。
在其中一个实施例中,对每个目标集群进行异常检测,得到每个目标集群各自对应的检测结果,包括:针对多个目标集群中的每个目标集群,均对当前目标集群进行异常检测,得到初始的检测结果;当初始的检测结果表征异常时,按照预设时间间隔,对当前目标集群进行预设次数的节点检测,得到当前目标集群的检测结果;当初始的检测结果表征正常时,将初始的检测结果,作为当前目标集群的检测结果。
具体地,服务器中包括检测模块,例如Upstream模块。当目标集群发生故障时,目标集群内的应用服务无法被外界所访问,因此需要检测模块来对多个目标集群中的每个目标集群进行异常检测,得到当前目标集群对应的初始的检测结果。当初始的检测结果表征异常时,也即探测到当前目标集群发生了流量调度异常,因此服务器可按照预设时间间隔,对当前目标集群进行预设次数的节点检测,得到当前目标集群的检测结果。例如,每间隔1秒进行一次节点检测,并探测到3次均为流量调度异常,则确定检测结果为异常。
进一步地,由于不同目标集群中的目标应用服务具有不同的优先级,当服务器确定每个目标集群各自对应的检测结果时,可结合不同目标集群的优先级,来确定每个目标集群各自对应的流量权重。
在其中一个实施例中,服务器还可以配置Upstream模块中的字段信息,例如,interval字段和http_failures字段,字段信息可在目标应用服务发生故障后,实现自动踢出操作、以及间隔一段时间后的自动恢复操作等。
步骤206,根据预设的路由配置规则,确定包括目标配置状态和多个流量权重的目标路由配置信息。
在其中一个实施例中,根据预设的路由配置规则,确定包括目标配置状态和多个流量权重的目标路由配置信息,包括:获取路由域名,并根据路由配置规则,将路由域名和目标应用服务进行关联,得到目标应用服务的路由标签;从制品库中查找与路由标签相同的历史路由配置信息,得到查找结果,并根据查找结果,确定服务访问请求对应的目标配置状态;综合路由标签、目标配置状态和多个流量权重,得到目标应用服务对应的初始路由配置信息。
具体地,服务器按照路由配置规则,将获取到的路由域名和目标应用服务所对应的路由路径进行关联,得到目标应用服务的路由标签。其中,同一路由标签则为相同的用途的路由策略,路由标签可用于进行路由分组和版本控制。例如,路由配置规则为{“host”:{域名},“uri”:{路径}}时,路由标签则为{“host”:“www.***.com”,“uri”:“/index.html”}。服务器从制品库中查找与路由标签相同的历史路由配置信息,若能查找与路由标签相同的历史路由配置信息,表征是在历史路由配置信息的基础上,对其进行了配置修改;若未能查找与路由标签相同的历史路由配置信息,表征此次待生成的路由配置信息为首次形成的路由配置信息。其中,制品库用来统一管理不同版本的路由配置信息,也即用于存储在每次进行了配置修改后所形成的路由配置信息。
进一步地,当查找结果为查找到时,服务器可确定目标配置状态为发布状态;当查找结果为未查找到时,服务器可确定目标配置状态为下线状态等。服务器综合路由标签、目标配置状态和多个流量权重,得到目标应用服务对应的初始路由配置信息。接着服务器确定是否进行了特殊事件的触发,并根据特殊事件的类型,对初始路由配置信息进行处理,得到目标路由配置信息。其中,特殊事件包括初始网关发生目标事件、目标路由配置信息需要进行配置修改、初始路由配置信息为首次形成的路由配置信息,可直接进行存储等。
在其中一个实施例中,当初始配置状态为发布状态时,表征特殊事件为初始路由配置信息为首次形成的路由配置信息,可直接进行存储,此时服务器则将初始路由配置信息作为目标路由配置信息。
在其中一个实施例中,目标路由配置信息还包括路由命名、创建时间、描述等。其中,按照{域名}_{版本号}_{创建时间}的路由配置规则,来确定路由命名,描述用来说明目标应用服务对应的使用场景。
步骤208,在目标配置状态为目标状态时,根据目标路由配置信息,将服务访问请求发送至每个目标集群。
其中,目标状态可为发布状态,发布状态表征可将服务访问请求分发至每个目标集群。发送的服务访问请求用于触发目标集群访问目标应用服务,得到与目标应用服务相关的应用数据;得到应用数据的数据量与目标路由配置信息中的流量权重相对应。
具体地,服务器根据目标路由配置信息中的IP地址,确定服务访问请求发送至各目标集群的传输路径,并按照传输路径和流量权重,将服务访问请求分别发送至每个目标集群。如图4所示,图4为发送服务访问请求的原理示意图。其中,若初始集群为第一容器集群时,可确定目标集群为第三容器集群和第四容器集群,第三容器集群对应的流量权重为99%,第四容器集群对应的流量权重为1%等。
在其中一个实施例中,目标集群中的目标入口模块在接收到服务访问请求时,按照对应的流量权重读取目标应用服务运行时的应用数据。
上述集群流量管理方法中,通过在接收到服务访问请求时,可确定服务访问请求中的目标应用服务、以及目标应用服务所处的多个目标集群,进而通过对每个目标集群进行异常检测,得到每个目标集群各自对应的检测结果,并根据各检测结果,可确定每个目标集群各自对应的流量权重。如此,便可根据预设的路由配置规则,确定包括目标配置状态和多个流量权重的目标路由配置信息,在目标配置状态为目标状态时,直接根据目标路由配置信息,可将服务访问请求发送至每个目标集群。由于本申请是在主动地对目标集群进行异常检测之后,便可直接确定出流量权重,相较于传统的在容器集群发生异常后才能被动地进行配置文件的修改的方式,本申请确保了访问请求的发送过程不发生中断,避免了触发目标集群访问目标应用服务的延迟,因此,使得对访问请求的调度更加智能化;同时,通过准确得到的目标路由配置信息,可使得访问到的应用数据的数据量与目标路由配置信息中的流量权重相对应,提高了对访问请求进行发送的灵活性。
在其中一个实施例中,根据各检测结果,确定每个目标集群各自对应的流量权重,包括:根据预设的网关参数,确定各目标集群各自对应的初始权重;当各检测结果均表征正常时,将每个初始权重分别作为相应的目标集群所对应的流量权重;当各检测结果中的任一检测结果表征异常时,将预设权重作为检测结果表征异常的目标集群的流量权重;根据多个初始权重和预设权重,得到检测结果表征正常的目标集群的流量权重。
具体地,服务器中的Upstream模块可用作流量智能调度,通过配置Upstream模块中的网关参数,可以确定目标集群各自对应的初始权重,即每个目的集群的目标入口模块的权重,进而来控制流量调度的比例。参考图4所示,第一容器集群中的Upstream模块预先配置的网关参数,分别指向第三容器集群入口模块、以及第四容器集群的入口模块,且第三容器集群对应的初始权重为99%、第四容器集群对应的初始权重为1%。因此,在对每个目标集群进行异常检测时,得到各检测结果均表征正常时,服务器便可直接将每个初始权重分别作为相应的目标集群所对应的流量权重。
进一步地,服务器确定每个目标集群中的目标应用服务具有不同的优先级,并将优先级高的目标集群中的目标应用服务作为主服务,将优先级低的目标集群中的目标应用服务作为备服务。例如,第三容器集群的目标应用服务为主服务,第四容器集群的目标应用服务为备服务。当存在主服务对应的检测结果表征异常时,此时的访问流量无法调度到主服务,则需要将流量调度到备服务,因此,服务器可将主服务的流量权重变更为预设权重,例如,将第三容器集群对应的初始权重为99%变更为2%;服务器也可将主服务的流量权重变更为备服务对应的流量权重,例如,将99%变更为第四容器集群对应的初始权重1%等。
由于根据多个初始权重可确定出总权重为1,便可将总权重与预设权重的差值,作为检测结果表征正常的目标集群的流量权重,也即备服务器对应的流量权重,例如,将98%作为备服务器对应的流量权重;服务器也可将备服务器的流量权重变更为主服务对应的流量权重,例如,将1%变更为第三容器集群对应的初始权重99%等。因此,流量权重变更后的主服务器则作为新的备服务器、流量权重变更后的备服务器则作为新的主服务器。
本实施例中,通过对每个目标集群进行异常检测,准确得到每个目标集群各自对应的流量权重,并在检测结果出现异常时,根据目标集群中的目标应用服务具有的优先级,实现集群流量流出方向调度比例自由升降;同时,通过对不同目标集群进行互为主备关系的路由配置,使得访问流量能在主备关系的目标集群中进行平滑迁移。因此,降低了服务访问的流量调度的丢失率,避免了因缺少主动地异常检查而带来的不安全隐患,提高了跨容器集群访问的稳定性,也实现了访问请求的智能化调度。
在其中一个实施例中,如图5所示,图5为确定目标路由配置信息的流程示意图,根据预设的路由配置规则,确定包括目标配置状态和多个流量权重的目标路由配置信息,包括以下步骤:
步骤502,根据预设的路由配置规则,生成初始路由配置信息。
其中,生成初始路由配置信息的具体实施步骤,可参考步骤206中的具体过程,本申请在此不再赘述。
步骤504,响应于针对初始路由配置信息的修改配置操作,得到修改路由配置信息。
其中,初始路由配置信息包括初始版本号和目标配置状态;修改路由配置信息包括修改版本号、修改配置状态和修改路由标签;修改版本号通过路由配置规则和初始版本号生成得到。
具体地,如图6所示,图6为确定目标路由配置信息的时序图。当初始应用服务所在的终端响应于用户的修改配置操作时,在初始路由配置信息的基础上进行配置修改,其中,配置修改包括目标集群的变更、目标应用服务的改变、目标应用服务的IP地址的修改、以及目标集群的访问流量占比的调整等,针对每次以初始路由配置信息中的目标应用服务为基础进行的一次修改,便可新增单条修改路由配置信息,服务器接着将每次新增的修改路由配置信息。
在其中一个实施例中,每进行一次配置修改,服务器都会通过路由配置规则,在初始版本号的基础上进行自增,从而生成新的修改版本号。服务器使用{域名}_{版本号}_{创建时间}的路由配置规则,来命名新增的路由策略,也即{host}_{version}_{createTime},其中,同一分组的路由策略为相同的路由标签。
在其中一个实施例中,每次配置修改完成后,服务器便导出最新的修改路由配置信息所对应的配置文件,配置文件的内容格式为json,命名格式为“{容器集群名称}_全量APISIX路由配置_{版本号}_{时间}.json”。容器集群中指定的制品库路径为“/app/apisix/{版本号}/{容器集群名称}_全量APISIX路由配置_{自增后版本号}_{时间}.json”。
在其中一个实施例中,服务器中还包括一种最新文件,也即Latest文件,Latest文件中用来保存在对初始路由配置信息进行最后的修改后,得到的修改路由配置信息中的修改版本号,也即最新的版本号;也即在每次进行配置修改时,都需要对Latest文件中的版本号进行更新,以确保需要对版本号对应的路由配置信息进行回滚时,为最新修改后的目标路由配置信息。
步骤506,将初始路由配置信息中的目标配置状态更新为下线状态,并将修改路由配置信息中的修改配置状态更新为发布状态。
具体地,服务器可通过{域名}_{路径},从制品库中查询与修改路由标签相同的路由配置信息,也即确定出与修改路由配置信息为同一分组、带有最新版本号的路由配置信息,也即确定出为修改路由配置信息上一版本的路由配置信息。当初始路由配置信息为带有最新版本号的路由配置信息时,服务器将初始路由配置信息中的目标配置状态更新为下线状态,也即将status设置为0,并将修改路由配置信息中的修改配置状态更新为发布状态,也即将status设置为1。
步骤508,将发布状态的修改路由配置信息替换初始路由配置信息,得到目标路由配置信息。
其中,由于修改路由配置信息中的修改配置状态,已经更新为发布状态,则表征可将其作为目标路由配置信息,并可按照目标路由配置信息,将服务访问请求分发至每个目标集群。
在其中一个实施例中,参考图6所示,服务器将目标路由配置信息存储至制品库中,并在数据仓库中对制品库中的信息进行备份。其中,数据仓库可为Git仓库,备份的信息包括修改路由配置信息对应的配置文件、以及Latest文件。
本实施例中,针对目标路由配置信息需要进行配置修改的这一特殊事件,通过预设的路由配置规则,便可在初始路由配置信息的基础上,准确地进行配置修改,并在确定出与修改路由配置信息为同一分组的、上一版本的路由配置信息之后,再将修改配置状态更新为发布状态,使得服务访问请求参考的单条路由配置信息为最新版本号的修改路由配置信息,提高了后续对服务访问请求进行发送的准确性;同时,通过版本号来确定目标路由配置信息,也使得实施过程更加简洁与高效。
此外,由于每次新增的修改路由配置信息在保存后便及时生效,不需要再重新启动初始网关、或从源头的初始应用服务进行触发,也即实现了一种流量路由切换的热部署,降低了流量访问中断的可能性,也提高了对服务访问请求进行发送的效率。
在其中一个实施例中,根据预设的路由配置规则,确定包括目标配置状态和多个流量权重的目标路由配置信息,包括:根据预设的路由配置规则,生成初始路由配置信息;当容器集群中的初始网关发生目标事件时,从数据仓库中查找与路由标签相同的历史路由配置信息;将历史配置状态由下线状态更新为发布状态,并将发布状态下的历史路由配置信息替换初始路由配置信息,得到目标路由配置信息。
其中,初始路由配置信息包括路由标签;历史路由配置信息包括历史配置状态。生成初始路由配置信息的具体实施步骤,可参考步骤206中的具体过程,本申请在此不再赘述。
具体地,参考图6所示,当容器集群中的初始网关发生目标事件时,例如,初始网关发生故障后,重新进行启动;新增其他的网关后,需要进行网关迁移等。服务器从数据仓库中查找与路由标签相同的历史路由配置信息,也即与初始路由配置信息为同一分组、带有最新版本号的历史路由配置信息,使得制品库中恢复历史路由配置信息,并使得服务器对历史路由配置信息进行回滚。服务器将历史配置状态由下线状态更新为发布状态,也即将status由0设置为1,并将发布状态下的历史路由配置作为目标路由配置信息。
本实施例中,针对初始网关发生目标事件的这一特殊事件,通过预设的路由配置规则,便可在查找到与路由标签相同的历史路由配置信息时,快速地对历史路由配置信息进行版本回滚,实现了流量访问的平滑调度,保障了对配置信息的进一步管理,也提高了后续按照回滚后的历史路由配置信息,对服务访问请求进行发送的准确性。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的集群流量管理方法的集群流量管理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个集群流量管理装置实施例中的具体限定可以参见上文中对于集群流量管理方法的限定,在此不再赘述。
在其中一个实施例中,如图7所示,提供了一种集群流量管理装置700,包括:请求接收模块702、信息确定模块704和请求发送模块706,其中:
请求接收模块702,用于在接收到服务访问请求时,确定服务访问请求中的目标应用服务、以及目标应用服务所处的多个目标集群。
信息确定模块704,用于对每个目标集群进行异常检测,得到每个目标集群各自对应的检测结果,并根据各检测结果,确定每个目标集群各自对应的流量权重;根据预设的路由配置规则,确定包括目标配置状态和多个流量权重的目标路由配置信息。
请求发送模块706,用于在目标配置状态为目标状态时,根据目标路由配置信息,将服务访问请求发送至每个目标集群;其中,发送的服务访问请求用于触发目标集群访问目标应用服务,得到与目标应用服务相关的应用数据;得到应用数据的数据量与目标路由配置信息中的流量权重相对应。
在其中一个实施例中,信息确定模块704还包括异常检测模块7041,用于针对多个目标集群中的每个目标集群,均对当前目标集群进行异常检测,得到初始的检测结果;当初始的检测结果表征异常时,按照预设时间间隔,对当前目标集群进行预设次数的节点检测,得到当前目标集群的检测结果;当初始的检测结果表征正常时,将初始的检测结果,作为当前目标集群的检测结果。
在其中一个实施例中,信息确定模块704还包括权重确定模块7042,用于根据预设的网关参数,确定各目标集群各自对应的初始权重;当各检测结果均表征正常时,将每个初始权重分别作为相应的目标集群所对应的流量权重;当各检测结果中的任一检测结果表征异常时,将预设权重作为检测结果表征异常的目标集群的流量权重;根据多个初始权重和预设权重,得到检测结果表征正常的目标集群的流量权重。
在其中一个实施例中,信息确定模块704,还用于获取路由域名,并根据路由配置规则,将路由域名和目标应用服务进行关联,得到目标应用服务的路由标签;从制品库中查找与路由标签相同的历史路由配置信息,得到查找结果,并根据查找结果,确定服务访问请求对应的目标配置状态;综合路由标签、目标配置状态和多个流量权重,得到目标应用服务对应的初始路由配置信息;当目标配置状态为发布状态时,将初始路由配置信息作为目标路由配置信息。
在其中一个实施例中,信息确定模块704还包括配置修改模块7043,用于根据预设的路由配置规则,生成初始路由配置信息;响应于针对初始路由配置信息的修改配置操作,得到修改路由配置信息;修改路由配置信息包括修改版本号和修改配置状态;修改版本号通过路由配置规则和初始版本号生成得到;将初始路由配置信息中的目标配置状态更新为下线状态,并将修改路由配置信息中的修改配置状态更新为发布状态;将发布状态的修改路由配置信息替换初始路由配置信息,得到目标路由配置信息。
在其中一个实施例中,信息确定模块704,还用于根据预设的路由配置规则,生成初始路由配置信息;初始路由配置信息包括路由标签;当容器集群中的初始网关发生目标事件时,从数据仓库中查找与路由标签相同的历史路由配置信息;历史路由配置信息包括历史配置状态;将历史配置状态由下线状态更新为发布状态,并将发布状态下的历史路由配置信息替换初始路由配置信息,得到目标路由配置信息。
上述集群流量管理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在其中一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过***总线连接,通信接口通过输入/输出接口连接到***总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储集群流量管理数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种集群流量管理方法.
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在其中一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在其中一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在其中一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(FerroelectricRandom Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(StaticRandom Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。