Sentinel 是什么?
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
运行
Sentinel包括服务端和客户端,服务端有可视化界面,客户端需引入jar后即可和服务端通信并完成限流功能。
客户端
接下来整合Spring boot
1.新建Spring Boot项目,pom.xml导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-simple-http</artifactId>
<version>1.8.0</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-common</artifactId>
<version>1.8.0</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-core</artifactId>
<version>1.8.0</version>
</dependency>
2.修改配置文件application.properties
server.port=8084
spring.cloud.sentinel.transport.port=8720
3.新建Controller
package com.example.sentinel.controller;
import com.alibaba.csp.sentinel.annotation.SentinelResource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/sentinel")
public class SentinelController {
@GetMapping(value = "hello")
@SentinelResource(value = "hello", fallback = "helloFallback")
public String hello() {
// throw new RuntimeException("error");
return "hello sentinel";
}
public String helloFallback() {
return "hello Fallback";
}
}
4.配置启动项
-Dproject.name=test-sentinel -Dcsp.sentinel.dashboard.server=localhost:8080
SentinelApplication
服务端
启动
https://github.com/alibaba/Sentinel/releases 在这个地址,下载release的jar,然后启动即可。
这个jar是个标准的Springboot应用,可以通过
java -jar sentinel-dashboard-1.8.0.jar来启动,这样就是默认的设置,启动在8080端口。也可以加上一些自定义配置来启动
java -Dserver.port=8080 -Dproject.name=sentinel-dashboard -jar ~/Downloads/sentinel-dashboard-1.8.0.jar。具体配置的解释,可以到控制台介绍上看一下文档。
访问sentinel UI
访问http://localhost:8080/,用户名密码默认都是sentinel
sentinel
配置流控规则
flowLimitflowLimit
测试
访问http://localhost:8084/sentinel/hello 并且快速刷新
fallback.png
hello sentinel 与 hello Fallback会交替出现。
说明sentinel流控已经生效。
网友评论