家用电脑桌面做网站,做网站在哪里找素材,网站建设的主要缺陷,福建省网站建设公司改造背景 前面我们讲解了如何对接Apollo来持久化限流的规则#xff0c;对接后可以直接通过Apollo的后台进行规则的修改#xff0c;推送到各个客户端实时生效。 但还有一个问题就是Sentinel控制台没有对接Apollo#xff0c;Sentinel控制台本来就可以修改限流的规则#xff0…改造背景 前面我们讲解了如何对接Apollo来持久化限流的规则对接后可以直接通过Apollo的后台进行规则的修改推送到各个客户端实时生效。 但还有一个问题就是Sentinel控制台没有对接ApolloSentinel控制台本来就可以修改限流的规则目前存在的情况就是通过Sentinel控制台修改的配置无法更新到Apollo中所以今天我们的主题是改造Sentinel控制台源码对接Apollo。 配置变更模式 最原始的模式如下图 Dashboard的推送规则方式是通过 API 将规则推送至客户端并直接更新到内存中这种做法的好处是简单无依赖坏处是应用重启规则就会消失仅用于简单测试不能用于生产环境。 我们在生产环境中需要用Push模式来进行对于 push 模式的数据源,如远程配置中心ZooKeeper, Nacos, Apollo等等推送的操作不应由 Sentinel 客户端进行而应该经控制台统一进行管理直接进行推送数据源仅负责获取配置中心推送的配置并更新到本地。因此推送规则正确做法应该是 配置中心控制台/Sentinel 控制台 → 配置中心 → Sentinel 数据源 → Sentinel而不是经 Sentinel 数据源推送至配置中心。这样的流程就非常清晰了 改造步骤 从 Sentinel 1.4.0 开始我们抽取出了接口用于向远程配置中心推送规则以及拉取规则 DynamicRuleProvider: 拉取规则DynamicRulePublisher: 推送规则我们只需要实现上面的两个规则即可实现我们想要的效果官方对于Nacos 和 Apollo 的推送和拉取规则已经有实现好了的代码在Dashboard源码的test目录下我们自己改造下就可以了。 首先我们需要把源代码拉到本地导入开发工具中找到下面的Apollo的代码 这部分代码是在test包下我们需要复制到main包下才行 复制过去后会发现一个问题所有Apollo相关的import都报错需要改下pom.xml中的配置把scope注释掉 !-- for Apollo rule publisher sample --dependencygroupIdcom.ctrip.framework.apollo/groupIdartifactIdapollo-openapi/artifactIdversion1.2.0/version!--scopetest/scope--/dependency ApolloConfig中需要修改的有PortalUrl和token: Beanpublic ApolloOpenApiClient apolloOpenApiClient() {ApolloOpenApiClient client ApolloOpenApiClient.newBuilder().withPortalUrl(http://localhost:10034).withToken(token).build();return client;} token的生成需要去Apollo的Portal中进行生成 创建应用信息生成token绑定appid FlowRuleApolloProvider和FlowRuleApolloPublisher需要把Apollo的appIdenv命名空间等改成你自己想用的才行。这边就不贴代码了。 改造完之后我们需要让控制器使用这两个新的规则修改FlowControllerV2的Qualifier的值注入对应的规则对象 Autowired
Qualifier(flowRuleApolloProvider)
private DynamicRuleProviderListFlowRuleEntity ruleProvider;Autowired
Qualifier(flowRuleApolloPublisher)
private DynamicRulePublisherListFlowRuleEntity rulePublisher; 这样改完其实还没效果因为页面上用的是FlowControllerV1的代码你可以直接在访问uri后面加上v2来访问但这不是很好最好是改下页面的代码让菜单直接跳转到新的页面去找到下面的代码 改成下面的样子 li ui-sref-activeactivea ui-srefdashboard.flow({app: entry.app})i classglyphicon glyphicon-filter/inbsp;nbsp;流控规则/a
/li 默认用的是dashboard.flowV1这个代码可以在app.js中找到 改完之后你就可以重新将Dashboard打包啦这样在Dashboard中修改规则的时候就会直接修改Apollo中的配置Apollo再推送给客户端。 欢迎加入我的知识星球一起交流技术免费学习猿天地的课程http://cxytiandi.com/course PS目前星球中正在星主的带领下组队学习Sentinel等你哦 转载于:https://www.cnblogs.com/yinjihuan/p/10708862.html