Sentinel整合Apollo进行规则持久化

时间:2022-07-23
本文章向大家介绍Sentinel整合Apollo进行规则持久化,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

阅读文本大概需要3分钟。

上篇进行了Apollo配置中的源码搭建,这篇Sentinel整合Apollo进行规则持久化。上篇还有些地方可能说的不太明白。先来梳理一下,在进行Sentinel整合Apollo进行规则持久化。

  • 在执行com.ctrip.framework.apollo.assembly.ApolloApplication时,进行了如图的配置

其实appollo_profile配置项的github对应application-github.properties配置文件

而application-github.properties的配置项如下

# DataSource
spring.datasource.url = ${spring_datasource_url}
spring.datasource.username = ${spring_datasource_username}
spring.datasource.password = ${spring_datasource_password}

所以这些启动参数使可以直接配置到application-github.properties配置文件的。

  • 在执行com.ctrip.framework.apollo.portal.PortalApplication时,进行了如图的配置

dev_meta配置项最后覆盖

分别代表开发环境DEV、测试环境FAT、预生产UAT、生产PRO。

  • 重要的几个项目

apollo-configservice:提供配置获取接口,提供配置更新推送接口,接口服务对象为Apollo客户端

apollo-adminservice:提供配置管理接口,提供配置修改、发布等接口,接口服务对象为Portal,以及Eureka

apollo-portal:提供Web界面供用户管理配置

apollo-client:Apollo提供的客户端程序,为应用提供配置获取、实时更新等功能

开始如何使用 Apollo 来配置规则进行持久化

0x01:修改pom.xml文件

将<scope>test</scope>注释掉,修改后如下:

 <!-- for Apollo rule publisher sample -->
<dependency>
    <groupId>com.ctrip.framework.apollo</groupId>
    <artifactId>apollo-openapi</artifactId>
    <version>1.2.0</version>
</dependency>

0x02:java代码迁移

找到如下目录(位于test目录)

sentinel-dashboard/src/test/java/com/alibaba/csp/sentinel/dashboard/rule/apollo

将整个目录拷贝到

sentinel-dashboard/src/main/java/com/alibaba/csp/sentinel/dashboard/rule/apollo

修改com.alibaba.csp.sentinel.dashboard.controller.v2.FlowControllerV2.java

修改成

  • 修改HTML页面

找到sidebar.html页面

sentinel-dashboard/src/main/webapp/resources/app/scripts/directives/sidebar.html并找到如下代码段后,并把注释放开

修改后

经过以上步骤就已经把流控规则改造成推模式持久化了。