Sentinel自定义降级异常实战

  • 高并发下存在的问题
    • sentinel简介
      • 流控降级实战

高并发下存在的问题

微服务拆分多个系统,服务之间互相依赖,可能会由于系统负载过高,突发流量或者网络等各种异常情况,导致服务不可用。
核心思想——面向失败编程

sentinel简介

什么是Sentinel
阿⾥巴巴开源的分布式系统流控⼯具
以流量为切⼊点,从流量控制、熔断降级、系统负载保
护等多个维度保护服务的稳定性
丰富的应⽤场景:消息削峰填⾕、集群流量控制、实时
熔断下游不可⽤应⽤等
完备的实时监控:Sentinel 同时提供实时的监控功能
提供开箱即⽤的与其它开源框架/库的整合模块,例如
与 Spring Cloud、Dubbo、gRPC 的整合

  • sentinel搭建
    在官网上下载sentinel压缩包sentinel-dashboard-1.8.0.jar,在命令行输入下列命令,启动sentinel
java  -Dserver.port=8081 -Dcsp.sentinel.dashboard.server=127.0.0.1:8081 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.0.jar

浏览器输入localhost:8081验证,用户和密码:sentinel

流控降级实战

第一步:在项目中添加依赖,在order中进行演示

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>

第二步:配置sentinel

第三步:编写接口测试

启动order服务,注册order服务到sentinel,由于sentinel是懒加载模式,需要访问微服务后才会在控制台出现。
第四步:在控制台流控
在控制台的簇点链路中找到想要流控的资源名,进行流控。目前流控的方式主要有两种,基于QPS和线程数,我们以QPS做一个演示,设置单机阈值为1,多次点击测试的接口,返回Blocked by Sentinel (flow limiting),这就存在一个问题,我们在微服务进行交互时,一般是json格式,所以要进行自定义异常。
第五步:自定义降级返回数据
异常种类

FlowException //限流异常
DegradeException //降级异常
ParamFlowException //参数限流异常
SystemBlockException //系统负载异常
AuthorityException //授权异常

【旧版】实现 UrlBlockHandler 并且重写 blocked 方法
【新版】实现 BlockExceptionHandler 并且重写 handle 方法

注册order到sentinel,设置list资源的流控阈值还是1,多次点击,出现如下json数据:

SpringCloud实战(四)Sentinel自定义降级异常实战相关推荐

  1. spark教程python案例_Spark实战(四)spark+python快速入门实战小例子(PySpark)

    由于目前很多spark程序资料都是用scala语言写的,但是现在需要用python来实现,于是在网上找了scala写的例子改为python实现 1.集群测试实例 代码如下: from pyspark. ...

  2. 2021年大数据Spark(四十一):SparkStreaming实战案例六 自定义输出 foreachRDD

    目录 SparkStreaming实战案例六 自定义输出-foreachRDD 需求 注意: 代码实现 SparkStreaming实战案例六 自定义输出-foreachRDD 需求 对上述案例的结果 ...

  3. Aooms_基于SpringCloud的微服务基础开发平台实战_002_工程构建

    为什么80%的码农都做不了架构师?>>>    一.关于框架更名的一点说明 最近在做年终总结.明年规划.还有几个项目需要了结.出解决方案,事情还比较多,死了不少脑细胞,距离上一篇文章 ...

  4. 零基础学习SpringSecurity OAuth2 四种授权模式(理论+实战)(配套视频讲解)

    配套视频直达 背景 前段时间有同学私信我,让我讲下Oauth2授权模式,并且还强调是零基础的那种,我也不太理解这个零基础到底是什么程度,但是我觉得任何阶段的同学看完我这个视频,对OAuth2的理解将会 ...

  5. Spring Security 实战干货:自定义异常处理

    Spring Security 实战干货:自定义异常处理 转自:https://www.cnblogs.com/felordcn/p/12142514.html 文章目录 1. 前言 2. Sprin ...

  6. PyTorch学习笔记(四):PyTorch基础实战

    PyTorch实战:以FashionMNIST时装分类为例: 往期学习资料推荐: 1.Pytorch实战笔记_GoAI的博客-CSDN博客 2.Pytorch入门教程_GoAI的博客-CSDN博客 本 ...

  7. 《OpenCv视觉之眼》Python图像处理十九:Opencv图像处理实战四之通过OpenCV进行人脸口罩模型训练并进行口罩检测

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  8. SpringCloud Alibaba Sentinel 熔断降级 - 程序配制方式实现

    一.Sentinel 上篇文章我们讲解了Sentinel 流控规则的配制,本篇文章我们继续讲下Sentinel 的熔断降级,依然采用程序配制方式实现. 上篇文章地址:https://blog.csdn ...

  9. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(分组箱体框颜色自定义配置)实战

    R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(分组箱体框颜色自定义配置)实战 目录 R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(分组箱体框 ...

  10. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(不同分组配置不同的箱体填充色+自定义调色板)实战

    R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(不同分组配置不同的箱体填充色+自定义调色板)实战 目录 R语言使用ggplot2包使用geom_boxplot函数绘制基础分 ...

最新文章

  1. 如何让Spring Boot 的配置 “动” 起来?
  2. 一文读懂机器学习、数据科学、人工智能、深度学习和统计学之间的区别!
  3. JS一起学03:js组成、下拉+text、字符串拼接、分号问题、数据类型、变量类型、作用域和闭包、命名、运算符、流程判断、调试、iNow、onchang
  4. 五分钟了解Mysql的行级锁——《深究Mysql锁》
  5. 【Spring学习】spring依赖注入用法总结
  6. 牛客题霸 [合并两个有序的数组] C++题解/答案
  7. 神奇的python(二)之python打包成应用程序
  8. 聊聊kafka consumer offset lag的监控
  9. 安装VMware时,出现 安装程序无法继续 Microsoft Runtime DLL 安装程序未能完成安装 您无权输入许可证密钥,请使用系统管理员账户重试 VMware15.5.x 安装问题处理
  10. 网络安全技能竞赛通关教程
  11. 然爸读书笔记(2014-4)----史玉柱自述:我的营销心得
  12. oracle16gbk存储中文乱码,解决PLSQL中文乱码以及Oracle服务端的字符集修改为ZHS16GBK(问题完善)...
  13. 2019.6.24 校内测试 NOIP模拟 Day 2 分析+题解
  14. BPMN 2.0规范
  15. DIY 一个 JSON解析器。
  16. 红芯宣布获得2.5亿元C轮系列融资,要做1亿人的安全工作入口
  17. linux防火墙之firewalld
  18. 设计并测试一个椭圆类
  19. 【appium报错】Original error:Could not proxy command to remote server. Original error:socket hang up
  20. 玩转linux 这些命令就够了

热门文章

  1. 《构建之法》(第一、二、十六章)读书笔记
  2. XenServer部署系列之05——虚拟机的创建及复制
  3. Lexical environments: ECMAScript implementation
  4. Spring集成Quartz定时任务框架介绍和Cron表达式详解
  5. 搭建Cacti监控系统(四)-- 安装spine
  6. 50款漂亮的免费网页PSD模板下载(第三季)
  7. Eclipse里做JBPM工作流gpd.xml中文乱码问题解决
  8. Solaris 10 的基本操作
  9. 3.第一本 docker 书 --- docker 网络
  10. 31. Magento图片大小调整的相关代码