1.1 安装Sentinel控制台
在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
1.2 配置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
1.3 配置持久化
在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的控制台创建限流规则的配置
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/112114.html