Sentinel 阿里高可用防护流量管理框架接入

  |  
阅读次数
  |  
字数 638
  |  
时长 ≈ 3 分钟

使用Docker部署Sentinel控制台

进入我的 github仓库 ,clone到本地后,进入sentinel目录,具体部署操作请看README.md。
启动后进入 http://localhost:8848 ,即可看到控制台首页。

项目接入(web层)

以下以springboot程序为例。

1)新增sentinel的starter

1
2
3
4
5
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
<version>0.1.0.RELEASE</version>
</dependency>

2)

这里port为程序与sentinel通信的服务端口,dashboard为控制台地址。

1
2
3
4
5
6
7
8
spring: 
cloud:
sentinel:
transport:
port: 8719
dashboard: localhost:8848
application:
name: cxfivr

3)

如果为非SpringBoot应用:
则需要添加依赖为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-core</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-web-servlet</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-simple-http</artifactId>
<version>1.4.0</version>
</dependency>

并在web.xml指定过滤器:

1
2
3
4
5
6
7
8
9
<filter>
<filter-name>SentinelCommonFilter</filter-name>
<filter-class>com.alibaba.csp.sentinel.adapter.servlet.CommonFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>SentinelCommonFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

最后启动时在vm option里面指定以下参数

1
-Dcsp.sentinel.dashboard.server=http://localhost:8848 -Dproject.name=cxfivr

4)

最后启动应用程序

初始化Sentinel客户端

启动完成应用后,需要手动访问一下应用的任意路径,以便sentinel客户端进行初始化,完成后才能在sentinel控制台里面看到接入的该应用程序菜单。
界面如下:
Sentinel 阿里高可用防护流量管理框架接入-图例1

管理限流

进入控制台后,可直接在控制台里面通过簇点链路 -> 流控设置限流规则。

Sentinel 阿里高可用防护流量管理框架接入-图例2

Service限流

使用aop来限流,学习官方demo了解流程

需要注意几点:

1)

需要在项目有使用aop的情况下才能使用,一般导入

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>

2)

@SentinelResource 注解需要用在 @Service service层。

3)

异常控制类,参数与返回类型必须遵循以下规则。返回类型需要与原方法相匹配,参数类型需要和原方法相匹配并且最后加一个额外的参数,类型为 BlockException

代码限流(主要用于除了web层以外的层,或者某个具体代码块)

代码限流可通过学习官方demo了解流程

控流规则持久化

官方demo

限流qps数据持久化

sentinel的数据默认是通过内存保存五分钟以内的数据,如果需要持久化查看可参考该文章