繁体   English   中英

如何在 Java Server 中处理许多同时发生的 Web 请求?

[英]How to handle few of many simultaneous Web requests in Java Server?

我创建了一个带有 JSP 和 Servets 的 Java Web 服务器来处理获取/发布请求。

如果 1000 个 Web 请求同时命中服务器,而我想处理前 10 个,我将如何实现? 例如,我只想在前 10 个请求上运行特定代码。

我需要使用什么技术? 我需要使用同步代码吗? 我需要使用线程池吗? 我需要使用队列吗? 推荐的解决方案是什么?

如果您真的需要这样做,只需使用AtomicInteger作为您的计数器(背后的原因是 servlet 在多个请求之间共享,因此您可能会遇到同步问题)。 所以你的代码可以是这样的

public HitCounterServlet extends HttpServlet {

    private AtomicInteger counter = new AtomicInteger();

    public void doGet(HttpServletRequest req, HttpServletResponse res) {
        int counterValue = counter.incrementAndGet();
        if(value <= 10) {
            // handle request
        }
    }
}

您当然可以将此代码移动到Filter或使用像@Disco 3 建议的代理服务器。 例如,您可以使用nginx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM