Sentinel简单使用
Sentinel使用
一、简介
官网:https://github.com/alibaba/sentinel
中文文档:https://github.com/alibaba/Sentinel/wiki/介绍
中文文档也是从GitHub
上点击链接跳转过来的,GitHub
哪里有一个“中文文档”这样的字眼,直接点击就可以跳转到这里了。
1.1、下载和安装
安装需要注意:Sentinel
是java
写的,所以需要JDK1.8
以上的的版本。默认端口号为 8080
,所以地址需要注意 8080
端口号不能被占用。
- 下载
- 安装
下载下来直接是一个jar
包,启动就和普通的jar
启动方式样,不用过多介绍。
nohup java -jar xxxx.jar &
我在Windows
上测试,所以我就直接使用 java -jar XXX.jar
启动了。
1.2、Sentinel 的主要特性
1.3、Sentinel生态
1.4、解决那些问题
- 服务雪崩
- 服务降级
- 服务熔断
- 服务限流
二、创建后端工程
创建 spring-cloud-alibaba-sentinel
工程。
2.1、引入依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
如果直接使用 sentinel
,那么这个包就可以了。但是在sentinel
里面的配置我们需要持久化,否则我们重新启动自己的jar,sentinel
里面的配置就没有了。所以还需要引入一下这个依赖,将sentinel
里面的配置同步到nacos
中,nacos
是可以将数据持久化到mysql
数据库的,所以就不用担心数据丢失的问题。
<!-- 将sentinel的数据同步到nacos中 -->
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
强调
如果还需要使用 openfeign
怎么办,还需要引入 openfeign
的依赖吗?
<!-- openfeign -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
spring-cloud-starter-alibaba-sentinel
这个依赖中已经包含了常用的 spring-boot-starter-web
、spring-cloud-starter-openfeign
、spring-cloud-starter-netflix-ribbon
。但是需要注意的是,里面的 <optoinal>true</optoinal>
设置成了true
,所以下面是不能被继承的。
没有直接引入版本号,因为父工程引入springcloudalibaba的包管理器了。
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba-dependencies.version}</version><type>pom</type><scope>import</scope> </dependency>
2.2、将程序注入sentinel中
直接在配置文件中配置一下就可以了,其他什么都不需要添加,包括启动程序都不需要添加任何东西。
server:port: 8401spring:application:name: sentinel-service # 当前工程名称cloud:sentinel:transport:dashboard: localhost:8080 # sentinel地址port: 8719 # Sentinel api端口 ,默认8719,假如被占用了会自动从8719开始依次+1扫描。直至找到未被占用的端口management:endpoints:web:exposure:include: '*' # springboot 监控 Actuator 的端点暴露,* 为暴露所有端点。
2.3、测试
首先启动Sentinel
,第一次启动sentinel
,在浏览器上访问 IP:8080
,你会发现什么都没有,因为我们程序还没有启动。
在启动我们程序,在刷新sentinel
控制台,依然没有任何东西,因为我们要访问接口了才有数据。启动程序,访问一次接口。
这样就注入成功了。
三、流控规则
3.1、流控模式
直接
给/testA
添加一个链路。
关联
如果 /testA
关联 /testB
,这里只能通过一个QPS通过。那么如果当前 /testB
每秒有 1一个以上的的请求在持续访问,那么 /testA
就不能访问了。
- 创建关联控流
- postman做连续发送请求
- 测试
现在的配置意思是,/testB
每秒超过 1个QPS,那么 /testA
就不能访问。
链路
无
3.2、流控效果
预热
预热时间计算:单机阈值 / 3 = 刚开始阈值。
- 应用场景
秒杀系统,刚开始的时候,可能有很多数据在缓存哪里可能没有,所以刚开始的时候放少量的QPS过来,过几秒后没问题了,缓存中说句丰富了。
排队等待
匀速通过,不管来多少个,每次只能请求几个。
四、降级规则
4.1、RT平均时长
上图有误,纠正
每秒中请求QPS大于 5 个,但是在200毫秒内没有响应,那么就降级处理。1秒钟后恢复。
4.2、异常比例(单位秒级)
4.3、异常数
五、热点规则
5.1、普通配置
热点规则,就是控制某个接口上的某个参数每秒中可以正常访问多少个QPS。需要使用到 com.alibaba.csp.sentinel.annotation.SentinelResource
注解。
配置好规则后,我执行以下请求
http://localhost:8401/ok?name=sadfa
每秒中只能请求一次。
http://localhost:8401/ok
随便请求,不影响。
5.2、参数例外项
异常统一处理
目前我测试没有效果
源码地址:https://github.com/gl-stars/small-study-case/tree/master/nm-demo/SpringSecurityOAuth2-demo
Sentinel简单使用相关推荐
- Spring Cloud Alibaba (三)Sentinel 简单介绍和使用
前言 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制.熔断降级.系统自适应保护等多个维度来帮助您保障微服务 ...
- Sentinel 简单使用
文章目录 一.Sentinel 概述 1.Sentinel 的主要特性 2.Sentinel 分为两个部分 3.启动 Sentinel 控制台 二.SpringCloud 生成 sentinel 客户 ...
- Redis Sentinel 模拟故障迁移
什么是redis sentinel 参考文档:https://redis.io/topics/sentinel 简单的来说,就是Redis Sentinel 为redis 提供高可用性,主要体现在下面 ...
- OpenFeign 简单使用
文章目录 一.源码简单分析 1.导入依赖 2.自动导入类 3.OkHttpFeignLoadBalancedConfiguration 类 4.DefaultFeignLoadBalancedConf ...
- SpringCloud 第八期 Sentinel 熔断限流
sentinel可以作为监控平台使用,下载jar包运行 官网说明文档,有中文 Wiki - Gitee.com sentinel下载地址 https://github.com/alibaba/Sent ...
- SpringCloudAlibabaSentinel入门教程
阿里Sentinel入门教程 https://www.it610.com/article/1294173596180094976.htm 最近在学习阿里系的微服务组件,读了很多关于sentinel的文 ...
- Spring Cloud Alibaba 学习笔记
官方地址:https://spring.io/projects/spring-cloud-alibaba github:https://github.com/alibaba/spring-cloud- ...
- Sentinel实现限流,竟是如此的简单!
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:https://tianyalei.blog.csd ...
- 阿里开源Sentinel流控框架基本介绍与简单使用
作者:未完成交响曲,资深Java工程师!目前在某一线互联网公司任职,架构师社区合伙人! 一.简介 1. Sentinel 是什么? Sentinel是去年7月由阿里中间件团队开源的,面向分布式服务架构 ...
- Redis、Redis+sentinel安装(Ubuntu 14.04下Redis安装及简单测试)
Ubuntu下Redis安装两种安装方式: 1.apt-get方式 步骤: 以root权限登录,切换到/usr目录下. 接下来输入命令,apt-get install redis-server,如图: ...
最新文章
- .NET FrameWork 4.0 新特性
- 48-Rotate Image
- [转]html超链接打开的窗口大小
- yum删除mysql数据库_MySQL数据库之Centos中彻底删除Mysql(rpm、yum安装的情况)
- Laravel核心解读--Cookie源码分析
- 简单易用的安装文件制作工具NSIS的使用demo示例
- 04_Java基础语法_第4天(数组)
- 一个OEIS数列的通式
- 忘记PDF密码怎么办?
- xgp游戏列表_PC版XGP正式公布,畅玩上百款游戏每月只需10美元
- h264视频与pcm音频合成MP4视频格式
- 关于Environment类的使用
- 题都城南庄---中华诗词-唐五代-崔护
- js控制台 console 骚操作-打印图片-自定义样式-字符画
- WLAN, WPAN 和 WMAN技术的对比
- schrems ii对我们的科技创业公司意味着什么
- 原生js做无限弹窗(娱乐)
- 博主已开启评论精选什么意思_win10拨号上网不能开启移动热点 解决方案
- 如何卸载IE9 再恢复到IE8?
- Vs2012 到 Vs2019 又增加什么小玩意,小伙伴是不是很好奇?
热门文章
- 微信小程序实现图片下载功能
- 基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、字幕生成
- 分辨西瓜和冬瓜的思考
- java axis2 jar包下载_axis2所有jar包
- 高效的敏捷测试第八课 静态测试工具和生成测试报告
- Leetcode热门100之两数之和
- 2021全国特种设备-G3锅炉水处理模拟考试题库一[安考星]
- oracle append parallel,oracle 优化之parallel和append
- html5小米手机调用摄像头,html5摄像头 如何调用手机摄像头
- php网页微信登录验证失败,微信开发Token验证失败解决方法