微服务|微服务005-Sentinel高可用流量管理框架
1. sentinel简介
文章图片
2.Sentinel 功能和设计理念
2.1 流量控制
文章图片
2.2 流量控制设计理念
文章图片
2.3 限流算法 常用的限流算法有那些?1.计数器2.令牌桶-电影票3漏桶-漏斗4滑动窗口
文章图片
3.安装Sentinel服务 Sentinel 提供一个轻量级的控制台, 它提供机器发现、单机资源实时监控以及规则管理等功能,其控制台安装步骤如下:
第一步:打开sentinel下载网址
Releases · alibaba/Sentinel · GitHub
文章图片
https://github.com/alibaba/Sentinel/releases第二步:在官网下载jar包。
文章图片
第三步:在该jar包目录下运行该包命令如下:(要求至少jdk8版本)
java -Dserver.port=8180 -Dcsp.sentinel.dashboard.server=localhost:8180 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.2.jar
文章图片
第四步:登录sentinel服务
访问 http://localhost:8180/ 用户名密码都为 sentinel
文章图片
文章图片
4.IDEA启动sentinel 我们每次都要从命令窗口运行会很麻烦,所以这种重复的事情我们交给计算机做,所以我们可以从IDEA中配置sentinel后实现一键启动
第一步:选择edit configurations 配置编辑
文章图片
第二步:选择shell Script 脚本外壳 并输入以下信息
文章图片
第三步:编辑脚本命令,与在命令窗口执行的命令几乎一致,1 删除前面的java英文2 在执行的jar包面前加入该jar包的路径
文章图片
如果跟下面一样说明运行成功
文章图片
5.利用sentinel进行限流 第一步:添加依赖
com.alibaba.cloud
spring-cloud-starter-alibaba-sentinel
org.springframework.boot
spring-boot-starter-actuator
第二步:修改消费方的配置文件-------为了让sentinel找到我们相对应服务
文章图片
第三步:添加测试方法。1创建一个服务类
文章图片
在controller调用该Service
文章图片
第四步:打开服务注册中心Nacos 因为要调用服务
文章图片
刷新几遍发现监控到了
文章图片
5.1 直接限流模式
文章图片
文章图片
文章图片
文章图片
当我们一秒钟刷新多次时,发现已经被哨兵阻挡了(流量限制)
5.2 关联限流模式 当我们创建下单的时候,后台还会有很多查询订单的服务来访问服务器。我们第一时间要保障的肯定是我们即将下单的用户,所以当用户下单,我们就会对查询订单的服务进行限流,
以达到用户下单的时候不会因为被挤爆服务器而导致出错的效果。
文章图片
文章图片
文章图片
测试:
文章图片
5.3 链路模式限流 学校机房专用。把学生的网络和教师的网络分为两个链路,当学生链路访问时,会把链路底下所有的服务进行限流。而教师链路不做要求。
文章图片
文章图片
快速刷新
【微服务|微服务005-Sentinel高可用流量管理框架】
文章图片
如果我们限流精确到某一个方法时,会被限流成错误代码500
文章图片
文章图片
关闭URL聚合:
文章图片
文章图片
资源都变成了单独的了。不会出现在context下了
6.Sentinel熔断 除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。由于调用关系的复杂性,如果调用链路中的某个资源不稳定,最终会导致请求发生堆积。
Sentinel 熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断(默认行为是抛出 DegradeException)。
6.1 Sentinel熔断 实践
第一步:用代码模拟耗时操作
文章图片
推荐阅读
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- CET4听力微技能一
- 微习惯复盘
- 社保代缴公司服务费包含哪些
- 员工的微信朋友圈是公司的宣传阵地吗()
- 私有化轻量级持续集成部署方案--03-部署web服务(下)
- FBI怎么和恐怖分子谈判
- 探索免费开源服务器tomcat的魅力
- 微雨中的东湖
- 小醉微记|小醉微记|心不安处皆动荡