赞
踩
在https://github.com/alibaba/Sentinel/releases页面下载控制台的jar
包,放到服务器某个文件夹下
通过如下命令来启动控制台程序,-Dserver.port
指定了端口为9010,如果出现端口冲突,可以指定其他端口
java -Dserver.port=9010 -Dcsp.sentinel.dashboard.server=localhost:9010 -Dproject.name=sentinel-dashboard -jar -Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError $APP_NAME >/dev/null 2>
&1 &
通过http://localhost:9010就可以访问控制台,用户名和密码默认为sentinel/sentinel
在shop-user
模块的pom
文件中添加相应的依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
然后在yaml
文件中配置客户端与控制台通信端口以及控制台地址
spring:
cloud:
sentinel:
transport:
# sentinel客户端与控制台通信端口号(默认为8719,可以任意指定)
port: 8719
dashboard: xxx.com:9010
启动shop-user
应用,随便调用一个接口,就可以在sentinel的控制台看到shop-user
服务的相关信息
注:sentinel
是懒加载模式,只有调用了接口,才能在控制台看到服务,也可以通过设置spring.cloud.sentinel.eager:true
,服务启动就建立心跳连接
详细的使用参考:https://github.com/alibaba/spring-cloud-alibaba/wiki/Sentinel
在Sentinel中,可以通过控制台为每个客户端设置各种各样的规则,但这些规则默认是存储在内存中,每次重复服务,配置都会被情况,不适用于生产环境。因此Sentinel提供了pull
和push
的动态扩展,这两种方式分别对应不同的数据源
模式 | 支持扩展数据源 | 获取规则方式 | 优点 | 缺点 |
---|---|---|---|---|
pull | 动态文件数据源、Consul、Eureka | 定期轮询 | 接入简单 | 实时性差 |
push | Zookeeper、Redis、Nacos、Apollo | 监听规则变化 | 一致性,实时性高 | 规则同步至数据源比较复杂 |
以Sentinel集成Nacos做数据源为例
在shop-user
的pom
文件中添加相应的依赖
<!-- sentinel集成nacos作为数据源 -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
然后在配置文件配置数据源的相关属性,由于spring.cloud.sentinel.datasource
属性对应的是一个Map
,所以它的需要自定义指定Map的KEY,下面的配置中ds
就作为KEY,然后后面就可以配置不同的数据源
spring:
cloud:
sentinel:
datasource:
ds:
nacos:
server-addr: 127.0.0.1:8848
namespace: 24712b7c-05ad-4b79-af97-1d202431f521
dataId: shop-user-sentinel.json
groupId: LZ_GROUP_MASTER
rule-type: flow
data-type: json
DataSourcePropertiesConfiguration
中可以看到不同数据源对应的属性类,具体的参数可以参考这些属性类
public class DataSourcePropertiesConfiguration {
private FileDataSourceProperties file;
private NacosDataSourceProperties nacos;
private ZookeeperDataSourceProperties zk;
private ApolloDataSourceProperties apollo;
private RedisDataSourceProperties redis;
private ConsulDataSourceProperties consul;
}
然后在Nacos的控制台创建限流规则的配置
配置内容如下:
[
{
"resource": "/user/test",
"limitApp": "default",
"grade": 1,
"count": 2,
"strategy": 0,
"controlBehavior": 0,
"clusterMode": false
}
]
Sentinel控制台不具备同步修改Nacos配置的能力,而Nacos由于可以通过在客户端中使用Listener来实现自动更新。所以,在整合了Nacos做规则存储之后,需要知道在下面两个地方修改存在不同的效果:
Sentinel控制台中修改规则:仅存在于服务的内存中,不会修改Nacos中的配置值,重启后恢复原来的值。
Nacos控制台中修改规则:服务的内存中规则会更新,Nacos中持久化规则也会更新,重启后依然保持。
注:《SpringCloudAlibaba微服务原理与实战》这本书上提供了Sentinel控制台流控规则到Nacos的同步
在配置Sentinel的数据源时,一定要在后面datasource属性后面加上一个额外的字符串,作为数据源Map的KEY
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。