CN113347041B - 动态限流熔断配置方法、装置、设备及存储介质 - Google Patents
动态限流熔断配置方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113347041B CN113347041B CN202110688612.4A CN202110688612A CN113347041B CN 113347041 B CN113347041 B CN 113347041B CN 202110688612 A CN202110688612 A CN 202110688612A CN 113347041 B CN113347041 B CN 113347041B
- Authority
- CN
- China
- Prior art keywords
- configuration
- fusing
- current
- route
- dynamic
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0823—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
- H04L41/0836—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability to enhance reliability, e.g. reduce downtime
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0876—Aspects of the degree of configuration automation
- H04L41/0886—Fully automatic configuration
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Automation & Control Theory (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及网关控制技术领域,本发明公开了一种动态限流熔断配置方法、装置、设备及存储介质,所述方法包括:通过获取网关初始化请求中的网关***名、路由清单和部署配置;从Redis缓存池中获取过滤配置和限流熔断默认配置,对路由清单中的各个路由进行配置,并创建网关***,以及启动配置完的所有路由,以启动网关***;接收网关***下的动态配置请求,获取路由名称以及限流熔断动态配置;存储至Redis缓存池;通过Hystrix控制中心从Redis缓存池中读取限流熔断动态配置,并运用继承重写方式,实时设置入与路由名称对应的路由中以完成限流熔断配置。因此,本发明实现了动态实时设置路由的限流熔断配置,实时满足各个路由的个性化的限流熔断的要求,灵活性高。
Description
技术领域
本发明涉及网关控制技术领域,尤其涉及一种动态限流熔断配置方法、装置、设备及存储介质。
背景技术
目前,随着互联网的快速发展,由于微服务能满足多元化的需求,具有灵活多样性,微服务越来越广泛应用,以致微服务框架下的微服务越来越庞大,由于各微服务的API接口之间存在相互依赖的关系,不断形成服务链相互调用的关系,如果某一微服务出现问题,就会导致调用异常,从而导致整体微服务框架下的服务链调用出现雪崩现象,甚至瘫痪现象,为此需要对微服务框架下的网关进行限流熔断处理,但是要实现限流熔断,都需要提前编写入网关中,或者修改限流熔断配置文件后重启网关,无法做到不停机配置限流熔断,实时满足限流熔断的要求,灵活性低,影响用户使用。
发明内容
本发明提供一种动态限流熔断配置方法、装置、计算机设备及存储介质,实现了动态实时设置路由的限流熔断配置,做到不停机配置限流熔断,实时满足各个路由的个性化的限流熔断的要求,灵活性高,提升了体验满意度。
一种动态限流熔断配置方法,包括:
接收网关初始化请求,获取所述网关初始化请求中的网关***名、路由清单和部署配置;
从Redis缓存池中获取过滤配置和限流熔断默认配置,根据所述部署配置、所述过滤配置和所述限流熔断默认配置,对所述路由清单中的各个路由进行配置,并创建与所述网关***名对应的网关***,以及启动配置完的所有所述路由,以完成启动网关***;
接收所述网关***下的动态配置请求,获取所述动态配置请求中的路由名称以及与所述路由名称关联的限流熔断动态配置;
将所述限流熔断动态配置存储至所述Redis缓存池;
通过Hystrix控制中心从所述Redis缓存池中读取所述限流熔断动态配置,并运用继承重写方式,将读取的所述限流熔断动态配置实时设置入与所述路由名称对应的路由中,完成该路由的限流熔断配置。
一种动态限流熔断配置装置,包括:
接收模块,用于接收网关初始化请求,获取所述网关初始化请求中的网关***名、路由清单和部署配置;
配置模块,用于从Redis缓存池中获取过滤配置和限流熔断默认配置,根据所述部署配置、所述过滤配置和所述限流熔断默认配置,对所述路由清单中的各个路由进行配置,并创建与所述网关***名对应的网关***,以及启动配置完的所有所述路由,以完成启动网关***;
获取模块,用于接收所述网关***下的动态配置请求,获取所述动态配置请求中的路由名称以及与所述路由名称关联的限流熔断动态配置;
存储模块,用于将所述限流熔断动态配置存储至所述Redis缓存池;
设置模块,用于通过Hystrix控制中心从所述Redis缓存池中读取所述限流熔断动态配置,并运用继承重写方式,将读取的所述限流熔断动态配置实时设置入与所述路由名称对应的路由中,完成该路由的限流熔断配置。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述动态限流熔断配置方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述动态限流熔断配置方法的步骤。
本发明提供的动态限流熔断配置方法、装置、计算机设备及存储介质,通过获取网关初始化请求中的网关***名、路由清单和部署配置;从Redis 缓存池中获取过滤配置和限流熔断默认配置,对所述路由清单中的各个路由进行配置,并创建与所述网关***名对应的网关***,以及启动配置完的所有所述路由,以完成启动网关***;接收所述网关***下的动态配置请求,获取路由名称以及与所述路由名称关联的限流熔断动态配置;将所述限流熔断动态配置存储至所述Redis缓存池;通过Hystrix控制中心从所述Redis 缓存池中读取所述限流熔断动态配置,并运用继承重写方式,实时设置入与所述路由名称对应的路由中,完成该路由的限流熔断配置,如此,实现了自动创建网关***,通过Redis缓存池中的过滤配置和限流熔断默认配置,对网关***中的各个路由进行配置并启动,以及通过Hystrix控制中心运用继承重写方式,动态实时设置路由的限流熔断配置,无需提前编写入网关中或者修改后重启网关,做到不停机配置限流熔断,实时满足各个路由的个性化的限流熔断的要求,灵活性高,完全不影响用户的使用,提升了体验满意度。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中动态限流熔断配置方法的应用环境示意图;
图2是本发明一实施例中动态限流熔断配置方法的流程图;
图3是本发明一实施例中动态限流熔断配置方法的步骤S20的流程图;
图4是本发明一实施例中动态限流熔断配置方法的步骤S204的流程图;
图5是本发明一实施例中动态限流熔断配置方法的步骤S50的流程图;
图6是本发明一实施例中动态限流熔断配置装置的原理框图;
图7是本发明一实施例中动态限流熔断配置装置的设置模块的原理框图;
图8是本发明一实施例中计算机设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供的动态限流熔断配置方法,可应用在如图1的应用环境中,其中,客户端(计算机设备或终端)通过网络与服务器进行通信。其中,客户端(计算机设备或终端)包括但不限于为各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一实施例中,如图2所示,提供一种动态限流熔断配置方法,其技术方案主要包括以下步骤S10-S50:
S10,接收网关初始化请求,获取所述网关初始化请求中的网关***名、路由清单和部署配置。
可理解地,所述网关初始化请求为需要对微服务框架下设置一个网关***的请求,该微服务框架为基于SpringCloud搭建的微服务集群,所述网关***名为对该网关***命的名称,所述路由清单为该网关***下涉及的路由名称或者路由地址的集合,所述部署配置为部署该网关***所需的相关的配置文件,所述部署配置为与SpringCloud相关部署操作相关的配置参数。
其中,SpringCloud是一系列框架的有序集合,也指利用Spring Boot的开发便利性简化了分布式***基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,能够用Spring Boot的开发模块做到一键启动和部署集群,从而搭建出所述微服务集群,所述Spring Boot可用创建独立的Spring应用程序,能够自动配置Spring容器。
S20,从Redis缓存池中获取过滤配置和限流熔断默认配置,根据所述部署配置、所述过滤配置和所述限流熔断默认配置,对所述路由清单中的各个路由进行配置,并创建与所述网关***名对应的网关***,以及启动配置完的所有所述路由,以完成启动网关***。
可理解地,所述Redis缓存池为基于Redis创建的缓存,所述Redis(RemoteDictionary Server),即远程字典服务,是一个开源的使用ANSI C语言编写、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种开发语言的应用程序接口,所述Redis缓存池中存储了所述过滤配置和所述限流熔断默认配置,所述过滤配置为设置网关***中的网关过滤工厂的相关参数以及需要被过滤掉的请求清单的集合,所述限流熔断默认配置为对各个路由设置统一的限流熔断配置,使各个路由具有初始的限流熔断要求,对所述路由清单中的各个路由进行配置的过程为通过重写run函数方式,在所述部署配置中的 Springboot启动类中注入所述过滤配置中的访问参数;启动所述Spring boot 启动类,并通过所述Hystrix控制中心对各个部署后所述路由进行限流熔断初始化处理的过程。
在一实施例中,如图3所示,所述步骤S20中,即所述从Redis缓存池中获取过滤配置和限流熔断默认配置,根据所述部署配置、所述过滤配置和所述限流熔断默认配置,对所述路由清单中的各个路由进行配置,并创建与所述网关***名对应的网关***,以及启动配置完的所有所述路由,以完成启动网关***,包括:
S201,通过基于SpringCloud的分布式配置中心,搭建以所述网关***名命名的所述网关***以及部署所述路由清单中的各个路由,并通过所述 Hystrix控制中心中的网关核心配置器,根据所述过滤配置中的过滤清单对所述网关***中的网关过滤工厂进行清单导入处理。
可理解地,通过基于SpringCloud的分布式配置中心,将所述路由清单中的各个路由汇集成一个集群,并将该集群形成的网关***命名为所述网关***名,并通过所述分布式配置中心推送SpringCloud环境配置文件至各个路由,并自动安装所述SpringCloud环境配置文件,完成各个路由的部署操作,从而搭建所述网关***,所述网关核心配置器用于将所述过滤清单导入网关过滤工厂,对进入网关***的请求或者实例进行过滤。
S202,通过重写run函数方式,在所述部署配置中的Spring boot启动类中注入所述过滤配置中的访问参数。
可理解地,通过定义一个预设的RefreshExternalJar类(即***类),通过ApplicationContextAware实现调用RefreshExternalJar类,Spring容器会自动把上下文环境对象调用ApplicationContextAware接口中的 setApplicationContextAware()方法,即Spring容器会检测容器中引入的所述 RefreshExternalJar类中的所有Bean,如果发现某个Bean实现了 ApplicationContextAware接口,Spring容器会在创建该Bean之后,自动调用该Bean的setApplicationContextAware()方法,并在Spring boot启动类中注入该RefreshExternalJar类,也即在启动类中重写run函数,通过 CommandLineRunner函数根据RefreshExternalJar类中相关Bean设置 CommandLineRunner接口,可通过实现内部类的方式,实现内部类的方式为使用与Bean对应的内部类以供回调,避免大量代码编写,十分便捷,以注入所述访问参数。
S203,启动所述Spring boot启动类,以按照所述访问参数定时访问所述网关过滤工厂。
可理解地,启动注入所述访问参数后的所述Spring boot启动类,以每隔所述访问参数进行访问所述网关过滤工厂,可以实时刷新所述网关过滤工厂中的过滤清单,随时变动,增加了灵活性。
S204,通过所述Hystrix控制中心对各个部署后所述路由进行限流熔断初始化处理。
可理解地,所述限流熔断初始化处理的过程为通过Hystrix控制中心中的 asKey函数,检测所述路由中的限流熔断setter属性是否为空;若所述限流熔断setter属性为空,通过Set函数将所述限流熔断默认配置录入所述限流熔断 setter属性中;通过匿名内部类的方式,创建与所述限流熔断setter属性对应的Mono对象的过程。
在一实施例中,如图4所示,所述步骤S204中,即所述通过所述Hystrix 控制中心对各个部署后所述路由进行限流熔断初始化处理,包括:
S2041,通过asKey函数,检测所述路由中的限流熔断setter属性是否为空。
可理解地,通过HystrixCommandGroupKey.Factory的asKey函数,分别获取HystrixCommandGroupKey对象、HystrixCommandKey对象,然后通过 Setter.withGroupKey.andCommandKey函数对HystrixCommandGroupKey对象和HystrixCommandKey对象进行检测,检测HystrixCommandGroupKey对象和HystrixCommandKey对象中的所述限流熔断setter属性是否为空。
S2042,若所述限流熔断setter属性为空,通过Set函数将所述限流熔断默认配置录入所述限流熔断setter属性中。
可理解地,通过Set函数的andCommandPropertiesDefaults对所述限流熔断setter属性进行赋予所述限流熔断默认配置。
S2043,通过匿名内部类的方式,根据录入后的所述限流熔断setter属性,创建与该路由对应的Mono对象,以初始化该路由的限流熔断配置。
可理解地,通过匿名内部类的方式,初始化RouteHystrixCommand对象,即获取setter对象、fallbackUri对象、chain,将获取的对象信息一起通过构建函数进行初始化,再通过调用Mono的create()函数的方法,创建与该路由对应的Mono对象。本发明实现了通过asKey函数,检测所述路由中的限流熔断setter属性是否为空;若所述限流熔断setter属性为空,通过Set函数将所述限流熔断默认配置录入所述限流熔断setter属性中;通过匿名内部类的方式,根据录入后的所述限流熔断setter属性,创建与该路由对应的Mono对象,以初始化该路由的限流熔断配置,如此,实现了通过Hystrix控制中心的asKey 函数和匿名内部类的方式,自动初始化各路由的限流熔断配置。
在一实施例中,若所述限流熔断setter属性不为空,通过Set函数将所述限流熔断默认配置覆盖所述限流熔断setter属性,并根据覆盖所述限流熔断 setter属性的更新与该路由对应的Mono对象,以初始化该路由的限流熔断配置。
S205,启动限流熔断初始化处理后的所有所述路由,以完成启动网关***。
可理解地,通过启动指令启动初始化处理后的所有所述路由,进而完成启动网关***。
本发明实现了通过基于SpringCloud的分布式配置中心,搭建以所述网关***名命名的所述网关***以及部署所述路由清单中的各个路由,并通过所述Hystrix控制中心中的网关核心配置器,根据所述过滤配置中的过滤清单对所述网关***中的网关过滤工厂进行清单导入处理;通过重写run函数方式,在所述部署配置中的Spring boot启动类中注入所述过滤配置中的访问参数;启动所述Spring boot启动类,以按照所述访问参数定时访问所述网关过滤工厂;通过所述Hystrix控制中心对各个部署后所述路由进行限流熔断初始化处理;启动限流熔断初始化处理后的所有所述路由,以完成启动网关***,如此,实现了自动对各个路由进行限流熔断初始化,减少人工配置的成本,统一配置限流熔断的操作,以启动网关***,避免一启动网关***就进入雪崩或者瘫痪状态。
S30,接收所述网关***下的动态配置请求,获取所述动态配置请求中的路由名称以及与所述路由名称关联的限流熔断动态配置。
可理解地,所述动态配置请求为用户或者开发工作人员在可视化的网关后管中心中选取需要动态配置的路由名称后并设置完相关限流或/和熔断参数之后触发的请求,所述限流熔断动态配置包括限流动态配置和熔断动态配置,所述限流动态配置包括每秒请求数量指标、限流类型指标和限流访问数,所述熔断动态配置包括错误率指标、失败上限短路基数指标、短路恢复时间指标和超时时间指标。
S40,将所述限流熔断动态配置存储至所述Redis缓存池。
可理解地,由于所述Redis缓存池具有访问速度快及并发量大的优势,通过存储至所述Redis缓存池中可以快速读取,并且将所述限流熔断动态配置通过异步存储方式存储至预设的限流熔断规则配置库中,通过所述限流熔断规则配置库可以作为备份的数据库且作为后续限流熔断动态配置过程中从历史的规则中选取调用。
S50,通过Hystrix控制中心从所述Redis缓存池中读取所述限流熔断动态配置,并运用继承重写方式,将读取的所述限流熔断动态配置实时设置入与所述路由名称对应的路由中,完成该路由的限流熔断配置。
可理解地,所述Hystrix控制中心为运用Hystrix语句对网关***中的各个路由进行限流熔断管理的中心,通过所述Hystrix控制中心检测到所述Redis 缓存池中的与所述路由名称关联的所述限流熔断动态配置发生存储变化时,自动读取新的限流熔断动态配置,所述继承重写方式为通过所述Hystrix控制中心编写继承AbstractGatewayFilterFactory类;根据所述限流熔断动态配置重写apply函数;执行重写后的apply函数,更新限流熔断中的相关属性,以实时设置入与所述路由名称对应的路由中,做到不停机配置限流熔断,且无需重启网关***。
本发明实现了通过接收网关初始化请求,获取所述网关初始化请求中的网关***名、路由清单和部署配置;从Redis缓存池中获取过滤配置和限流熔断默认配置,根据所述部署配置、所述过滤配置和所述限流熔断默认配置,对所述路由清单中的各个路由进行配置,并创建与所述网关***名对应的网关***,以及启动配置完的所有所述路由,以完成启动网关***;接收所述网关***下的动态配置请求,获取所述动态配置请求中的路由名称以及与所述路由名称关联的限流熔断动态配置;将所述限流熔断动态配置存储至所述Redis缓存池;通过Hystrix控制中心从所述Redis缓存池中读取所述限流熔断动态配置,并运用继承重写方式,将读取的所述限流熔断动态配置实时设置入与所述路由名称对应的路由中,完成该路由的限流熔断配置,如此,实现了自动创建网关***,通过Redis缓存池中的过滤配置和限流熔断默认配置,对网关***中的各个路由进行配置并启动,以及通过Hystrix控制中心运用继承重写方式,动态实时设置路由的限流熔断配置,无需提前编写入网关中或者修改后重启网关,做到不停机配置限流熔断,实时满足各个路由的个性化的限流熔断的要求,灵活性高,完全不影响用户的使用,提升了体验满意度。
在一实施例中,如图5所示,所述步骤S50中,即所述通过Hystrix控制中心从所述Redis缓存池中读取所述限流熔断动态配置,并运用继承重写方式,将读取的所述限流熔断动态配置实时设置入与所述路由名称对应的路由中,完成该路由的限流熔断配置,包括:
S501,通过所述Hystrix控制中心运用继承AbstractGatewayFilterFactory 类的方式,根据所述限流熔断动态配置重写apply函数。
可理解地,通过所述Hystrix控制中心中的gateway***实现拦截,通过继承AbstractGatewayFilterFactory类的方式,即按照AbstractGatewayFilterFactory类编写子类模板的方式,该子类模板中包括apply 函数和需要被配置的字段位置,将所述限流熔断动态配置中的配置的字段填入该子类模板的相应被配置的字段位置,将填入完后的apply函数记录为完成重写apply函数。
S502,执行重写后的所述apply函数,更新限流熔断setter属性。
可理解地,通过执行指令以执行所述重写后的所述apply函数,达到实时更新所述限流熔断setter属性,能够实时设置该路由的限流熔断配置。
本发明实现了通过继承AbstractGatewayFilterFactory类和重写apply函数,并自动执行重写后的apply函数,能够自动更新限流熔断setter属性,从而做到动态配置限流熔断配置。
在一实施例中,所述步骤S50之后,即所述完成该路由的限流熔断配置之后,包括:
S60,通过所述网关***对当前的服务运行实例按照资源粒度进行第一汇总分析处理,得到第一汇总数据。
可理解地,所述服务运行实例为进入网关***的服务请求,并运行该服务请求的实例,所述服务运行实例包括开始时间、结束时间、输入消息大小、输出消息大小、是否成功和失败类型等等相关信息,所述第一汇总分析处理的过程为对预设时间段范围内的所有服务运行实例按照各个资源维度进行划分的过程,从而得到所述第一汇总数据,例如10秒数据缓存区中的所有服务运行实例,所述资源粒度为资源维度,例如:“10分钟调用次数是否大于1 万指标”、“5分钟错误率大于1%指标”、“1分钟平均时长大于30秒指标”、“指标滚动统计窗口毫秒数”、“误差阈值百分比”、“睡眠窗口毫秒数”、“超时毫秒数、“熔断器请求的阈值”等等。
S70,将所述第一汇总数据推入所述网关***中的滑动时间窗口数组中,并提取出与所述路由名称对应的路由汇总数据,对所述路由汇总数据进行第二汇总分析处理,得到第二汇总数据。
可理解地,所述滑动时间窗口数组为对各个资源粒度划分出的随着时间滑动的数组存储区域,从所有所述滑动时间窗口数组中提取出与所述理由名称对应的所述路由汇总数据,所述第二汇总分析处理为针对所述限流熔断动态配置中的各指标进行规则配置,计算出所述限流熔断动态配置中的各指标的值。
S80,根据所述第二汇总数据和该路由中的所述限流熔断动态配置,判断是否触发限流机制或者熔断机制。
可理解地,将所述第二汇总数据和该路由中的所述限流熔断动态配置中的各个参数对比,判断对比结果中是否存在超出参数的指标,从而确定是否触发与超出参数的指标对应的限流机制或者熔断机制。
本发明实现了通过所述网关***对当前的服务运行实例按照资源粒度进行第一汇总分析处理,得到第一汇总数据;将所述第一汇总数据推入所述网关***中的滑动时间窗口数组中,并提取出与所述路由名称对应的路由汇总数据,对所述路由汇总数据进行第二汇总分析处理,得到第二汇总数据;根据所述第二汇总数据和该路由中的所述限流熔断动态配置,判断是否触发限流机制或者熔断机制,如此,实现了通过按照资源粒度的第一汇总分析处理,以及针对所述限流熔断动态配置中的各指标的第二汇总分析处理,自动判断是否触发限流机制或者熔断机制,能够快速地、准确地在需要限流或者熔断的情况下自动执行限流或者熔断机制。
在一实施例中,所述步骤S80之后,即所述判断是否触发限流机制或者熔断机制之后,包括:
S801,若触发限流机制,按照所述限流熔断动态配置中的限流配置参数执行限流操作。
可理解地,所述限流机制为通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护***的机制,一旦达到限制的速率,则按照所述限流配置参数,运用令牌桶算法执行限流操作,令牌桶算法为随着时间变化,会按恒定1/QPS时间间隔往桶里加入Token,如果桶已经满了就不再加了,新请求来临时,会各自拿走一个Token,如果没有Token可拿了就阻塞、排队等待、降级或者拒绝服务的算法。
S802,若触发熔断机制,按照所述限流熔断动态配置中的熔断配置参数执行熔断操作。
可理解地,所述熔断机制是应对雪崩效应的一种微服务链路保护机制,当某个微服务不可用或者响应时间太长时,触发熔断机制,按照所述熔断配置参数执行熔断操作,即停止该节点微服务的调用,快速返回错误的响应信息。
S803,若未触发所述限流机制和所述熔断机制,通过所述Hystrix控制中心定时监控所述Redis缓存池中与所述路由名称对应的限流熔断动态配置。
可理解地,如果没有触发所述限流机制和所述熔断机制,就通过所述 Hystrix控制中心定时监控所述Redis缓存池中的限流熔断动态配置,以实现实时更新限流熔断动态配置。
本发明实现了通过若触发限流机制,按照所述限流熔断动态配置中的限流配置参数执行限流操作;若触发熔断机制,按照所述限流熔断动态配置中的熔断配置参数执行熔断操作;若未触发所述限流机制和所述熔断机制,通过所述Hystrix控制中心定时监控所述Redis缓存池中与所述路由名称对应的限流熔断动态配置,如此,实现了根据触发的限流机制或者熔断机制,自动按照限流熔断动态配置,执行限流熔断动态配置中与其相应的限流操作或者熔断操作,未触发限流机制和熔断机制的情况下,定时监控限流熔断动态配置,以实现实时更新限流熔断动态配置。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种动态限流熔断配置装置,该动态限流熔断配置装置与上述实施例中动态限流熔断配置方法一一对应。如图6所示,该动态限流熔断配置装置包括接收模块11、配置模块12、获取模块13、存储模块 14和设置模块15。各功能模块详细说明如下:
接收模块11,用于接收网关初始化请求,获取所述网关初始化请求中的网关***名、路由清单和部署配置;
配置模块12,用于从Redis缓存池中获取过滤配置和限流熔断默认配置,根据所述部署配置、所述过滤配置和所述限流熔断默认配置,对所述路由清单中的各个路由进行配置,并创建与所述网关***名对应的网关***,以及启动配置完的所有所述路由,以完成启动网关***;
获取模块13,用于接收所述网关***下的动态配置请求,获取所述动态配置请求中的路由名称以及与所述路由名称关联的限流熔断动态配置;
存储模块14,用于将所述限流熔断动态配置存储至所述Redis缓存池;
设置模块15,用于通过Hystrix控制中心从所述Redis缓存池中读取所述限流熔断动态配置,并运用继承重写方式,将读取的所述限流熔断动态配置实时设置入与所述路由名称对应的路由中,完成该路由的限流熔断配置。
在一实施例中,如图7所示,所述设置模块15包括:
搭建单元51,用于通过基于SpringCloud的分布式配置中心,搭建以所述网关***名命名的所述网关***以及部署所述路由清单中的各个路由,并通过所述Hystrix控制中心中的网关核心配置器,根据所述过滤配置中的过滤清单对所述网关***中的网关过滤工厂进行清单导入处理;
注入单元52,用于通过重写run函数方式,在所述部署配置中的Springboot 启动类中注入所述过滤配置中的访问参数;
定时单元53,用于启动所述Springboot启动类,以按照所述访问参数定时访问所述网关过滤工厂;
初始单元54,用于通过所述Hystrix控制中心对各个部署后所述路由进行限流熔断初始化处理;
启动单元55,用于启动限流熔断初始化处理后的所有所述路由,以完成启动网关***。
关于动态限流熔断配置装置的具体限定可以参见上文中对于动态限流熔断配置方法的限定,在此不再赘述。上述动态限流熔断配置装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是客户端或者服务端,其内部结构图可以如图8所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括可读存储介质、内存储器。该可读存储介质存储有操作***、计算机程序和数据库。该内存储器为可读存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种动态限流熔断配置方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中动态限流熔断配置方法。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中动态限流熔断配置方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM (DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM (DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种动态限流熔断配置方法,其特征在于,包括:
接收网关初始化请求,获取所述网关初始化请求中的网关***名、路由清单和部署配置;
从Redis缓存池中获取过滤配置和限流熔断默认配置,根据所述部署配置、所述过滤配置和所述限流熔断默认配置,对所述路由清单中的各个路由进行配置,并创建与所述网关***名对应的网关***,以及启动配置完的所有所述路由,以完成启动网关***;
接收所述网关***下的动态配置请求,获取所述动态配置请求中的路由名称以及与所述路由名称关联的限流熔断动态配置;
将所述限流熔断动态配置存储至所述Redis缓存池;
通过Hystrix控制中心从所述Redis缓存池中读取所述限流熔断动态配置,并运用继承重写方式,将读取的所述限流熔断动态配置实时设置入与所述路由名称对应的路由中,完成该路由的限流熔断配置。
2.如权利要求1所述的动态限流熔断配置方法,其特征在于,所述完成该路由的限流熔断配置之后,包括:
通过所述网关***对当前的服务运行实例按照资源粒度进行第一汇总分析处理,得到第一汇总数据;
将所述第一汇总数据推入所述网关***中的滑动时间窗口数组中,并提取出与所述路由名称对应的路由汇总数据,对所述路由汇总数据进行第二汇总分析处理,得到第二汇总数据;
根据所述第二汇总数据和该路由中的所述限流熔断动态配置,判断是否触发限流机制或者熔断机制。
3.如权利要求2所述的动态限流熔断配置方法,其特征在于,所述判断是否触发限流机制或者熔断机制之后,包括:
若触发限流机制,按照所述限流熔断动态配置中的限流配置参数执行限流操作;
若触发熔断机制,按照所述限流熔断动态配置中的熔断配置参数执行熔断操作;
若未触发所述限流机制和所述熔断机制,通过所述Hystrix控制中心定时监控所述Redis缓存池中与所述路由名称对应的限流熔断动态配置。
4.如权利要求1所述的动态限流熔断配置方法,其特征在于,所述从Redis缓存池中获取过滤配置和限流熔断默认配置,根据所述部署配置、所述过滤配置和所述限流熔断默认配置,对所述路由清单中的各个路由进行配置,并创建与所述网关***名对应的网关***,以及启动配置完的所有所述路由,以完成启动网关***,包括:
通过基于SpringCloud的分布式配置中心,搭建以所述网关***名命名的所述网关***以及部署所述路由清单中的各个路由,并通过所述Hystrix控制中心中的网关核心配置器,根据所述过滤配置中的过滤清单对所述网关***中的网关过滤工厂进行清单导入处理;
通过重写run函数方式,在所述部署配置中的Springboot启动类中注入所述过滤配置中的访问参数;
启动所述Springboot启动类,以按照所述访问参数定时访问所述网关过滤工厂;
通过所述Hystrix控制中心对各个部署后所述路由进行限流熔断初始化处理;
启动限流熔断初始化处理后的所有所述路由,以完成启动网关***。
5.如权利要求4所述的动态限流熔断配置方法,其特征在于,所述通过所述Hystrix控制中心对各个部署后所述路由进行限流熔断初始化处理,包括:
通过asKey函数,检测所述路由中的限流熔断setter属性是否为空;
若所述限流熔断setter属性为空,通过Set函数将所述限流熔断默认配置录入所述限流熔断setter属性中;
通过匿名内部类的方式,根据录入后的所述限流熔断setter属性,创建与该路由对应的Mono对象,以初始化该路由的限流熔断配置。
6.如权利要求1所述的动态限流熔断配置方法,其特征在于,所述通过Hystrix控制中心从所述Redis缓存池中读取所述限流熔断动态配置,并运用继承重写方式,将读取的所述限流熔断动态配置实时设置入与所述路由名称对应的路由中,完成该路由的限流熔断配置,包括:
通过所述Hystrix控制中心运用继承AbstractGatewayFilterFactory类的方式,根据所述限流熔断动态配置重写apply函数;
执行重写后的所述apply函数,更新限流熔断setter属性。
7.一种动态限流熔断配置装置,其特征在于,包括:
接收模块,用于接收网关初始化请求,获取所述网关初始化请求中的网关***名、路由清单和部署配置;
配置模块,用于从Redis缓存池中获取过滤配置和限流熔断默认配置,根据所述部署配置、所述过滤配置和所述限流熔断默认配置,对所述路由清单中的各个路由进行配置,并创建与所述网关***名对应的网关***,以及启动配置完的所有所述路由,以完成启动网关***;
获取模块,用于接收所述网关***下的动态配置请求,获取所述动态配置请求中的路由名称以及与所述路由名称关联的限流熔断动态配置;
存储模块,用于将所述限流熔断动态配置存储至所述Redis缓存池;
设置模块,用于通过Hystrix控制中心从所述Redis缓存池中读取所述限流熔断动态配置,并运用继承重写方式,将读取的所述限流熔断动态配置实时设置入与所述路由名称对应的路由中,完成该路由的限流熔断配置。
8.如权利要求7所述的动态限流熔断配置装置,其特征在于,所述设置模块包括:
搭建单元,用于通过基于SpringCloud的分布式配置中心,搭建以所述网关***名命名的所述网关***以及部署所述路由清单中的各个路由,并通过所述Hystrix控制中心中的网关核心配置器,根据所述过滤配置中的过滤清单对所述网关***中的网关过滤工厂进行清单导入处理;
注入单元,用于通过重写run函数方式,在所述部署配置中的Springboot启动类中注入所述过滤配置中的访问参数;
定时单元,用于启动所述Springboot启动类,以按照所述访问参数定时访问所述网关过滤工厂;
初始单元,用于通过所述Hystrix控制中心对各个部署后所述路由进行限流熔断初始化处理;
启动单元,用于启动限流熔断初始化处理后的所有所述路由,以完成启动网关***。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述动态限流熔断配置方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述动态限流熔断配置方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110688612.4A CN113347041B (zh) | 2021-06-21 | 2021-06-21 | 动态限流熔断配置方法、装置、设备及存储介质 |
PCT/CN2021/109463 WO2022267179A1 (zh) | 2021-06-21 | 2021-07-30 | 动态限流熔断配置方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110688612.4A CN113347041B (zh) | 2021-06-21 | 2021-06-21 | 动态限流熔断配置方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113347041A CN113347041A (zh) | 2021-09-03 |
CN113347041B true CN113347041B (zh) | 2022-03-01 |
Family
ID=77478684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110688612.4A Active CN113347041B (zh) | 2021-06-21 | 2021-06-21 | 动态限流熔断配置方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113347041B (zh) |
WO (1) | WO2022267179A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114884889B (zh) * | 2022-07-11 | 2022-10-14 | 三未信安科技股份有限公司 | 一种关于分布式服务的组合限流方法 |
CN116302847B (zh) * | 2023-05-19 | 2023-08-04 | 智慧眼科技股份有限公司 | 异常信息的动态采集方法、装置、计算机设备及介质 |
CN117278640B (zh) * | 2023-09-05 | 2024-05-17 | 北京长河数智科技有限责任公司 | 一种基于数据归集的api接口调用方法及*** |
CN117493067B (zh) * | 2023-12-29 | 2024-04-23 | 北京淘友天下技术有限公司 | 基于数据服务保护的熔断控制方法及*** |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107222426A (zh) * | 2016-03-21 | 2017-09-29 | 阿里巴巴集团控股有限公司 | 控流的方法、装置及*** |
CN108900329A (zh) * | 2018-06-21 | 2018-11-27 | 珠海宏桥高科技有限公司 | 基于网关基础服务的实时动态转发方法 |
CN109672553A (zh) * | 2018-10-23 | 2019-04-23 | 平安科技(深圳)有限公司 | 网关动态配置方法、***、计算机设备及存储介质 |
CN109710238A (zh) * | 2018-12-20 | 2019-05-03 | 国云科技股份有限公司 | 一种基于Spring Cloud的代码生成方法 |
CN110535776A (zh) * | 2019-07-09 | 2019-12-03 | 中移(杭州)信息技术有限公司 | 网关限流方法、装置、网关、***及存储介质 |
CN112804722A (zh) * | 2020-12-31 | 2021-05-14 | 浪潮云信息技术股份公司 | 一种微服务网关动态路由的实现方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160112252A1 (en) * | 2014-10-15 | 2016-04-21 | Cisco Technology, Inc. | Deployment and upgrade of network devices in a network environment |
US9935816B1 (en) * | 2015-06-16 | 2018-04-03 | Amazon Technologies, Inc. | Border gateway protocol routing configuration |
US10623322B1 (en) * | 2017-09-15 | 2020-04-14 | Juniper Networks, Inc. | Dynamic prefix list for route filtering |
CN111669292B (zh) * | 2020-06-19 | 2023-06-20 | 普元信息技术股份有限公司 | 微服务架构下实现网关动态路由控制的方法 |
CN111884917A (zh) * | 2020-07-28 | 2020-11-03 | 浪潮云信息技术股份公司 | 基于微服务的网关***及网关动态路由方法 |
CN112260876B (zh) * | 2020-10-26 | 2022-08-16 | 欧冶云商股份有限公司 | 动态网关路由配置方法、平台、计算机设备及存储介质 |
CN112988274B (zh) * | 2021-03-25 | 2023-01-31 | 北京滴普科技有限公司 | 微服务网关插件动态加载方法、装置、***及其存储介质 |
-
2021
- 2021-06-21 CN CN202110688612.4A patent/CN113347041B/zh active Active
- 2021-07-30 WO PCT/CN2021/109463 patent/WO2022267179A1/zh unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107222426A (zh) * | 2016-03-21 | 2017-09-29 | 阿里巴巴集团控股有限公司 | 控流的方法、装置及*** |
CN108900329A (zh) * | 2018-06-21 | 2018-11-27 | 珠海宏桥高科技有限公司 | 基于网关基础服务的实时动态转发方法 |
CN109672553A (zh) * | 2018-10-23 | 2019-04-23 | 平安科技(深圳)有限公司 | 网关动态配置方法、***、计算机设备及存储介质 |
CN109710238A (zh) * | 2018-12-20 | 2019-05-03 | 国云科技股份有限公司 | 一种基于Spring Cloud的代码生成方法 |
CN110535776A (zh) * | 2019-07-09 | 2019-12-03 | 中移(杭州)信息技术有限公司 | 网关限流方法、装置、网关、***及存储介质 |
CN112804722A (zh) * | 2020-12-31 | 2021-05-14 | 浪潮云信息技术股份公司 | 一种微服务网关动态路由的实现方法 |
Non-Patent Citations (2)
Title |
---|
微服务在大型设备监控管理***中的应用探究;熊肖磊等;《现代机械》;20191228(第06期);91-96 * |
民航旅客服务***统一接口网关设计与实现;林乐健等;《数字通信世界》;20200901(第09期);21-23 * |
Also Published As
Publication number | Publication date |
---|---|
CN113347041A (zh) | 2021-09-03 |
WO2022267179A1 (zh) | 2022-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113347041B (zh) | 动态限流熔断配置方法、装置、设备及存储介质 | |
CN110020323B (zh) | 混合应用的页面切换方法、***、计算机设备及存储介质 | |
CN109871305B (zh) | 告警信息的处理方法、装置、计算机设备及存储介质 | |
CN110851159B (zh) | 业务规则更新方法、装置、计算机设备和存储介质 | |
CN110555041A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN102955714A (zh) | 实现动态模拟远程接口的装置及方法 | |
CN110955448A (zh) | 智能合约分离方法、合约处理方法、装置、设备及介质 | |
CN112035186A (zh) | H5页面的预加载及跳转方法、装置、设备及介质 | |
CN114531477B (zh) | 功能组件的配置方法、装置、计算机设备和存储介质 | |
CN111752975A (zh) | 基于Redis的数据加载方法、装置、计算机设备和存储介质 | |
CN105740042B (zh) | 虚拟机内存的管理方法和管理*** | |
CN110362341B (zh) | 基于微服务架构的业务管理方法、装置、设备和存储介质 | |
CN111416857A (zh) | 客户端崩溃处理方法、装置、***、设备和存储介质 | |
US10761863B2 (en) | Mobile application management by run-time insertion of a replacement instrumentation object into a mobile application process | |
CN114003432A (zh) | 参数校验方法、装置、计算机设备和存储介质 | |
CN111562952B (zh) | 双芯智能电表管理单元的动态装载方法、动态装载装置 | |
CN115509861A (zh) | 进程监控方法、***、计算机设备和存储介质 | |
CN115455414A (zh) | 一种安全检测方法和装置 | |
CN115061816A (zh) | 缓存中数据处理方法及装置 | |
CN114281260A (zh) | 应用于分布式存储***的存储方法、装置、设备及介质 | |
CN113434839A (zh) | 前端页面的访问方法和装置、存储介质及电子装置 | |
CN112559248A (zh) | 预处理服务恢复方法、装置、设备及存储介质 | |
CN112416410A (zh) | 小程序的数据管理方法、装置、计算机设备和存储介质 | |
CN111522564A (zh) | ***升级状态的识别方法、装置和计算机可读存储介质 | |
CN110969430A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40049386 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |