当前位置: 首页 > 面试题库 >

使用API​​Spark restlet扩展限制对Restlet资源的请求

赵飞语
2023-03-14
问题内容

这是我的代码,用于限制分钟的请求数:

        MethodAuthorizer ma = createMethodAuthorizer();
        ma.setNext(router);

        FirewallRule rule = new PeriodicFirewallCounterRule(60, TimeUnit.SECONDS, new IpAddressCountingPolicy());
        ((PeriodicFirewallCounterRule)rule).addHandler(new RateLimitationHandler(new UniqueLimitPolicy(10)));
        FirewallFilter firewallFiler = new FirewallFilter(getContext(), list(rule));
        firewallFiler.setNext(ma);

        return ma;

问题是没有错误,但是即使从资源请求了10个以上的请求,它也不会抛出“ Too Many Request”


问题答案:

我使用GAE项目中的配置代码以及开发服务器来使其工作。

我使用Restlet的2.3.1版本/ GAE的1.9.18版本以及以下代码作为客户端:

public static void main(String[] args) {
    int i = 0;
    try {
        while (i < 30) {
            ClientResource cr = new ClientResource("http://localhost:8080/test");
            Representation repr = cr.get();
            System.out.println(">> call #"+i);
            Thread.sleep(100);

            i++;
        }
    } catch (Exception ex) {
        System.out.println(">> call #" + i + " failed");
        ex.printStackTrace();
    }
}

在第10次通话后,我遇到以下异常:

>> call #0
>> call #1
>> call #2
>> call #3
>> call #4
>> call #5
>> call #6
>> call #7
>> call #8
>> call #9
>> call #10 failed
429 (429) - The server is refusing to service the request because the user has sent too many requests in a given amount of time ("rate limiting")
    at org.restlet.resource.ClientResource.doError(ClientResource.java:590)
    at org.restlet.resource.ClientResource.handleInbound(ClientResource.java:1153)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1048)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:1023)
    at org.restlet.resource.ClientResource.handle(ClientResource.java:928)
    at org.restlet.resource.ClientResource.get(ClientResource.java:636)
    at org.restlet.gae.test.GaeRestletClient.main(GaeRestletClient.java:15)

希望对您有帮助,蒂埃里



 类似资料:
  • 假设我们有以下部署: 我们还创建了一个该对象根据CPU平均利用率自动增加/减少Pod的数量。我知道 HPA 会根据资源请求计算 Pod 的数量,但是如果我希望容器能够在水平扩展之前请求更多资源,该怎么办? 我有两个问题: 1) 当定义HPA时,K8是否使用资源限制? 2) 我是否可以告诉 HPA 根据资源限制而不是请求进行扩展?或者作为实现此类控件的一种手段,是否可以将值设置为大于 100%?

  • 注意:TPR已经停止维护,kubernetes 1.7及以上版本请使用CRD。 自定义资源是对Kubernetes API的扩展,kubernetes中的每个资源都是一个API对象的集合,例如我们在YAML文件里定义的那些spec都是对kubernetes中的资源对象的定义,所有的自定义资源可以跟kubernetes中内建的资源一样使用kubectl操作。 自定义资源 Kubernetes1.6版

  • 我想为kubernetes节点添加扩展资源,我可以通过curl命令来完成:https://kubernetes.io/docs/tasks/administer-cluster/extended-resource-node/,即: 然后,我可以创建一个需要example.com/dongle资源的pod。 但是,如何使用fabric8 Java API来做到这一点呢? 我用所有节点相关的API在我

  • 我使用RxJava异步处理servlet请求。在每个请求期间,使用flatMap操作符对远程服务API进行大量异步调用。 由于资源限制,我需要限制针对该API的并发请求总数。对于使用其并发参数在单个平面图中调用API的单个Rx流来说,这是微不足道的。但是我的应用程序中有多个独立的流(基本上每个ServletRequest一个),并且每个流都有多个对API的平面图调用。 因此,我认为我必须将所有远程

  • 前端篇 收集的前端面试题和答案 前端开发面试题 史上最全的web前端面试题汇总及答案 前端工程师手册 HTTP协议:工作原理 SSL/TLS协议运行机制的概述 协议篇 https 原理 HTTPS 原理解析 HTTPS 的工作原理 socket HTTP与WebSocket的区别 理解OAuth 2.0 后端篇 3年PHPer的面试总结 垃圾回收机制 S.O.L.I.D 面向对象设计 浅谈IOC—

  • 扩展资源和操作类 包括一系列资源在数据库中对应的记录和操作,这些模块的格式都很相似,一般包括若干个静态资源类和一个操作的mixin实现类。这个mixin类一般都是扩展核心plugin的资源、方法等支持,即提供扩展资源操作,一般继承自extension包中对应的基础类。