我要做的是使用 Netty 实现一个 Web 服务器,将上传到 HDFS 的大文件作为 HDFS 文件存储。
我的基本工作流程如下:
最终用户向我的 Netty 服务器发送 HTTP PUT/POST 请求(有效负载为 1GB)
服务器接受 HTTP 连接并解析方法/uri/headers
服务器在 DFSClient 中调用 HDFS 创建文件并获取句柄(DFSClient.create 是阻塞调用)
服务器在 HTTP 请求中接收上游的其余部分,并逐块写入 HDFS 句柄(将每个块写入 HDFS 句柄是一个阻塞调用)
服务器关闭 HDFS 句柄并向客户端确认(关闭 HDFS 句柄是阻塞调用)
我在使上述步骤起作用时遇到问题。因为我不知道在 Netty 中有效地进行阻塞调用的最佳方法是什么(尽可能少地阻塞整个事件循环)。
谁能告诉我实现上述逻辑的正确方法?提前谢谢了!