CN111984310A - 一种Sentinel基于Nacos推模式持久化方法 - Google Patents

一种Sentinel基于Nacos推模式持久化方法 Download PDF

Info

Publication number
CN111984310A
CN111984310A CN202010982962.7A CN202010982962A CN111984310A CN 111984310 A CN111984310 A CN 111984310A CN 202010982962 A CN202010982962 A CN 202010982962A CN 111984310 A CN111984310 A CN 111984310A
Authority
CN
China
Prior art keywords
rule
sentinel
nacos
rules
memory
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.)
Pending
Application number
CN202010982962.7A
Other languages
English (en)
Inventor
赵名扬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Martian Interactive Entertainment Co ltd
Original Assignee
Shenzhen Martian Interactive Entertainment Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Martian Interactive Entertainment Co ltd filed Critical Shenzhen Martian Interactive Entertainment Co ltd
Priority to CN202010982962.7A priority Critical patent/CN111984310A/zh
Publication of CN111984310A publication Critical patent/CN111984310A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种Sentinel基于Nacos推模式持久化方法,该方法的具体步骤为:下载Sentinel的源码包下载并解压完成后,使用IDE打开sentinel‑dashboard项目;修在sentinel‑dashboard项目的pom.xml文件,引入sentinel‑datasource‑nacos依赖,找到源代码中的规则适配器,并实现DynamicRuleProvider动态规则适配器接口的;本发明当用户需要迁移微服务的时候,只需要运维人员从Naocs Server导出规则配置文件,导入到新的Naocs Server环境即可,从而解决了规则迁移难的问题。

Description

