Spring Cloud Alibaba 极速通关 | Sentinel 整合 Apollo 实现配置持久化

一、简介

默认情况下,我们在控制台配置的规则并不会持久化,当项目重新启动之后,配置就会删除,这里我们整合 apollo + sentinel 进行配置持久化。

二、实例

1、添加核心依赖
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-alibaba-sentinel -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
		</dependency>

		<dependency>
			<groupId>com.alibaba.csp</groupId>
			<artifactId>sentinel-datasource-apollo</artifactId>
			<version>1.4.1</version>
		</dependency>
2、示例代码
@RestController
public class IndexController {
     

    @RequestMapping("/index")
    public String index() {
     
        return "index";
    }
    @SentinelResource(value = "getIndexConsole",blockHandler = "getOrderQpsEx")
    @RequestMapping("/getIndexConsole")
    public String getIndexConsole() {
     
        return "getIndexConsole";
    }
    
    public String getOrderQpsEx(BlockException e) {
     
        return "接口已经被限流";
    }

}
3、yml 配置文件
spring:
  application:
    name: sentinel
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8718
      eager: true
      datasource:
        ds:
          apollo:
            namespace-name: application
            flow-rules-key: sentinel.flowRules
            rule-type: flow
server:
  port: 8889
  tomcat:
    max-threads: 20

app:
  id: sentinel
  
apollo:
  meta: http://**.**.*.171:8080/
  cacheDir: /app/war/apollo/temp/
4、在 Apollo 配置中心添加配置

Apollo 配置中心创建项目 sentinel并添加以下配置

key

flowRules

val

[
    {
     
        "resource": "getIndexConsole",
        "limitApp": "default",
        "grade": 1,
        "count": 1,
        "strategy": 0,
        "controlBehavior": 0,
        "clusterMode": false
    }
]

resource 资源名,限流的接口
limitApp 流控针对的调用来源,default 不区分来源
grade 限流阈值类型,0代表根据线程数,1代表根据 Qps
count 限流阈值
strategy 采用策略
controlBehavior 流控效果, (快速失败 Warm Up 排队等待)
clusterMode 是否集群

三、结果测试

1、启动控制台

Spring Cloud Alibaba 极速通关 | Sentinel 整合 Apollo 实现配置持久化_第1张图片

2、启动项目

如果 Apollo 部署在 Docker 或者公网,添加启动参数

-Dapollo.configService=http://**.**.*.171:8080

3、在 Apollo 发布配置

Apollo 的配置已经刷新到控制台

Spring Cloud Alibaba 极速通关 | Sentinel 整合 Apollo 实现配置持久化_第2张图片

4、访问接口

http://localhost:8889/getIndexConsole

四、代码示例

https://github.com/huangliangyun/alibaba-learning/tree/master/spring-cloud-alibaba

—— 完

看完觉得有用,记得点赞,关注,转发!

ABOUT

我的 Github:Github
CSDN: CSDN
个人网站: sirius blog

推荐阅读
史上最全,最完美的 JAVA 技术体系思维导图总结,没有之一!

参考资料

https://github.com/alibaba/Sentinel/wiki/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%99%E6%89%A9%E5%B1%95
https://github.com/alibaba/spring-cloud-alibaba/wiki/Sentinel
http://blog.didispace.com/spring-cloud-alibaba-sentinel-2-2/

你可能感兴趣的:(Spring,Cloud,Alibaba)