入门级微服务项目搭建:七、集成Sentinel
Sentinel是阿里团队研发的一个流量防护组件,其主要的作用就是限流、熔断等,具体原理啥的就不在这里展开了,下面就开始集成Sentinel的实战吧。
1.下载Sentinel
Sentinel下载下来就是一个jar包,我的sentinel的版本是1.8.5。
下载地址:Release v1.8.5 · alibaba/Sentinel (github.com)
2.启动Sentinel
切换到jar所在目录,唤出命令行,使用如下命令启动:
java -server -Xms64m -Xmx256m -Dserver.port=8180 -Dcsp.sentinel.dashboard.server=localhost:8180 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.5.jar
启动后如下图所示:
访问网页版的sentinel控制台 |
---|
网址:Sentinel Dashboard |
用户名:sentinel |
密码:sentinel |
控制台如下图所示:
3.项目集成Sentinel
3.1 引入sentinel依赖
首先现在系统核心模块父工程中的pom文件中引入sentinel中引入依赖,如下所示:
<!--Sentinel-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
3.2 用户模块引入共享配置
类似于Sentinel这种的配置信息,可能会在多出编写,所以可以将其放入共享的配置文件当中编写一次,以后再有模块要用直接引用即可。
用户模块的bootstrap.yml文件如下所示:
spring:
application:
name: system-user #应用名称
cloud:
nacos:
# nacos注册中心配置
discovery:
server-addr: localhost:8848
namespace: 65c5f8cb-1afd-420a-b725-f24cedc22475
# nacos配置中心配置
config:
server-addr: localhost:8848
namespace: 65c5f8cb-1afd-420a-b725-f24cedc22475
file-extension: yml #注意此处要填写yml,填yaml可能无法从nacos中成功读取配置信息,目前不清楚原因
shared-configs:
- data-id: common-sentinel.yml #共享的sentinel配置文件
group: DEFAULT_GROUP
3.3 Nacos创建共享配置文件
最后形成如下配置文件:
4.测试Sentinel效果
4.1 启动项目
查看sentinel的控制台发现我们的用户服务没有出现
没有出现用户服务不用慌,你发一个请求,刷新一下页面就会出现了 |
---|
![]() |
![]() |
4.2 添加一条限流规则查看效果
添加规则 | |
---|---|
![]() | |
![]() | qps的意思是每秒钟能够接收的请求数。该条规则的意思就是,这个接口每秒钟只能访问一次,超过一次就不允许访问了,会直接报错 |
apifox上测试限流规则是否生效(此处我们使用apifox的自动化测试,进行验证) | |
---|---|
![]() | 新增测试场景 |
![]() | 填写信息 |
![]() | 添加步骤 |
![]() | 接口导入 |
![]() | 模拟短时间请求十次接口 |
![]() | 10次只成功一次,符合预期结果 |
![]() | sentinel控制台上的实时监控信息 |
由上诉结果可知,sentinel已经成功被集成进去了。