Sentinel概念
官网
是什么
一句话解释,之前我们讲解过的Hystrix
Hystrix
需要我们程序员自己手工搭建监控平台
没有一套web界面可以给我们进行更加细粒度化得配置
比如流控、速率控制、服务熔断、服务降级。。。。。。
Sentinel
单独一个组件,可以独立出来。
直接界面化的细粒度统一配置。
约定 > 配置 > 编码 都可以写在代码里面,但是我们本次还是大规模的学习使用配置和注解的方式,尽量少写代码
去哪下
能干嘛
怎么玩
服务使用中的各种问题
服务雪崩
服务降级
服务熔断
服务限流
安装Sentinel控制台
sentinel组件由2部分组成
后台
前台8080
我就将sentinel-dashboard-1.7.2.jar 传入到linux虚拟机中去执行了
运行命令
java -jar sentinel-dashboard-1.7.2.jar
访问sentinel管理界面
http://192.168.1.108:8080
登录账号密码均为sentinel
初始化演示工程
启动nacos
启动Nacos8848成功
本次实验采用在linux上启动nacos
直接运行 sh startup.sh -m standalone
启动后需要等待一会才可以正常访问,启动是需要时间的
启动nginx
新建module
cloudalibaba-sentinel-service8401
pom
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--nacos-config-->
<!-- <dependency>-->
<!-- <groupId>com.alibaba.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
引入 spring-cloud-starter-alibaba-nacos-config 依赖,如果不在配置文件中进行配置,启动会报错,因此我直接不引入(大坑)
配置文件
application.yml
server:
port: 8401
spring:
application:
name: cloudalibaba-sentinel-service
cloud:
nacos:
discovery:
#Nacos注册中心地址
server-addr: ubuntu.wsl:8848 #nacos
enabled: true
sentinel:
transport:
dashboard: ubuntu.wsl:8080
# 指定和控制台通信的IP,若不配置,会自动选择一个IP注册
client-ip: ubuntu.wsl:8080
# 指定和控制台通信的端口哦,默认值8719
# 若不配置,会自动扫猫从8719开始扫猫,依次+1,知道值找到未被占用的端口
port: 8719
# 心跳发送周期,默认值null
# 但在SimpleHttpHeartbeatSender会用默认值10秒
heartbeat-interval-ms: 10000
management:
endpoints:
web:
exposure:
include: "*"
我使用wsl2当作linux开发环境 ,ubuntu.wsl 实在host文件中由 managed by wsl2-host 进行管理,自动获取wsl2的ip地址,wsl2ip地址会变化的
主启动类
@SpringBootApplication
@EnableDiscoveryClient
public class SentinelServiceMain8401 {
public static void main(String[] args) {
SpringApplication.run(SentinelServiceMain8401.class, args);
}
}
业务
@RestController
public class FlowLimitController {
@GetMapping("/testA")
public String testA() {
return "------------testA";
}
@GetMapping("/testB")
public String testB() {
return "------------testB";
}
}
测试
启动Sentinel8080
在wsl2的实例ubuntu20.04中启动sentinel
java -jar sentinel-dashboard-1.7.0
启动微服务8401
启动8401微服务后查看sentienl控制台
空空如也,啥都没有
Sentinel采用的懒加载说明
执行一次访问即可
http://localhost:8401/testA
http://localhost:8401/testB
效果
sentinel8080正在监控微服务8401