Scala& Finatra:直接从磁盘向网络发送文件服务器响应,无需加载到内存中

时间:2015-03-27 00:09:27

标签: java scala memory jvm finatra

我的任务是通过finatra直接从磁盘向客户端发送文件而不加载到内存中(这些是非常大的文件)。以下是我的问题:

0)如何在不将信息加载到内存的情况下与磁盘i / o进行交互?

1)将文件输入流连接到http输出流时,是否实际将内存加载到ram中?

2)我认为必须将所有内容加载到内存中才能使用,传输和发送。如何将内容直接发送到没有加载到内存的网络端口?

3)内存流是否会从磁盘,到cpu寄存器,到网络适配器缓冲区以便发送?如何在不加载ram的情况下确保这是流量?

4)是否可以在Finatra中执行此操作

1 个答案:

答案 0 :(得分:1)

遗憾的是,Finatra 1.6无法实现。流式传输似乎是2.0的路线图,但它的发布没有官方消息。现在,Request => Response依赖于记忆的输入和输出。处理Finatra中的实体的最有效方法是将它们保存在ChannelBuffers中,以便至少只有一个字节实例被实现。