Amon

限流框架
授权协议 GPL
开发语言 Java
所属分类 程序开发、 其他开发相关
软件类型 开源软件
地区 国产
投 递 者 濮献
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

amon

针对互联网常见的限流场景,一个注解解决方法级限流难题,与spring轻松整合


1 介绍

amon限流框架将会支持与apollo,xxl-conf,zconf配置中心(具体支持项参见release版本说明),动态修改限流速率无需重启。

2 使用

2.1 引入jar包

<dependency>
    <groupId>com.githup.liuyanggithup</groupId>
    <artifactId>amon-core</artifactId>
    <version>${last.version}</version>
</dependency>

2.2 配置扫描

在SpringBoot启动类添加

@ComponentScan(basePackages = {"com.githup.liuyanggithup.amon"})

2.3 配置中心集成

集成支持的配置中心,以下配置项必填

  • amon.configuration.center

    例如amon.configuration.center = apollo

    集成的配置中心,对应apollo,xxl-conf,zconf是作者的基于zk开源配置中心敬请关注。

  • amon.app.name

    例如amon.app.name = amon-sample-apollo

    应用的名称,建议和配置的spring.application.name保持一致。

  • 限流接口名称

    例如amon.test.amon = 600

    配置自定义的key,value为限流速率

2.4 方法级限流实战

@Limiter(name = "amon.test.amon")
    public String amon() {
        return "hello";
    }

使用Limiter注解,name属性是在配置中心配置的限流接口名称

 相关资料
  • 关于 Sentinel 限流功能,请点 这里 查看。 限流的场景 在应用的开发中,我们经常会遇到这样的一些场景,例如: 秒杀 抢红包 等等情况,这些业务都有一个明显的特征:并发量非常高。倘若没做好限流,往往会造成系统崩溃的情况。 限流的类型 在 Jboot 中,我们可以对某个url请求进行限流,也可以对某个java方法进行限流。 Jboot 提供了两种方案: TOKEN BUCKET : 令牌桶,

  • 实例: rate-limiting 限流是一种保护错误,避免服务被突发的或者大量的请求所拖垮。 这个插件使用 juju/ratelimit来限流。 使用 func NewRateLimitingPlugin(fillInterval time.Duration, capacity int64) *RateLimitingPlugin t来创建这个插件。

  • 限流与权限类似,因为它确定是否应该授权请求。 限流阀指示临时状态,并用于控制客户端可以对API进行的请求速率。 与权限一样,可能会使用多种限流方式。你的 API 可能对未经身份验证的请求进行限流,对经过身份验证的请求限流较少。 如果你需要对 API 的不同部分使用不同的限流策略,由于某些服务特别占用资源,你可能想要使用同时有多种限流策略的另一种方案。 如果你想要同时实现爆发限流率和持续限流率,也可

  • 概述 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 Sentinel 具有以下特征: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。 完备的实时

  • 2 架构流程

  • 为防止滥用,你应该考虑对您的 API 限流。 例如,您可以限制每个用户 10 分钟内最多调用 API 100 次。 如果在规定的时间内接收了一个用户大量的请求,将返回响应状态代码 429 (这意味着过多的请求)。 要启用限流, user identity class 应该实现 yii\filters\RateLimitInterface。 这个接口需要实现以下三个方法: getRateLimit(