y r*_*rao 3 python scala clojure java-server netty
我想写一个Java Server可能正在使用Netty或其他任何建议.整个目的是我想将传入的HTTP请求排队一段时间,因为我所针对的系统正在执行超级内存和计算密集型任务,所以如果他们负担很重,他们最终会崩溃.
我希望有一个队列到位,实际上在任何给定时间只允许最多5个请求传递到目标,并将其余请求保留在队列中.
这可以使用Java中的Netty实现,我同样可以在Scala,Python或clojure中实现.
我和Scala Akka演员做了类似的事情.而不是HTTP请求,我有无限数量的作业请求进入并添加到队列(常规队列).工作管理器将管理该队列,并在处理完先前任务时将工作分派给工作者.工作人员会通知工作管理器任务已完成,并且会从队列中向他们发送新的任务.所以在这种情况下,没有繁忙的等待或循环,一切都发生在消息接收上.您可以对HTTP请求执行相同的操作.Akka可以在Scala或Java中使用,我描述的过程比听起来更容易实现.
作为Web服务器,您可以真正使用任何东西.它可以是Jetty,也可以是Tomcat等一些Servlet容器,甚至是Spray-can.它需要做的就是接收请求并向工人经理发送消息.整个系统将是异步和非阻塞的.