API接口服务的开发与优化(提升API服务的质量和可用性)
295
2022-11-08
Sentinel整合Apollo进行规则持久化(二)
今天就最终实现:Sentinel整合Apollo进行规则持久化
0x01:先把Apollo配置中心启动
主要启动如下三个服务:
apollo-configservice:提供配置获取接口,提供配置更新推送接口,接口服务对象为Apollo客户端
apollo-adminservice:提供配置管理接口,提供配置修改、发布等接口,接口服务对象为Portal,以及Eureka
apollo-portal:提供Web界面供用户管理配置
0x02:sentinel-dashboard代码改动
【Sentinel整合Apollo进行规则持久化】整体只是把相关代码移动了一些位置,现在还需做些许改动。
配置类设置参数
根据实际情况修改Apollo管理后台地址和开发平台授权token
Apollo管理后台地址
token
FlowRuleApolloProvider修改
FlowRuleApolloPublisher修改:
备注:这里要注意如果使用ApolloConfigUtil.getFlowDataId()方法获取flowDataId,则在Apollo配置中心需要按照约定建立配置项的Key。
改造完成后,并可以启动sentinel-dashboard
0x03:Apollo配置中心添加配置
添加配置并发布
源码
flowRules = [{"app":"pay-service","clusterMode":false,"controlBehavior":0,"count":300,"gmtModified":1596855658214,"grade":1,"id":1,"limitApp":"default","resource":"/getUser","strategy":0}]degrades = [{"resource": "/getUser","count": 50,"timeWindow": 5,"grade": 0},{"resource": "/getUser","count": 5,"timeWindow": 8,"grade": 2},{"resource": "/erro","count": 0.5,"timeWindow": 5,"grade": 1}]authoritys = [{"resource": "/getUser","limitApp": "192.168.12.215","strategy": 1}]paramflows = [{"resource": "/getUser","grade": 1,"paramIdx": 1,"count": 10,"paramFlowItemList": []}]systems = [{"qps": 20}]
0x04:微服务改造
新建项目olive-apollo-sentinel-datasource,对应的pom.xml文件
新建SpringBoot启动类
package com.olive;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}
启动微服务
0x05:测试验证
访问接口
http://localhost:8866/getUser
访问Sentinel
备注:可以通过修改相关配置来验证,Apollo和Sentinel是否相互同步,即在Apollo修改后,是否Sentinel能获取最新配置;或者在Sentinel修改后,是否Apollo能获取最新配置。
最后,这里只改造了流控规则,其他规则的改造与以上改造一致
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~