一飞开源
阅读362

[开源]一个轻量级本地化热点检测/降级框架,适用于大流量场景

一飞开源,介绍创意、新奇、有趣、实用的开源应用、系统、软件、硬件及技术,一个探索、发现、分享、使用与互动交流的开源技术社区平台。致力于打造活力开源社区,共建开源新生态!

一、开源项目简介

Akali(阿卡丽)是一个轻量级本地化热点检测/降级框架,适用于大流量场景,可轻松解决业务中超高流量的并发查询等场景。并且接入和使用极其简单,10秒钟即可接入使用!

Akali框架的理念就是小巧,实用,来无影去无踪,丝血团战,满血退场,所到之处,皆为虚无。

二、开源协议

使用Apache-2.0开源协议

三、界面展示

 

图片

 

 

四、功能概述

特性

热点检测

自动根据QPS或者Thread数目来本地化检测热点

热点处理

自动用热点数据进行返回,热点消失后可自动摘除

降级检测

自动根据QPS或者Thread数目来检测是否降级

降级处理

可根据方法名进行定义降级方法

轻量小巧

整体框架不足500行代码,对系统消耗量极小

接入快速

整体一共2个标注,标注上即可使用

五、技术选型

图片

热点缓存的更新

如果一个方法的参数被提为热点后,在1分钟内都将用热点数据返回。1分钟后如果你的热点依旧存在,那么会触发第二次热点,第二次热点会重新查询你的数据,并缓存起来。在第二分钟内会用这份数据进行返回。以此类推。

所以,请确保你的接口符合在短时间窗口内是能保证幂等性的,如果你的接口返回的数据每时每刻都在发生变化,那么Akali并不适合。这点很重要。

对RPC框架的支持度

支持任何RPC框架,诸如dubbo,open feign的provider端的热点处理。你完全可以把@AkaliHot标注在以上框架的provider端,标注在接口方法上或者实现类方法上均可以。

对于热点处理的一些忠告

尽量标注在一定时间范围内幂等的方法上,比如查询用户,查询订单等接口,这些接口方法在小范围时间窗口内是相对幂等的。

如果你标注在事务性操作的方法上,比如库存扣减,那么热点触发后,可能会造成业务的错乱。因为这些业务方法本来就不是幂等的。

所以使用之前要对业务进行考量,不能瞎用,这属于使用不当,而不是框架的责任。

来源:Akali(阿卡丽)官网文档

六、源码地址

源码下载

关注下面的标签,发现更多相似文章

一飞开源
发布了 篇专栏 · 获取点赞 · 获取阅读

评论

查看更多
相关推荐
关于作者
一飞开源
获得点赞 100
文章被阅读 1000
相关文章