一种Sentinel基于Nacos推模式持久化方法
技术领域
本发明涉及推模式持久化技术领域,具体是一种Sentinel基于Nacos推模式持久化方法。
背景技术
Sentinel是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、***负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性,小游戏广告控制微服务使用了spring cloud alibaba微服务技术方案,使用Sentinel监控每个微服务的请求的QPS,并可对QPS很大的接口进行限流和降级,在高流量高并发情况下,保护微服务正常运行。
Sentinel的所有规则都可以在内存态中动态地查询及修改,修改之后立即生效。同时Sentinel也提供相关API,供您来定制自己的规则策略
Sentinel的默认限流降级规则是存在内存中的,当微服务重启后对应微服务的限流和降级规则会消失。每次需要重新配置,这显然是不符生产环境上线需求的,现有解决方案是提供拉模式,原理:FileRefreshableDataSource定时从指定文件中读取规则JSON文件【图中的本地文件】,如果发现文件发生变化,就更新规则缓存。FileWritableDataSource接收控制台规则推送,并根据配置,修改规则JSON文件【图中的本地文件】。
发明内容
本发明的目的在于提供一种Sentinel基于Nacos推模式持久化方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种Sentinel基于Nacos推模式持久化方法,该方法的具体步骤为:
下载Sentinel的源码包下载并解压完成后,使用IDE打开sentinel-dashboard项目;
修在sentinel-dashboard项目的pom.xml文件,引入sentinel-datasource-nacos依赖,找到源代码中的规则适配器,并实现DynamicRuleProvider动态规则适配器接口的,根据App微服务名称获取规则的方法要实现的规则;
新增naosConfig配置类通过nacosConfigService()方法;
控制台保存规则时,规则先保存在内存中,然后根据微服务名称找到对应的Nacos规则发布适配器实现类;
当sentinel需要读取规则时候先去内存查询规则,如果在内存中获取不到会根据微服务名称规则名称找到对应的Nacos规则适配器实现类FlowRuleNacosProvider,FlowRuleNacosProvider类引入Nacos的ConfigService的Bean对象,通过configService.getConfig(String dataId,String group,long timeoutMs)方法,微服务名称加后缀(如sping-cloud-flow-rules组成dataId,group固定参数SENTINEL_GROUP,timeoutMs超时时间设置为3000毫秒),找到Nacos配置中心dataId为sping-cloud-flow-rules的配置文件,并把将规则JSON内存转成对象,同时把规则对象缓存到内存当中。
作为本发明进一步的方案:根据App微服务名称获取规则的方法要实现的规则类型具体为:流控规则、降级规则、***规则和授权规则。
1、首先需要下载Sentinel的源码包下载并解压完成后,使用IDE打开sentinel-dashboard这个项目
2、修在项目的pom.xml文件,引入sentinel-datasource-nacos依赖
找到源代码中的
/sentinel-nacos-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule
包加入复制
/sentinel-nacos-dashboard/src/test/java/com/alibaba/csp/sentinel/dashboard/rule/nacos
nacos规则适配器,并实现DynamicRuleProvider动态规则适配器接口的根据App微服务名称获取规则的方法要实现的规则类型有流控规则(-flow-rules)、降级规则(-degrade-rules)、***规则(-system-rules)、授权规则(-authority-rules)
比如微服务名称是sping-cloud流控规则后缀是-flow-rules在nacos里面保存
sping-cloud-flow-rules:
3.新增naosConfig配置类通过nacosConfigService()方法
propertiesc传入nacos的serveraddr和namespace
通过ConfigFactory.createConfigService(properties);方法创建
ConfigService的Bean,实现nacos地址和nacos命名空间可配置;
3.当用户在控制台保存规则时,规则先保存在内存中,然后根据微服务名称找到对应的Nacos规则发布适配器实现类FlowRuleNacosPublisher,FlowRuleNacosPublisher引入Nacos的ConfigService的Bean对象,通过configService.publishConfig(StringdataId,String group,String content)方法,微服务名称加后缀(如sping-cloud-flow-rules组成dataId,group固定参数SENTINEL_GROUP,content为规则内容JSON转成String文本),找到Nacos配置中心dataId为sping-cloud-flow-rules的配置文件,如果没有该配置文件nacos则会创建改配置文件,存储到Nacos server配置中心。如果该规则在Nacos配置中心的dataId已经存在,则会修改dataId配置文件里面的内容。
4.当sentinel需要读取规则时候先去内存查询规则,如果在内存中获取不到会根据微服务名称规则名称找到对应的Nacos规则适配器实现类FlowRuleNacosProvider,FlowRuleNacosProvider类引入Nacos的ConfigService的Bean对象,通过configService.getConfig(String dataId,String group,long timeoutMs)方法,微服务名称加后缀(如sping-cloud-flow-rules组成dataId,group固定参数SENTINEL_GROUP,timeoutMs超时时间设置为3000毫秒),找到Nacos配置中心dataId为sping-cloud-flow-rules的配置文件,并把将规则JSON内存转成对象,同时把规则对象缓存到内存当中。同时返回给sentinel。
与现有技术相比,本发明的有益效果是:1.当规则保存成功后。sentinel重启会根据App微服务名称获取sentinel全部的规则如(流控规则、降级规则、***规则、授权规则)然后放入内存中。这样就能使内存中的配置永远处于最新的状态(从而让本地缓存总是和Nacos一致),sentinel只需要进行流控时候只需要去内存获取配置规则,这样就大大减少了sentinel读取Nacos server配置中心的次数,减少服务器压力。从而解决性能问题。
2.当用户需要迁移微服务的时候,只需要运维人员从Naocs Server导出规则配置文件,导入到新的Naocs Server环境即可,从而解决了规则迁移难的问题。
附图说明
图1为一种Sentinel基于Nacos推模式持久化方法示意图;
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明实施例中,一种Sentinel基于Nacos推模式持久化方法,该方法的具体步骤为:
下载Sentinel的源码包下载并解压完成后,使用IDE打开sentinel-dashboard项目;
修在sentinel-dashboard项目的pom.xml文件,引入sentinel-datasource-nacos依赖,找到源代码中的规则适配器,并实现DynamicRuleProvider动态规则适配器接口的,根据App微服务名称获取规则的方法要实现的规则;
新增naosConfig配置类通过nacosConfigService()方法;
控制台保存规则时,规则先保存在内存中,然后根据微服务名称找到对应的Nacos规则发布适配器实现类;
当sentinel需要读取规则时候先去内存查询规则,如果在内存中获取不到会根据微服务名称规则名称找到对应的Nacos规则适配器实现类FlowRuleNacosProvider,FlowRuleNacosProvider类引入Nacos的ConfigService的Bean对象,通过configService.getConfig(String dataId,String group,long timeoutMs)方法,微服务名称加后缀(如sping-cloud-flow-rules组成dataId,group固定参数SENTINEL_GROUP,timeoutMs超时时间设置为3000毫秒),找到Nacos配置中心dataId为sping-cloud-flow-rules的配置文件,并把将规则JSON内存转成对象,同时把规则对象缓存到内存当中。
根据App微服务名称获取规则的方法要实现的规则类型具体为:流控规则、降级规则、***规则和授权规则。
1、首先需要下载Sentinel的源码包下载并解压完成后,使用IDE打开sentinel-dashboard这个项目
2、修在项目的pom.xml文件,引入sentinel-datasource-nacos依赖
找到源代码中的
/sentinel-nacos-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule
包加入复制
/sentinel-nacos-dashboard/src/test/java/com/alibaba/csp/sentinel/dashboard/rule/nacos
nacos规则适配器,并实现DynamicRuleProvider动态规则适配器接口的根据App微服务名称获取规则的方法要实现的规则类型有流控规则(-flow-rules)、降级规则(-degrade-rules)、***规则(-system-rules)、授权规则(-authority-rules)
比如微服务名称是sping-cloud流控规则后缀是-flow-rules在nacos里面保存
sping-cloud-flow-rules:
3.新增naosConfig配置类通过nacosConfigService()方法
propertiesc传入nacos的serveraddr和namespace
通过ConfigFactory.createConfigService(properties);方法创建
ConfigService的Bean,实现nacos地址和nacos命名空间可配置;
3.当用户在控制台保存规则时,规则先保存在内存中,然后根据微服务名称找到对应的Nacos规则发布适配器实现类FlowRuleNacosPublisher,FlowRuleNacosPublisher引入Nacos的ConfigService的Bean对象,通过configService.publishConfig(StringdataId,String group,String content)方法,微服务名称加后缀(如sping-cloud-flow-rules组成dataId,group固定参数SENTINEL_GROUP,content为规则内容JSON转成String文本),找到Nacos配置中心dataId为sping-cloud-flow-rules的配置文件,如果没有该配置文件nacos则会创建改配置文件,存储到Nacos server配置中心。如果该规则在Nacos配置中心的dataId已经存在,则会修改dataId配置文件里面的内容。
4.当sentinel需要读取规则时候先去内存查询规则,如果在内存中获取不到会根据微服务名称规则名称找到对应的Nacos规则适配器实现类FlowRuleNacosProvider,FlowRuleNacosProvider类引入Nacos的ConfigService的Bean对象,通过configService.getConfig(String dataId,String group,long timeoutMs)方法,微服务名称加后缀(如sping-cloud-flow-rules组成dataId,group固定参数SENTINEL_GROUP,timeoutMs超时时间设置为3000毫秒),找到Nacos配置中心dataId为sping-cloud-flow-rules的配置文件,并把将规则JSON内存转成对象,同时把规则对象缓存到内存当中。同时返回给sentinel。
虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
故以上所述仅为本申请的较佳实施例,并非用来限定本申请的实施范围;即凡依本申请的权利要求范围所做的各种等同变换,均为本申请权利要求的保护范围。

