【问题标题】:Is there a framework to limit method invoke rate in java?java中是否有限制方法调用率的框架?
【发布时间】:2014-01-09 02:33:21
【问题描述】:

我有一个 can not be invoke more than N times in one second 的 java 方法,是否有框架或实用程序可以完成这项工作。

当调用次数过多时,可以保持和平衡调用请求。

【问题讨论】:

    标签: java frameworks method-invocation


    【解决方案1】:

    我在我的网络应用程序的反ddos功能中使用了这个,很容易做到这一点。

    首先你需要一个数据库来记录调用信息,比如method nametime

    那么您可以在springmvc 或其他一些技术框架中使用AOPinterceptor
    记录您正在调用的内容,然后检查您是否有资格这样做。
    在检查资格时,您需要计算在过去N 分钟内执行了多少次调用,如果超过,则拒绝此调用!

    试一试!

    【讨论】:

    • 嗯...进行数据库查询以检查调用计数可能会使 ddos​​ 问题变得更糟而不是更好。您需要不会增加大量额外负载的速率限制检查。此外,这并不能回答问题。 OP 想要一个现有的 util / 框架,而不是关于如何构建一个的说明。
    • @StephenC 我先让web服务器做防御,我只是记录下客户端做了什么,但是在这个问题中,这张海报需要的和我的部分逻辑是一样的
    • 这并没有真正解决我的观点。我的意思是你的策略不是一个好策略。无论是第一道防线、第二道防线还是第N道防线,它仍然会很昂贵。您添加一个额外的数据库查询并在对您的服务器的每个请求上进行更新。算一算……
    • @Rugal 这不是一个网络应用程序,只是一个由许多线程调用的方法。
    • 所以你不想记录任何关于动作的信息,但还想有这个防御?
    猜你喜欢
    • 2011-04-18
    • 2017-07-11
    • 2012-02-11
    • 2011-01-21
    • 2018-03-07
    • 2016-09-07
    • 2020-12-21
    • 2013-07-06
    • 1970-01-01
    相关资源
    最近更新 更多