2. 微服务保护 - Sentinel - 快速入门

2025-09-16  本文已影响0人  右耳菌

微服务保护的技术有很多,但在目前国内使用较多的还是Sentinel,所以接下来我们学习Sentinel的使用。

1. 初识Sentinel


2. 安装

2.1 Docker 安装
docker pull bladex/sentinel-dashboard:1.8.7
docker run -d \
  --name sentinel-dashboard \
  -p 8858:8858 \
  --restart unless-stopped \
  bladex/sentinel-dashboard:1.8.7
docker run -d \
  --name sentinel-dashboard \
  -p 8858:8858 \
  -e "-Dproject.name=sentinel-dashboard -Dsentinel.dashboard.auth.username=bsfc -Dsentinel.dashboard.auth.password=bsfc" \
  --restart unless-stopped \
  bladex/sentinel-dashboard:1.8.7
2.2 普通安装

https://github.com/alibaba/Sentinel/releases/download/1.8.7/sentinel-dashboard-1.8.7.jar

https://github.com/alibaba/Sentinel/releases/download/1.8.8/sentinel-dashboard-1.8.8.jar

java -Dserver.port=8090 -Dcsp.sentinel.dashboard.server=localhost:8090 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar
2.3 访问

http://192.168.56.1:8090/#/dashboard/home

账号密码如果不设置默认都是sentinel


3. 微服务整合

以cart-service为例子,步骤如下:

3.1 引入sentinel依赖
<!--sentinel-->
<dependency>
    <groupId>com.alibaba.cloud</groupId> 
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
3.2 配置控制台

修改application.yaml文件,添加下面内容:

spring:
  cloud: 
    sentinel:
      transport:
        dashboard: 192.168.56.1:8090
3.3 访问cart-service的任意端点

重启cart-service,然后访问查询购物车接口,sentinel的客户端就会将服务访问的信息提交到sentinel-dashboard控制台。并展示出统计信息:


点击簇点链路菜单,会看到下面的页面:


所谓簇点链路,就是单机调用链路,是一次请求进入服务后经过的每一个被Sentinel监控的资源。默认情况下,Sentinel会监控SpringMVC的每一个Endpoint(接口)。
因此,我们看到/carts这个接口路径就是其中一个簇点,我们可以对其进行限流、熔断、隔离等保护措施。

不过,需要注意的是,我们的SpringMVC接口是按照Restful风格设计,因此购物车的查询、删除、修改等接口全部都是/carts路径:


默认情况下Sentinel会把路径作为簇点资源的名称,无法区分路径相同但请求方式不同的接口,查询、删除、修改等都被识别为一个簇点资源,这显然是不合适的。

所以我们可以选择打开Sentinel的请求方式前缀,把请求方式 + 请求路径作为簇点资源名:
首先,在cart-service的application.yml中添加下面的配置:

spring:
  cloud:
    sentinel:
      transport:
        dashboard: 192.168.56.1:8090
      http-method-specify: true # 开启请求方式前缀

然后,重启服务,通过页面访问购物车的相关接口,可以看到sentinel控制台的簇点链路发生了变化:



如果觉得有收获,欢迎点赞和评论,更多知识,请点击关注查看我的主页信息哦~

上一篇 下一篇

猜你喜欢

热点阅读