sentinel+springboot+zookeeper,通过dashboard实现熔断(修改dashboard源码)

sentinel+springboot+zookeeper集成,通过dashboard简单使用限流功能 好久没有写博客了,这几天调研了阿里开源的sentinel限流工具,据说双十一采用的也是此功能,调研了几天遇到了不少坑,主要集成一下,便于大家了解。 sentinel的原理这里不介绍,为何要使用zookeeper来说一下,不使用zookeeper这些配置中心的话相当于直接通过dashboard调用server端,这样每次的限流配置只是在java的内存中生效,在项目重启之后,信息就丢失了,所以需要一... 阅读详情

熔断功能紧接上一篇限流功能:

https://blog.youkuaiyun.com/zero_no1/article/details/104050089

好像有帖子说sentinel成为springcloud推荐的熔断,在调研限流的基础上有进行了熔断的调研,略微有些坑,搜了半天文章发现大家都是一样的,只实现了对限流的集成,看了下官方的源码,官方的源码只实现了对限流功能在zookeeper等可配置化的功能,并没有对熔断降级、热点这些的实现。其他文章无处借鉴.....没有办法,只好参照限流的动态配置以及结合熔断降级自己写了。以下内容均为原创哦~

首先看下熔断降级提供的三个方式

分别为RT,异常比例,异常数

RT为接口的响应时间,1秒钟同时有5个请求超过这个响应时间,则进行熔断

异常比例为一秒钟访问的接口数量,以及接口异常比例对应总访问量的比例

异常数即为一秒钟异常的个数

时间窗口即是在触发熔断时会持续的时间,举个栗子:触发熔断后,会在接下10秒内直接熔断,然后效果消失,如果在此触发熔断,会在持续10秒,以此类推

在这里直接贴出配置的json

[
  {
    "resource": "/action/test/test3",//访问的资源地址
    "count": 500,//访问的个数,此处是一个double值,若grade=1,则是0.1~1.0之间的一个值,0和2时则为毫秒
    "grade": 0,//0:RT 1:异常比例 2:异常数
    "timeWindow": 10 //时间窗口,秒为单位
  },
  {
    "resource": "POST:http://test-sentinel-provider/service/test/sentinel",
    "count": 500,
    "grade": 0,
    "timeWindow": 10
  }
]

在第二个json才是我们经常使用的微服务熔断,这个是sentinel支持springcloud的feign功能,需要在配置文件中进行开启,否则无法扫描到,配置如下:

feign:
  sentinel:
    enabled: true

说完配置,直接来说如何进行配置,首先直接说dashboard的配置:

在上一篇使用限流功能时阿里在test方法中提供了对限流功能的样例,那么这里同理,添加一个对服务降级的两个demo

首先打开zookeeperConfigUtil

public class ZookeeperConfigUtil {
    public static final String RULE_ROOT_PATH = "/sentinel_rule_config";

    public static final int RETRY_TIMES = 3;
    public static final int SLEEP_TIME = 1000;

    //之前ruleName不存在,因为只有针对限流的操作,此处需要增加一个路径,让每个项目有限流,熔断不同路径,同理限流需要同样修改
    public static String getPath(String ruleName, String appName) {
        StringBuilder stringBuilder = new StringBuilder(RULE_ROOT_PATH + "/" + ruleName);

        if (StringUtils.isBlank(appName)) {
            return stringBuilder.toString();
        }
        if (appName.startsWith("/")) {
            stringBuilder.append(appName);
        } else {
            stringBuilder.append("/")
                    .append(appName);
        }
        return stringBuilder.toString();
    }
}

zookeeperConfig

@Configuration
public class ZookeeperConfig {

    @Value("${zookeeper.servers}")
    private String zookeeperAddress;

    @Bean
    public Converter<List<FlowRuleEntity>, String> flowRuleEntityEncoder() {
        return JSON::toJSONString;
    }

    @Bean
    public Converter<String, List<FlowRuleEntity>> flowRuleEntityDecoder() {
        return s -> JSON.parseArray(s, FlowRuleEntity.class);
    }
    
    //此处为新增的降级转换类,在这里还是膜拜一下阿里的大神们,虽然没有提供test样例,但是设计模式上的通用上值得我们学习
    @Bean
    public Converter<List<DegradeRuleEntity>, String> degradeRuleEntityEncoder() {
        return JSON::toJSONString;
    }

