侧边栏壁纸
  • 累计撰写 31 篇文章
  • 累计创建 6 个标签
  • 累计收到 2 条评论
标签搜索

目 录CONTENT

文章目录

spring cloud alibaba组件之Sentinel初步集成和使用

lj2508_com
2024-05-23 / 0 评论 / 0 点赞 / 87 阅读 / 1,227 字

关于选型部分略过。这个

1.介绍

这个可以看官网 点我
集成到spring cloud 官方教程

2.安装sentinel控制台

sentinel 是可以安装一个控制台来查看关于数据的一些问题的
1.1 下载sentinel
直接从 release 页面 下载最新版本的控制台 jar 包。
1.2 运行控制台程序
直接使用cmd或linux命令行使用 java -jar sentinel-dashboard-1.8.7.jar 执行即可,等待程序运行
以下是官方给出的运行方式

java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

image-1716656436174
如果没有修改配置的话,打开localhost:8080即可查看控制台,默认账号密码为sentinel/sentinel
image-1716656504254
image-1716656513455
查看到下面界面后表示运行成功
1.3 修改运行配置。避免被其他人访问。
控制台文档链接官方文档
用户可以通过如下参数进行配置:
-Dsentinel.dashboard.auth.username=sentinel 用于指定控制台的登录用户名为 sentinel;
-Dsentinel.dashboard.auth.password=123456 用于指定控制台的登录密码为 123456;如果省略这两个参数,默认用户和密码均为 sentinel;
-Dserver.servlet.session.timeout=7200 用于指定 Spring Boot 服务端 session 的过期时间,如 7200 表示 7200 秒;60m 表示 60 分钟,默认为 30 分钟;
-Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 这段是我从官方启动方式里面找到的
同样也可以直接在 Spring properties 文件中进行配置。
根据以上文档来看,我需要将启动命令改成如下 以下仅参考,可根据自己需求更改 注意jar包名称

java -Dserver.port=18080 -Dcsp.sentinel.dashboard.server=localhost:18080 -Dsentinel.dashboard.auth.username=root  -Dsentinel.dashboard.auth.password=qwerty  -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.7.jar

然后访问对应的网址,发现能够正确访问即可
image-1716657085364

3.spring cloud 集成sentinel

3.1 导入maven依赖 此处请查看后续的版本对应,选择正确的版本,直接按照官方教程集成可能会无法成功

  <!-- sentinel alibaba -->
   	 <!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-sentinel -->
   	<dependency>
   	    <groupId>com.alibaba.cloud</groupId>
   	    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
   	    <version>2023.0.1.0</version>
   	</dependency>

3.2 添加配置
需要将dashboard后面的地址更改为正确的控制台地址。

spring: 
    cloud:
        sentinel:
            transport:
                port: 8719
                dashboard: localhost:18080

3.3 编码
目前我对这个理解也比较少,目前看来仅需一个注解就可以简单的来使用,下面是示例
添加 @SentinelResource(value = “saveBanner”)注解即可,value为区分值,请不要一致

   @Override
   @SentinelResource(value = "saveBanner")
   public Mess save(Banner banner) {
       try {
           bannerDao.save(banner);
           return new Mess(0, "操作成功");
       } catch (Exception e) {
           // TODO: handle exception
           e.printStackTrace();
           return new Mess(500, e.getMessage());
       }
   }

3.4 查看效果
当我们编码完成之后,启动项目。查看控制台
image-1716657493233
发现控制台并没有新的应用,然后查看各处的配置并没有问题
这是因为sentinel配置之后需要访问到已配置的接口,才能在控制台中出现应用然后我访问以下我已经配置的savebanner,注。这个注解我写到了service实现类中,不知道是否正确,有问题可以在评论中提出
如果还是查看不到可以根据官方控制台没有显示我的应用或者没有监控展示如何排查
image-1716662075176
注意:如果实在没有成功,访问之后也没有日志可能是spring boot版本过低。经过本地测试,使用目前最新的依赖2023.0.1.0在spring boot 2.4.11 的情况下无法注册和使用。可自行新建一个spring boot测试项目来确定是否可以正确使用。下面是在2.4.11以及在3.2.5版本下访问接口后的情况
以下是2.4.11 无日志打出
image-1716662496290
以下是3.2.5 有日志输出,在控制台有数据,所以排查时也要考虑版本问题,太老的版本可能无法使用。2.4.11应该是21年的版本,如果可以升级到话,升级以下spring boot版本,在无法升级时,可以考虑一下旧版本,官方版本说明根据版本对应表,将ssentinel更换为2021.1
image-1716662605728
更改版本后。访问接口后日志正常打出。控制台也可以看到应用。后期考虑升级版本,2.4.11有点太老了,个人项目升级影响并不大
image-1716663055532
image-1716663111535
以下是多个微服务注册后的效果,更多效果后续在研究
image-1716720654292

0

评论区