IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> sentinel+nacos持久化流控配置 -> 正文阅读

[Java知识库]sentinel+nacos持久化流控配置

概述

Sentinel?控制台是流量控制、熔断降级规则统一配置和管理的入口,它为用户提供了机器自发现、簇点链路自发现、监控、规则配置等功能。在?Sentinel?控制台上,我们可以配置规则并实时查看流量控制效果。

服务端

1、拉取sentinel代码地址

2、打开工程如下,重点关注core和dashboard的微服务

3、启动控制台时需要往jvm中写入参数

-Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-self -Dcsp.sentinel.api.port=8719
idea配置如下
相关参数说明:
参数
作用
-Dcsp.sentinel.dashboard.server=localhost:8080
向 Sentinel 接入端指定控制台的地址
-Dproject.name=sentinel-dashboard
向 Sentinel 指定应用名称,比如上面对应的应用名称就为?sentinel-dashboard
经过上述配置,控制台启动后会自动向自己发送心跳。程序启动后浏览器访问? localhost:8080? 即可访问? Sentinel? 控制台。 ? Sentinel 1.6.0? 开始,Sentinel? 控制台支持简单的 登录 功能,默认用户名和密码都是? sentinel 。用户可以通过如下参数进行配置:
  • -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 分钟;

4、然后启动微服务

默认用户名密码是 sentinel? ?sentinel

客户端接入

选择合适的方式接入? Sentinel,然后在应用启动时加入? JVM? 参数? -Dcsp.sentinel.dashboard.server=consoleIp:port? 指定控制台地址和端口。? 确保客户端有访问量, Sentinel 会在客户端首次调用的时候进行初始化,开始向控制台发送心跳包 ,将客户端纳入到控制台的管辖之下。 客户端正确配置并启动后,会 在初次调用后 主动向控制台发送心跳包,汇报自己的存在;? 控制台收到客户端心跳包之后,会在左侧导航栏中显示该客户端信息。如果控制台能够看到客户端的机器信息,则表明客户端接入成功了

1、客户端引入pom文件

切记版本号要与springboot的版本号一致? ?比如我们项目中是2.1.6.REALEASE?那么这里只能是2.1.x的版本,否则客户端无法正常运行
<dependency>
????<groupId>com.alibaba.cloud</groupId>
????<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
????<version>2.1.2.RELEASE</version>
</dependency>
启动时加上jvm参数即可:
-Dcsp.sentinel.dashboard.server=localhost:8080

2、限流配置测试

客户端注册上去后,发送几条指令,就可以看到相关数据了,同时可以进行接口限流的qps配置等等

持久化nacos

1、控制台工程修改

从github上拉取项目? https://github.com/137/sentinel-nacos.git
首先需要在官方项目中添加如下截图的java类以及修改webapp下的前端页面(前端的在此不特别圈出)

2、idea配置jvm参数,启动

-Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-self -Dcsp.sentinel.api.port=8719

3、客户端工程引入nacos

由于持久化的过程是sentinel-dashboard向nacos中写入数据,客户端向nacos拉取数据并根据策略配置进行各项服务限流操作,所以需要客户端引入nacos相关的依赖和数据源配置
pom文件如下:

<dependency>
????<groupId>com.alibaba.cloud</groupId>
????<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
????<version>2.1.2.RELEASE</version>
</dependency>


<!--使用 Nacos 配置规则-->
<dependency>
????<groupId>com.alibaba.csp</groupId>
????<artifactId>sentinel-datasource-nacos</artifactId>
????<version>1.8.3</version>
????<exclusions>
????????<exclusion>
????????????<groupId>com.alibaba.nacos</groupId>
????????????<artifactId>nacos-client</artifactId>
????????</exclusion>
????</exclusions>
</dependency>

由于工程中存在其它版本nacos的调用,所以在此排出,避免参数不一致而编译失败
application.yml配置文件如下:
spring:
??cloud:
????#配置sentinel客户端,注册该项目进控制台里
????sentinel:
??????eager: true
??????transport:
????????#配置Sentinel dashboard地址
????????dashboard: localhost:8080
????????# 默认8719端口,假如被占用了会自动从8719端口+1进行扫描,直到找到未被占用的 端口
????????port: 8719
??????#nacos??从nacos拉取数据需要配置
??????datasource:
????????#名称随意
????????flow:
??????????nacos:
????????????server-addr: 192.168.1.11:8848
????????????data_id: ${spring.application.name}-flow-rules
????????????namespace: sentinel
????????????group_id: SENTINEL_GROUP
????????????rule-type: flow
客户端启动参数就跟之前一样,加上jvm配置即可??
-Dcsp.sentinel.dashboard.server=localhost:8080

4、限流配置测试

先给客户端发送一条请求,然后进入到sentinel控制台页面 http://localhost:8080/
会发现?多了一些nacos的配置菜单,在簇点链路下的资源对应的流控2点击进入进行配置,即可快速配置具有持久化功能的对应指定接口的流控规则
这个时候可以去检查一下nacos是否写入了此配置
注意,客户端必须要跟server端配置相同的nacos地址以及命名空间和data-id的规则,不然没法生效配置,检查有没有生效,只要频繁调用接口,部分接口就会响应显示被blocked,就表示整个流程没问题了
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-17 21:56:42  更:2022-03-17 21:59:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:56:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码