Sentinel简介
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Sentinel具有如下特性:
- 丰富的应用场景:承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀,可以实时熔断下游不可用应用;
- 完备的实时监控:同时提供实时的监控功能。可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况;
- 广泛的开源生态:提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合;
- 完善的 SPI 扩展点:提供简单易用、完善的 SPI 扩展点。您可以通过实现扩展点,快速的定制逻辑。
Sentinel安装
Sentinel包括服务端和客户端,服务端有可视化界面,客户端需引入jar后即可和服务端通信并完成限流功能。
-
下载
从官网下载Sentinel,下载地址:https://github.com/alibaba/Sentinel/releases, 这里下载的是sentinel-dashboard-1.6.3.jar文件 -
启动
通过命令启动sentinel服务端:java -jar sentinel-dashboard-1.6.3.jar,默认启动8080端口。启动成功之后,通过如下地址可以进行访问:http://localhost:8080,默认登录账号密码均为sentinel。
此时因为我们并没有启动客户端,所以界面是空的。
客户端接入
客户端接入,这里分两种方式,一种是基于Spring Cloud的方式接入,另外一种是基于原生客户端的方式接入。
####Spring Cloud接入
首先,maven中引入:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>0.9.0.RELEASE</version>
</dependency>
然后,在yml配置文件里面,配置服务端地址:
spring:
application:
name: sentinel
cloud:
sentinel:
transport:
dashboard: localhost:8080
heartbeat-interval-ms:500
eager:true
接着,编写测试用例:
@RestController
public class HelloController {
@GetMapping(value = "/hello")
@SentinelResource("hello")
public String hello() {
return "Hello,Sentinel";
}
}
SentinelResource注解里的值是资源标识符,可以为这个资源标识符指定限流,熔断规则等,在浏览器里请求这个地址,然后查看sentinel控制台:
客户端接入
首先,maven中引入:
<properties>
<java.version>1.8</java.version>
<sentinel.version>1.6.3</sentinel.version>
</properties>
<!-- 适配dubbo -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-dubbo-adapter</artifactId>
<version>${
sentinel.version}</version>
</dependency>
<!-- 开启注解 -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId<