【发布时间】:2013-05-23 14:33:20
【问题描述】:
过去几天我一直在探索 Netty,因为我正在编写一个可以接收大量请求的快速而紧凑的 HTTP 服务器,而 Netty 的 HTTP 服务器实现非常简单并且可以胜任。
我的下一步是作为请求处理的一部分,我需要向外部 Web 服务器发起 HTTP 请求。我的直觉是实现一个可以同时发送大量请求的异步客户端,但我有点困惑什么是正确的方法。我的理解是,Netty 服务器为每个传入消息使用一个工作线程,因此在我的处理程序完成工作之前,该工作线程不会被释放来接受新消息。 重点是:即使我手头有一个异步 HTTP 客户端,我是否需要等待每个响应并使用我的服务器处理程序将其处理回来也没关系——同一个工作线程将一直处于阻塞状态。另一种方法是使用客户端的异步特性,快速返回一个未来对象以释放线程并放置一个监听器(意味着我必须向客户端返回 200 或 202 状态),并检查我的未来对象以指示何时响应收到了,我可以推送给客户端。
这有意义吗?我是否偏离了我的假设?实现这种高并发的Netty接受器服务器+外部客户端的好做法是什么?
谢谢,
【问题讨论】: