Sentinel概念

官网

官网

中文

是什么

一句话解释,之前我们讲解过的Hystrix

Hystrix

需要我们程序员自己手工搭建监控平台
没有一套web界面可以给我们进行更加细粒度化得配置
 比如流控、速率控制、服务熔断、服务降级。。。。。。

Sentinel

单独一个组件,可以独立出来。
直接界面化的细粒度统一配置。

约定 > 配置 > 编码 都可以写在代码里面,但是我们本次还是大规模的学习使用配置和注解的方式,尽量少写代码

去哪下

下载官网

能干嘛

1610803440823.png

怎么玩

官网

服务使用中的各种问题

服务雪崩
服务降级
服务熔断
服务限流

安装Sentinel控制台

sentinel组件由2部分组成

后台
前台8080

下载地址

1610803440872.png

我就将sentinel-dashboard-1.7.2.jar 传入到linux虚拟机中去执行了

运行命令

  1. java -jar sentinel-dashboard-1.7.2.jar

1610803440909.png

访问sentinel管理界面

http://192.168.1.108:8080
登录账号密码均为sentinel

1610803440949.png

初始化演示工程

启动nacos

启动Nacos8848成功

本次实验采用在linux上启动nacos

1610803440977.png

直接运行 sh startup.sh -m standalone

启动后需要等待一会才可以正常访问,启动是需要时间的

启动nginx

1610803441011.png

新建module

cloudalibaba-sentinel-service8401

pom

  1. <dependency>
  2. <groupId>com.alibaba.cloud</groupId>
  3. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  4. </dependency>
  5. <!--nacos-config-->
  6. <!-- <dependency>-->
  7. <!-- <groupId>com.alibaba.cloud</groupId>-->
  8. <!-- <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>-->
  9. <!-- </dependency>-->
  10. <dependency>
  11. <groupId>com.alibaba.cloud</groupId>
  12. <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
  13. </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控制台

空空如也,啥都没有

1610803441040.png

Sentinel采用的懒加载说明

执行一次访问即可

http://localhost:8401/testA
http://localhost:8401/testB

效果

1610803441083.png

sentinel8080正在监控微服务8401