[开源]一个轻量级本地化热点检测/降级框架,适用于大流量场景
开源系统流程管理
![[开源]一个轻量级本地化热点检测/降级框架,适用于大流量场景](https://yy123.ink/api/img/1782593457906-wv8xro.jpg)
一、开源项目简介

Akali(阿卡丽)是一个轻量级本地化热点检测/降级框架,适用于大流量场景,可轻松解决业务中超高流量的并发查询等场景。并且接入和使用极其简单,10秒钟即可接入使用!
Akali框架的理念就是小巧,实用,来无影去无踪,丝血团战,满血退场,所到之处,皆为虚无。
二、开源协议
使用Apache-2.0开源协议
三、界面展示

四、功能概述
特性
热点检测
自动根据QPS或者Thread数目来本地化检测热点
热点处理
自动用热点数据进行返回,热点消失后可自动摘除
降级检测
自动根据QPS或者Thread数目来检测是否降级
降级处理
可根据方法名进行定义降级方法
轻量小巧
整体框架不足500行代码,对系统消耗量极小
接入快速
整体一共2个标注,标注上即可使用
五、技术选型

热点缓存的更新
如果一个方法的参数被提为热点后,在1分钟内都将用热点数据返回。1分钟后如果你的热点依旧存在,那么会触发第二次热点,第二次热点会重新查询你的数据,并缓存起来。在第二分钟内会用这份数据进行返回。以此类推。所以,请确保你的接口符合在短时间窗口内是能保证幂等性的,如果你的接口返回的数据每时每刻都在发生变化,那么Akali并不适合。这点很重要。
对RPC框架的支持度
支持任何RPC框架,诸如dubbo,open feign的provider端的热点处理。你完全可以把@AkaliHot标注在以上框架的provider端,标注在接口方法上或者实现类方法上均可以。
对于热点处理的一些忠告
尽量标注在一定时间范围内幂等的方法上,比如查询用户,查询订单等接口,这些接口方法在小范围时间窗口内是相对幂等的。
如果你标注在事务性操作的方法上,比如库存扣减,那么热点触发后,可能会造成业务的错乱。因为这些业务方法本来就不是幂等的。
所以使用之前要对业务进行考量,不能瞎用,这属于使用不当,而不是框架的责任。
来源:Akali(阿卡丽)官网文档
评论