一种限流集群自动管理方法、装置、系统及存储介质与流程
本申请涉及云服务,尤其涉及一种限流集群自动管理方法、装置、系统及存储介质。
背景技术:
1、在分布式系统中,为了保障系统的稳定性,通常需要对流量进行管理和控制,以防止瞬时高并发请求导致服务过载。限流技术作为流量控制的重要手段,可以有效减少资源消耗,保障系统的可用性。现有的限流技术一般依赖于集中式或分布式流控组件,在分布式架构下,采用集群化的限流方案可以提高流控的可靠性和可扩展性。
2、在集群限流方案中,通常会设置一个或多个流控服务端(server)负责全局流量管理,其他流控客户端(client)向流控服务端查询限流决策,以确保各个节点的流控规则保持一致。然而,由于分布式环境的动态性,集群中的节点可能会发生上下线变动,导致流控服务端不可用,影响整个流量控制机制的稳定性。
3、目前的集群限流管理方式通常依赖于手动配置或固定主节点模式,存在一定的局限性。一方面,手动配置的方式需要运维人员介入,无法满足高度动态化的分布式环境;另一方面,固定主节点模式在主节点故障时,可能导致整个流控系统短暂不可用,影响业务稳定性。
技术实现思路
1、为了解决上述技术问题,本申请提供了一种限流集群自动管理方法、装置、系统及存储介质。
2、下面对本申请中提供的技术方案进行描述:
3、本申请第一方面提供了一种限流集群自动管理方法,所述方法包括:
4、监听集群中所有的服务实例的运行状态,并基于监听结果维护当前所有处于在线运行状态的服务实例的实例名单,所述实例名单中记录有作为集群流控服务端的一个第一服务实例和作为集群流控客户端的第二服务实例,所述第二服务实例的个数大于等于1个;
5、当监听到所述第一服务实例发生下线变动时,基于预设的第一选举机制,在当前所有的所述第二服务实例中确定一个第二服务实例作为新的集群流控服务端,并更新所述实例名单;
6、当监听到处于离线状态的服务实例发生上线变动,和/或至少一个所述第二服务实例发生下线变动时,更新所述实例名单。
7、可选的,所述监听集群中所有的服务实例的运行状态包括:
8、通过nacos中的订阅服务订阅集群中所有的服务实例的变动信息;
9、向所述订阅服务传入预设的监听器和当前服务的服务名,所述服务名用于标识集群中属于当前服务的服务实例;
10、通过所述监听器获取所述变动信息,以监听对应各个服务实例的运行状态。
11、可选的,所述通过所述监听器获取各个服务实例的运行状态包括:
12、基于sentinel的datasource机制,构建用于监听nacos中的服务实例上下线状态的datasource,并将所述datasource注册至sentinel的集群流控的接口;
13、通过所述datasource监听集群流控的各个服务实例的上下线变动。
14、可选的,所述基于监听结果维护当前所有处于在线运行状态的服务实例的实例名单包括:
15、当通过所述监听器接收到服务实例的变动信息时,通过全量可用实例查询方法获取当前服务下的所有处于在线运行状态的服务实例的实例名单。
16、可选的,所述基于预设的第一选举机制,在当前所有的所述第二服务实例中确定一个第二服务实例作为新的集群流控服务端包括:
17、获取当前所有的所述第二服务实例;
18、根据每个所述第二服务实例的ip地址与端口号对所有的所述第二服务实例进行正向排序;
19、选取排序后名单中的首个所述第二服务实例作为新的集群流控服务端,排序后名单中的其余所述第二服务实例作为集群流控客户端。
20、可选的,当监听到处于离线状态的服务实例发生上线变动,和/或至少一个所述第二服务实例发生下线变动时,所述方法还包括:
21、基于预设的第二选举机制,在当前所有处于在线运行状态的服务实例中确定一个第二服务实例作为新的集群流控服务端,并更新所述实例名单。
22、可选的,所述实例名单存储于nacos中,所述方法还包括:
23、通过sentinel的初始化函数initfunc,获取存储于nacos中的当前所有处于运行状态的服务实例的实例名单;
24、基于所述实例名单调整所有服务实例在sentinel的集群流控中的角色属性。
25、本申请第二方面提供了一种限流集群自动管理装置,所述装置包括:
26、监听单元,用于监听集群中所有的服务实例的运行状态,并基于监听结果维护当前所有处于在线运行状态的服务实例的实例名单,所述实例名单中记录有作为集群流控服务端的一个第一服务实例和作为集群流控客户端的第二服务实例,所述第二服务实例的个数大于等于1个;
27、选举单元,用于当监听到所述第一服务实例发生下线变动时,基于预设的第一选举机制,在当前所有的所述第二服务实例中确定一个第二服务实例作为新的集群流控服务端,并更新所述实例名单;
28、更新单元,用于当监听到处于离线状态的服务实例发生上线变动,和/或至少一个所述第二服务实例发生下线变动时,更新所述实例名单。
29、本申请第三方面提供了一种限流集群自动管理系统,所述系统包括:
30、处理器、存储器、输入输出单元以及总线;
31、所述处理器与所述存储器、所述输入输出单元以及所述总线相连;
32、所述存储器保存有程序,所述处理器调用所述程序以执行第一方面以及第一方面中任一项可选的所述方法。
33、本申请第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上保存有程序,所述程序在计算机上执行时执行第一方面以及第一方面中任一项可选的所述方法。
34、从以上技术方案可以看出,本申请具有以下优点:
35、1、通过监听集群中所有服务实例的运行状态,可以实时感知服务实例的上下线,确保流控机制具备动态适应能力。当集群流控服务端(server)下线时,自动触发选举机制,选出新的server,避免流控功能中断,提高集群的稳定性和可靠性。
36、2、采用预设的第一选举机制,在所有运行中的服务实例中自动选出新的server,避免人工干预,降低维护成本。该选举机制可确保server实例的稳定性,并能适应集群规模的动态变化,提高故障恢复能力。
37、3、实例名单会动态自动更新,无论是新增实例(上线)还是实例下线,集群内的所有节点都会自动感知并调整自身角色,确保流控系统能够自适应变化。
38、4、集群流控客户端(client)无需手动配置server的地址,而是通过动态维护的实例名单自动发现并连接新的server,提升部署和维护的便捷性。该机制确保client始终连接到可用的server,防止因server故障导致限流决策失败的问题,提高集群流控的容错性。
1.一种限流集群自动管理方法,其特征在于,所述方法包括:
2.根据权利要求1中所述的限流集群自动管理方法,其特征在于,所述监听集群中所有的服务实例的运行状态包括:
3.根据权利要求2中所述的限流集群自动管理方法,其特征在于,所述通过所述监听器获取各个服务实例的运行状态包括:
4.根据权利要求2中所述的限流集群自动管理方法,其特征在于,所述基于监听结果维护当前所有处于在线运行状态的服务实例的实例名单包括:
5.根据权利要求1中所述的限流集群自动管理方法,其特征在于,所述基于预设的第一选举机制,在当前所有的所述第二服务实例中确定一个第二服务实例作为新的集群流控服务端包括:
6.根据权利要求1中所述的限流集群自动管理方法,其特征在于,当监听到处于离线状态的服务实例发生上线变动,和/或至少一个所述第二服务实例发生下线变动时,所述方法还包括:
7.根据权利要求1至6中任一项所述的限流集群自动管理方法,其特征在于,所述实例名单存储于nacos中,所述方法还包括:
8.一种限流集群自动管理装置,其特征在于,所述装置包括:
9.一种限流集群自动管理系统,其特征在于,所述系统包括:
10.一种计算机可读存储介质,所述计算机可读存储介质上保存有程序,所述程序在计算机上执行时执行如权利要求1至7中任一项所述方法。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com