1

我要做的是使用 Netty 实现一个 Web 服务器,将上传到 HDFS 的大文件作为 HDFS 文件存储。

我的基本工作流程如下:

  1. 最终用户向我的 Netty 服务器发送 HTTP PUT/POST 请求(有效负载为 1GB)

  2. 服务器接受 HTTP 连接并解析方法/uri/headers

  3. 服务器在 DFSClient 中调用 HDFS 创建文件并获取句柄(DFSClient.create 是阻塞调用)

  4. 服务器在 HTTP 请求中接收上游的其余部分,并逐块写入 HDFS 句柄(将每个块写入 HDFS 句柄是一个阻塞调用)

  5. 服务器关闭 HDFS 句柄并向客户端确认(关闭 HDFS 句柄是阻塞调用)

我在使上述步骤起作用时遇到问题。因为我不知道在 Netty 中有效地进行阻塞调用的最佳方法是什么(尽可能少地阻塞整个事件循环)。

谁能告诉我实现上述逻辑的正确方法?提前谢谢了!

4

1 回答 1

0

If you need to block you will need to put an ExecutionHandler in front of the handler that will perform the blocking operation to not affect the other channels on the same IO-Thread.

于 2013-01-30T05:47:18.403 回答