Claims (2)

1.一种Sentinel基于Nacos推模式持久化方法,其特征在于,该方法的具体步骤为:
下载Sentinel的源码包下载并解压完成后,使用IDE打开sentinel-dashboard项目;
修在sentinel-dashboard项目的pom.xml文件,引入sentinel-datasource-nacos依赖,找到源代码中的规则适配器,并实现DynamicRuleProvider动态规则适配器接口的,根据App微服务名称获取规则的方法要实现的规则;
新增naosConfig配置类通过nacosConfigService()方法;
控制台保存规则时,规则先保存在内存中,然后根据微服务名称找到对应的Nacos规则发布适配器实现类;
当sentinel需要读取规则时候先去内存查询规则,如果在内存中获取不到会根据微服务名称规则名称找到对应的Nacos规则适配器实现类FlowRuleNacosProvider,FlowRuleNacosProvider类引入Nacos的ConfigService的Bean对象,通过configService.getConfig(String dataId,String group,long timeoutMs)方法,微服务名称加后缀(如sping-cloud-flow-rules组成dataId,group固定参数SENTINEL_GROUP,timeoutMs超时时间设置为3000毫秒),找到Nacos配置中心dataId为sping-cloud-flow-rules的配置文件,并把将规则JSON内存转成对象,同时把规则对象缓存到内存当中。
2.根据权利要求1所述的一种Sentinel基于Nacos推模式持久化方法,其特征在于,根据App微服务名称获取规则的方法要实现的规则类型具体为:流控规则、降级规则、***规则和授权规则。
CN202010982962.7A 2020-09-16 2020-09-16 一种Sentinel基于Nacos推模式持久化方法 Pending CN111984310A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010982962.7A CN111984310A (zh) 2020-09-16 2020-09-16 一种Sentinel基于Nacos推模式持久化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010982962.7A CN111984310A (zh) 2020-09-16 2020-09-16 一种Sentinel基于Nacos推模式持久化方法

