热点检测/降级框架Akali的部分原理解析

发现个“轻量级本地化热点检测/降级框架
这个框架名为Akali,项目地址:https://gitee.com/bryan31/Akali

主要有两个作用

1:热点检测及处理

在这里插入图片描述

2:降级检测及处理
在这里插入图片描述

从官网文档来看使用是比较简单的,一个注解就能搞定

怀着好奇的心情clone下来准备看他具体怎么做的

从这两个注解开始debug

针对于降级他是直接采用了sentinel 对应的依赖包
注册了FlowRule,当超出对应的规则就会触发降级
在这里插入图片描述

针对于热点里面的注解注册了ParamFlowRule,到这里的时候我就比较好奇了,为啥像这种类似于hotkey要采用限流的规则进行实现
在这里插入图片描述

最后处理逻辑到了com.yomahub.akali.sph.SphEngine#process方法,过滤对应的策略
主要看HoT_METHOD对应的处理
在这里插入图片描述

仔细看这个catch的处理,最终他会路由到com.yomahub.akali.strategy.MethodHotspotStrategy#
process方法
在这里插入图片描述

为了探测接口查询的为热点数据,在首次进入时将返回值设置进TimeCache, 它是Hutool缓存方面的工具类
在这里插入图片描述
先看构造方法做了什么
在这里插入图片描述
CachUtils.newTimeCache(1000*60) : 创建本地缓存kv,默认60秒过期
schedulePrune(1000): 会启动一个定时器,定时清理一次过期的条目
get(key): 超时前调用了get(key)方法,会重头计算起始时间。类似于续期

如果超时前调用了get(key)方法,会重头计算起始时间。举个例子,用户设置key1的超时时间5s,用户在4s的时候调用了get(“key1”),此时超时时间重新计算。其本质相当于实时的监测了热点,并对其热点数据做了一个短时间内的缓存。

总体看下来这个hotkey的逻辑为

1:当并发超过所配置的规则从而触发sentinel的BlockException进行捕获

2:将其捕获后进入对应的热点策略实现类执行对应的查询逻辑并将查询的结果缓存至本地cache

3: 只要你的请求一直触发限流的规则,就会将最后一次方法返回值的key过期时间一直保存续期状态,就提为热点,并用热点数据直接返回。

4:当调用低于配置的规则调用时,框架会自动的摘除掉这个热点。使其正常的调用你原有代码进行逻辑计算并返回。这一切都是自动的。

TPS:
额外引入sentinel做此功能对于未使用sentinel的应用比较重,sentinel的一些机制会加重应用负担,比如内存使用量会增高,要维持 sentinel 运行,要损失一些性能。
对应的sentinel issues
https://github.com/alibaba/Sentinel/issues/2767

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/184739.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是脏读、不可重复读、幻读讲解

数据库隔离级别是数据库管理系统中一个重要的概念,它定义了事务之间的可见性和影响。在多用户并发访问数据库时,隔离级别能够确保事务之间的相互独立性,避免数据不一致的问题。本文将深入探讨三种常见的并发问题:脏读、不可重复读…

48v变12v同步转换芯片

48v变12v同步转换芯片 以下是一篇关于48V变12V同步转换器WD5105ic的文章正文:48V变12V同步转换器WD5105ic是一种电源管理芯片,它可以将48V的直流电压转换为12V的直流电压。这款芯片具有广泛的应用范围,包括车载充电器件、电动车仪表器件、电…

Python框架篇(2):FastApi-参数接收和验证

提示: 如果想获取文章中具体的代码信息,可在微信搜索【猿码记】回复 【fastapi】即可。 1.参数接收 1.1 路径参数(不推荐) 1.代码清单 在app/router下,新增demo_router.py文件,内容如下: from fastapi import APIRouterrouter APIRouter( prefix&qu…

Vue+ElementUI技巧分享:自定义表单项label的文字提示

文章目录 概要在表单项label后添加文字提示1. 使用 Slot 自定义 Label2. 添加问号图标与提示信息 slot的作用详解1. 基本用法2. 具名插槽 显示多行文字提示的方法1. 问题背景2. 实现多行内容显示3. 样式优化 结语 概要 在Vue和ElementUI的丰富组件库中,定制化表单是…

【git】git本地仓库命令操作详解

这篇文章主要是针对git的命令行操作进行讲解,工具操作的基础也是命令行,如果基本命令操作都不理解,就算是会工具操作,真正遇到问题还是一脸懵逼 如果想看远程仓库的操作,可以看另一篇文章: 【git】远程远…

大功率电源芯片WD5030L

电源管理芯片作为现代电子设备中最关键的元件之一,直接影响着设备的性能和效率。而大功率电源芯片作为电源管理芯片中的一种,其性能和应用领域更加广泛。本文将介绍一款具有宽VIN输入范围、高效率和多种优良性能的大功率电源芯片WD5030L,并探…

算法之双指针

双指针 常⻅的双指针有两种形式,⼀种是对撞指针,⼀种是左右指针。 对撞指针:⼀般⽤于顺序结构中,也称左右指针。 • 对撞指针从两端向中间移动。⼀个指针从最左端开始,另⼀个从最右端开始,然后逐渐往中间逼…

京东数据挖掘(京东运营数据分析):2023年宠物行业数据分析报告

随着社会经济的发展,人均收入水平逐渐提高,使得宠物成为越来越多家庭的成员,宠物数量不断增长。伴随养宠人群的增多,宠物相关产业的发展也不断升温,宠物经济规模持续增长。 根据鲸参谋平台的数据显示,在宠物…

Resolume Arena 7.15.0(VJ音视频软件)

Resolume Arena 7是一款专业的实时视觉效果软件,用于创造引人入胜的视频演出和灯光秀。它提供了丰富多样的功能和工具,可以将音频、视频和图像合成在一起,创造出令人惊叹的视觉效果。 Resolume Arena 7支持多种媒体格式,包括视频文…

腾讯云服务器新用户购买优惠多少钱?腾讯云新用户购买优惠

对于新用户来说,腾讯云服务器更是提供了一系列的优惠活动,让你在购买时享受到更多的优惠。那么,腾讯云服务器新用户购买优惠多少钱呢?接下来,让我们一起来了解一下。 腾讯云双十一领9999代金券 https://1111.mian100.…

【无标题】chapter6卷积

此例以说明全连接层处理图片的时候会遇到参数过多 模型过大的问题 参数比要研究的物体总数还多 卷积,特殊的全联接层 平移不变形,局部性 原本权重为二维(输入和输出全联接,想想下表组合,就是个二维的矩阵)…

DNS1(Bind软件)

名词解释 1、DNS(Domain Name System) DNS即域名系统,它是一个分层的分布式数据库,存储着IP地址与主机名的映射 2、域和域名 域为一个标签,而有多个标签域构成的称为域名。例如hostname.example.com,其…