    @Bean
    public Converter<String, List<DegradeRuleEntity>> degradeRuleEntityDecoder() {
        return s -> JSON.parseArray(s, De
Sentinel 集群流控之基于zookeeper实现token server 高可用 Sentinel集群流控通常适⽤于以下场景:1. 单机流量不均:由于负载不均衡等原因导致每台机器的流量不均,这时使⽤单机流控可能会出现没有达到请求 总量,某些机器就开始限流的情况。2. 集群⼩流量流控:某些⾼可⽤防护场景下需要将服务调⽤QPS限制到很⼩的量,此时平均到每台机器的QPS可 能⼩于1,⽆法通过单机流控进⾏精确控制。例如希望限制总QPS为50,但节点数有100个。3. 有业务含义的流量控制:例如限制某个API每个⽤户每分钟调⽤不超过10次。 嵌入模式隔离性不佳,本文不做演示Sentinel 社区版 阅读详情

相关推荐

linux和windows环境配置安装zookpeer的dashboard可视化

有时候我们需要知道一个*.so文件或者可执行文件是debug版本的还是release版本的,这时我们有哪些方法呢? 1.readelf -S filename |grep debug 导出汇编 objdump -f test 显示test的文件头信息 objdump -d test 反汇编test中的需要执行指令的那些section objdump -D test 与-d类似,但反汇编test中的所有section objdump -h test 显示test的Section H..

yolo模型训练找我,AI游戏合作找我 1003

sentinel dashboard改造落地设计&实现解释(一)-分布式fetcher和metrics存储/搜索

微服务是目前java主流架构,微服务架构技术栈有,服务注册中心,网关,熔断限流,服务同学,配置中心等组件,其中,熔断限流主要3个功能特性,限流,熔断,快速失败。Sentinel是阿里开源的熔断限流组件,sentinel dashboard是演示级别,表现在metrics采集是单机版,metrics存储存在内存,不支持分布式,高可用,因此需要改造。此前博文(),介绍分布式改造设计,本系列介绍落地的设计和实现解释。

leehom的博客 698

Spring Cloud Zookeeper在后端服务限流熔断中的实战

本文旨在为开发人员提供一套完整的Spring Cloud Zookeeper限流熔断解决方案,涵盖从理论基础到实践应用的全过程。Zookeeper在微服务架构中的服务发现和配置管理功能基于Zookeeper的分布式限流算法实现结合Spring Cloud的熔断机制设计生产环境中的最佳实践和性能优化本文采用从理论到实践的结构,首先介绍核心概念,然后深入技术细节,最后通过完整案例展示实际应用。背景介绍:明确文章范围和目标读者核心概念:讲解Zookeeper和限流熔断的基本原理。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 756

AB脉冲详解(编码器,PLC,上位机)

编码器线有些是用不到的。Z脉冲:360度中,只有1度是输出,输出能力是。编码器实际就是发光二极管,所以电流超过20ma会缩短寿命或损坏。

cfqq1989的博客 1万+

4D Gaussian Splatting for Real-Time Dynamic Scene Rendering-4DGS阅读笔记

为了实现实时动态场景渲染,同时还能具备较高的训练和存储效率,作者提出了四维高斯溅射(4D-GS)方法,将其作为动态场景的一种整体表示方式,而不是对每个单独的帧应用三维高斯溅射(3D-GS)方法。在 4D-GS 中,提出了一种新颖的显式表示方法,它同时包含三维高斯模型和四维神经体素。受 HexPlane 启发,提出了一种分解的神经体素编码算法,以高效地从四维神经体素构建高斯特征,然后应用一个轻量级多层感知器(MLP)来预测在新时间戳下的高斯变形。

2403_85515624的博客 2343

(全网最详细教程)康耐视读码器(以DM260S为例子)详细实用步骤

(全网最详细教程)康耐视读码器(以DM260S为例子)详细实用步骤

视觉人机器视觉的博客 7466

计算机组成原理(第三版)唐朔飞-第八章CPU的结构和功能-课后习题

8.1CPU有哪些功能?画出其结构框图并简要说明每个部件的作用。

weixin_45735391的博客 6万+

Unity零基础到入门 ☀️| 【UI系统学习】认识Unity引擎中几种最常用 UI系统,这一篇文章就够用了!

轻松学会 Unity 的 UGUI基础控件 使用 Unity中的UI介绍 UI即User Interface(用户界面)的简称。泛指用户的操作界面,UI设计主要指界面的样式,美观程度。而使用上,对软件的人机交互、操作逻辑、界面美观的整体设计则是同样重要的另一个门道。好的UI不仅是让软件变得有个性有品味,还要让软件的操作变得舒适、简单、自由,充分体现软件的定位和特点。 据我所知Unity中有两种自带的UI,一种是UGUI,一种是GUI Legacy GUI:旧版 UI,只有两个组件:文字和图片,配合鼠标事件来

努力前行,总会成为自己心中的那道光 2万+

PostgreSQL 核心原理:大字段(大对象)是如何被压缩和存储的(TOAST存储机制)

PostgreSQL通过TOAST机制高效处理大字段存储问题,解决单行超过8KB页大小限制的挑战。TOAST采用透明分片、按需加载和自动压缩策略,支持TEXT、JSONB等变长类型,无需用户干预。其核心包括四种存储策略(plain/external/main/extended),自动将大字段分片存入专用TOAST表,主表仅保留指针。读取时按需解压拼接,支持部分加载优化。TOAST表结构包含chunk_id、序列号和分片数据,配合内置PGLZ压缩算法,平衡存储效率与访问性能。该机制使PostgreSQL能稳定

数据知道的博客 2627

基于STM32L4XX 、HAL库的TMP144YFFR数字温度传感器驱动应用C语言程序设计

define TMP144_ADDRESS 0x00 // 默认为全局地址,用于单器件或MDA命令。#define TMP144_CMD_READ_TEMP 0x00 // 读取温度寄存器命令。if (temp_raw & 0x800) { // 判断第11位(符号位)

PP_Cottage的博客 91

线结构光相机原理详解以及精度控制总结

摘要:线阵结构光相机是工业三维检测的核心设备,结合线阵相机的高分辨率与结构光的主动三维成像能力。其工作原理基于线激光投射、逐线扫描、亚像素级条纹提取及三角测量法实现三维重建。精度受硬件、校准、环境和算法四因素影响,需通过优化硬件选型(如小像元相机、窄线宽激光)、精准校准(相机内参、激光平面)、环境控制(遮光、隔振、恒温)及算法优化(Steger算法、点云后处理)来提升。典型应用(卷材、轨道检测)中深度精度可达5-20μm,需根据场景需求平衡参数配置。

start_up_go的博客 940

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: sentinel+springboot+zookeeper集成,通过dashboard简单使用限流功能
ZERO_No1
博客等级 码龄12年 14粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值