Publications (1)

Publication Number Publication Date
CN111984310A true CN111984310A (zh) 2020-11-24

Family

ID=73450032

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010982962.7A Pending CN111984310A (zh) 2020-09-16 2020-09-16 一种Sentinel基于Nacos推模式持久化方法

Country Status (1)

Country Link
CN (1) CN111984310A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114553786A (zh) * 2022-04-22 2022-05-27 深圳丰尚智慧农牧科技有限公司 网络请求熔断方法、装置、计算机设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110012088A (zh) * 2019-03-29 2019-07-12 山东浪潮云信息技术有限公司 一种基于Kubernets的Redis主从集群自动化部署方案
US20200019342A1 (en) * 2018-07-12 2020-01-16 Micron Technology, Inc. Determination of data integrity based on sentinel cells
CN111130939A (zh) * 2019-12-26 2020-05-08 深圳前海环融联易信息科技服务有限公司 一种流量控制方法、装置、计算机设备及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200019342A1 (en) * 2018-07-12 2020-01-16 Micron Technology, Inc. Determination of data integrity based on sentinel cells
CN110012088A (zh) * 2019-03-29 2019-07-12 山东浪潮云信息技术有限公司 一种基于Kubernets的Redis主从集群自动化部署方案
CN111130939A (zh) * 2019-12-26 2020-05-08 深圳前海环融联易信息科技服务有限公司 一种流量控制方法、装置、计算机设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
STWEN_HAO: "Sentinel使用Nacos存储规则及同步", 《HTTPS://WWW.IT610.COM/ARTICLE/1294192431549456384.HTM》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114553786A (zh) * 2022-04-22 2022-05-27 深圳丰尚智慧农牧科技有限公司 网络请求熔断方法、装置、计算机设备和存储介质

Similar Documents

Publication Publication Date Title
US10387451B2 (en) Synchronization system for multiple client devices
AU2009296436B2 (en) Trickle sync protocol
US20110219093A1 (en) Synchronizing services across network nodes
US20130067492A1 (en) Content-filter publish-subscribe system that optimizes interprocess communications
US20050125564A1 (en) Profiling service for the automatic service discovery and control middleware frameworks
CN111787126B (zh) 容器创建方法、服务器及存储介质
US8001213B2 (en) Method, apparatus and computer program product for providing unrestricted content on a user terminal
CN111506592B (zh) 一种数据库的升级方法和装置
CN112230966B (zh) 一种ota升级方法及装置
CN101170675A (zh) 网络电视***中管理j2me应用程序的方法和***
CN109445833B (zh) 一种React-native热更新的方法
CN104038520A (zh) 一种多版本分布式资源管理方法和***
CN113452617B (zh) 动态网关路由管理方法、装置及存储介质
CN112579928A (zh) 页面跳转方法、装置、计算机设备及计算机可读存储介质
CN114697304B (zh) 一种灰度发布方法、***、装置、设备及存储介质
CN112328413B (zh) 应用服务的调用方法、装置及***
CN111984310A (zh) 一种Sentinel基于Nacos推模式持久化方法
US20070226302A1 (en) Wireless email communications system providing resource updating features and related methods
CN111880836A (zh) 移动终端应用的页面缓存及刷新方法、装置和移动终端
CN109756484B (zh) 基于对象存储的网关的控制方法、控制装置、网关和介质
CN111090446A (zh) 一种配置文件更新方法及***
CN107025122B (zh) 一种轻应用接入方法及***
CN110941471A (zh) 一种软件***基础数据国际化的方法及装置
CN107343042B (zh) 浏览器流量劫持方法、装置及移动终端
CA2788942C (en) Content-filter publish-subscribe system that optimizes interprocess communications

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20201124