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

news2024/11/27 18:51:32
发现个“轻量级本地化热点检测/降级框架
这个框架名为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.coloradmin.cn/o/1218857.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Echarts 实现两两柱图重叠(背景和实际值柱图)

Echarts实现两两重叠柱状图_echarts 重叠柱状图_Web_阿凯的博客-CSDN博客 引用启发的博客 先来效果: option {backgroundColor: #03213D,animation: true, // 控制动画是否开启animationDuration: 1000, // 动画的时长, 它是以毫秒为单位animationDuration: func…

数据结构C语言之线性表

发现更多计算机知识,欢迎访问Cr不是铬的个人网站 1.1线性表的定义 线性表是具有相同特性的数据元素的一个有限序列 对应的逻辑结构图形: 从线性表的定义中可以看出它的特性: (1)有穷性:一个线性表中的元…

Homography详解在MVSNet中的应用

Homography(单应性变换)是计算机视觉中的一个重要概念,用于描述两个平面之间的透视关系。在图像处理和计算机视觉中,Homography通常表示两个平面之间的投影关系,这种关系可以通过一个3x3的矩阵来表示。 在数学上&…

YB4019是一款完整的单电池锂离子恒流/恒压线性充电器电池

YB4019 耐压18V 1A线性双节8.4V 锂电充电芯片 概述: YB4019是一款完整的单电池锂离子恒流/恒压线性充电器电池。底部采用热增强ESOP8封装,外部组件数量低使YB4019成为便携式应用的理想选择。此外,YB4019设计用于在USB电源规格范围内工作。Y…

洗袜子的洗衣机哪款好?内衣洗衣机测评

随着人们的生活水平的提升,越来越多小伙伴来开始追求更高的生活水平,一些智能化的小家电就被发明出来,而且内衣洗衣机是其中一个。现在通过内衣裤感染到细菌真的是越来越多,所以我们对内衣裤的清洗频次会高于普通衣服,…

File类和IO流

我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 本…

2024苹果笔记本清理内存清理优化工具CleanMyMac X

在使用苹果笔记本电脑的过程中,清理内存是保持电脑运行流畅的重要步骤之一。当我们使用大量的应用程序和文件时,电脑的内存可能会被占满,导致系统变慢甚至出现崩溃的情况。因此,了解如何清理苹果笔记本的内存是非常必要的。本文将…

代码随想录 Day47 动态规划15 LeetCode T583 两个字符串的删除操作 T72 编辑距离

LeetCode T583 两个字符串的删除操作 题目链接:583. 两个字符串的删除操作 - 力扣(LeetCode) 题目思路: 本题有两个思路 1.使用两个字符串的长度之和-2*最长公共子串(换汤不换药) 代码随想录Day45 动态规划13 LeetCode T1143最长公共子序列 T1135 不相交…

适用于 Mac 的 10 款最佳数据恢复工具

对于依赖计算机处理重要文件(无论是个人照片还是重要业务文档)的任何人来说,数据丢失都可能是一场噩梦。 值得庆幸的是,有多种数据恢复工具专门用于Mac用户,可以帮助您恢复丢失或意外删除的文件。 在本文中&#xff0c…

Rust图形界面:eGUI的Panel布局

文章目录 Panel布局尺寸调节源码 Panel布局 eGUI提供面板堆叠的布局方案,即Panel布局。其布局逻辑是,根据当前面板指定的方向,尽可能地填充空间。 CentralPanel 占据屏幕剩余部分的空间SidePanel 占据屏幕两侧的空间,在具体调用…

【网络】TCP协议的相关实验

TCP协议的相关实验 一、理解listen的第二个参数1、实验现象2、TCP 半连接队列和全连接队列3、关于listen的第二个参数的一些问题4、SYN洪水Ⅰ、什么是SYN洪水攻击Ⅱ、如何解决SYN洪水攻击? 二、使用Wireshark分析TCP通信流程 一、理解listen的第二个参数 在编写TCP…

【23真题】无耻!“官方”假真题!害人!

这套华侨23真题是学弟给我从考场抄出来的版本,我刚刚做完解析!后台就收到了另外一份“官方华侨23真题”的投稿。我本想对对回忆版,补充下题干。结果一对吓一跳!竟然一道题都不一样!给大家看下,真的好逼真&a…

《向量数据库指南》——TruLens + Milvus Cloud 构建RAG案例

具体案例 如前所述,RAG 配置选择可能对消除幻觉产生重大影响。下文中将基于城市百科文章构建问答 RAG 应用并展示不同的配置选择是如何影响应用性能的。在搭建过程中,我们使用 LlamaIndex 作为该应用的框架。大家可以在 Google Colab( https://colab.research.google.com/git…

Theory behind GAN

假如要生成一些人脸图,实际上就是想要找到一个分布,从这个分布内sample出来的图片像是人脸,分布之外生成的就不像人脸。而GAN要做的就是找到这个distribution。 在GAN之前用的是Maximum Likelihood Estimation。 Maximum Likelihood Estimat…

【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏2(附项目源码)

文章目录 先看本次实现的最终效果前言敌人生命值扣血测试,敌人死亡控制敌人动画敌人死亡动画敌人转向问题源码完结 先看本次实现的最终效果 前言 本期紧接着上一篇,本期主要内容是实现敌人血条、动画和行为逻辑。 敌人生命值 绘制血条UI 新建 publ…

快速入门:构建您的第一个 .NET Aspire 应用程序

##前言 云原生应用程序通常需要连接到各种服务,例如数据库、存储和缓存解决方案、消息传递提供商或其他 Web 服务。.NET Aspire 旨在简化这些类型服务之间的连接和配置。在本快速入门中,您将了解如何创建 .NET Aspire Starter 应用程序模板解决方案。 …

unity 烘焙的时候出现模型没有光影的情况

unity 烘焙的时候出现模型没有光影的情况 1.模型没有设置生成光照贴图 需要勾选模型的生成光照贴图UVs,然后应用 2.游戏对象没有勾选静态选项 点开静态下拉列表,选择 contribute GI

Accelerate 0.24.0文档 四:Megatron-LM

参考《Megatron-LM》 文章目录 一、Megatron-LM集成简介二、环境配置设置conda环境的步骤: 二、Accelerate Megatron-LM Plugin三、自定义训练过程四、检查点转换五、文本生成六、支持ROPE 、 ALiBi和Multi-Query Attention七、注意事项 一、Megatron-LM集成简介 在…

再谈谷歌GMS认证之Android 13

写在前面的话 2023年来到一个新的公司,传说中的做互联网金融即将上市的高大上公司。 入职后才发现就是做pos机设备的一个小厂 哎,什么命啊! 工作和手机开发的工作重合度可以达到95%以上,我不想做手机,偏偏又干上…