搜索
简帛阁>技术文章>Sentinel整合Apollo进行规则持久化

Sentinel整合Apollo进行规则持久化

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

     上篇【 Apollo配置中心源码编译及搭建 】进行了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文件

test注释掉,修改后如下:

 <!-- for Apollo rule publisher sample -->
<dependency>
    <groupId>com.ctrip.framework.apollo</groupId>
    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并找到如下代码段后,并把注释放开

修改后

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

下篇进行微服务改造,验证改造是否成功,敬请期待~~~~

往期精彩

01 Sentinel如何进行流量监控

02 Nacos源码编译

03 基于Apache Curator框架的ZooKeeper使用详解

04 spring boot项目整合xxl-job

05 互联网支付系统整体架构详解

关注我

每天进步一点点

喜欢!在看☟

Sentinel规则默认是存储在内存中的,只要服务重启之后对应的规则也会消失,实际的生产中肯定是不允许这种操作,因此Sentinel官方推荐在生产架构中使用第三方数据源作为永久存储中心,比如nacos
在之前的两篇教程中我们分别介绍了如何将Sentinel的限流规则存储到Nacos和Apollo中。同时,在文末的思考中,我都指出了这两套整合方案都存在一个不足之处:不论采用什么配置中心,限流规则都只能
Sentinel控制台中配置的规则,默认是保存在内存中的,重启后就会丢失;本文主要介绍规则持久,文中使用到的软件版本:Sentinel132、SpringBoot225RELEASE、Spri
簇点链路簇点链路:就是项目内的调用链路,链路中被监控的每个接口就是一个资源。默认情况下sentinel会监控SpringMVC的每一个端点(Endpoint),因此SpringMVC的每一个端点(En
虽然限流可以尽量避免因高并发而引起的服务故障,但服务还会因为其它原因而故障。而要将这些故障控制在一定范围,避免雪崩,就要靠线程隔离(舱壁模式)和熔断降级手段了。不管是线程隔离还是熔断降级,都是对客户端
我们在orderservice中整合Sentinel,并且连接Sentinel的控制台,步骤如下:1引入sentinel依赖:<!引入sentinel依赖><dependency&g
目录概念@SentinelResource小试牛刀TestControllerjavadefaultFallbackfallback流量控制熔断降级热点参数限流高级选项概念商品ID为参数,统计一段时间
流控效果是指请求达到流控阈值时应该采取的措施,包括三种:1快速失败:达到阈值后,新的请求会被立即拒绝并抛出FlowException异常。是默认的处理方式。2warmup:预热模式,对超出阈值的请求同
之前的限流是统计访问某个资源的所有请求,判断是否超过QPS阈值。而热点参数限流是分别统计参数值相同的请求(或统计参数值相同的资源),判断是否超过QPS阈值。代表的含义是:对hot这个资源的0号参数(第
授权规则可以对调用方的来源做控制,有白名单和黑名单两种方式。1白名单:来源(origin)在白名单内的调用者允许访问2黑名单:来源(origin)在黑名单内的调用者不允许访问例如,我们限定只允许从网关