我目前正在尝试找出通过 RMI 传输相当大的字节数组 (<50MB) 是否是个好主意。
我读到它很慢,数据需要保存在客户端和服务器的内存中。当有多个调用时,这可能会导致问题。
有没有(简单的)替代方案?
我目前正在尝试找出通过 RMI 传输相当大的字节数组 (<50MB) 是否是个好主意。
我读到它很慢,数据需要保存在客户端和服务器的内存中。当有多个调用时,这可能会导致问题。
有没有(简单的)替代方案?
考虑支持压缩以发送/接收大量数据的 java 流。
例如GZipOutputStream发送数据和GZipInputStream接收发送的数据块。
RMI 旨在传输对象。如果您在服务器上有一个字节数组对象并希望它在客户端上,您必须在两个地方都拥有它,直到它成功交付(然后您可以让原始对象消失)。
更合理的方法可能是重复调用填充远程对象,一次只传输一小块。这反过来又需要多次旅行,使其变慢。
您要解决的实际(非技术)问题是什么?
这是一个非常糟糕的主意。在调用远程方法之前,必须在内存中形成字节数组;然后它必须在呼叫中传输;然后它必须由服务器读取;那么它必须存在于服务器中;然后它可以由服务器处理。您永远不想在一个块中处理这么大的数据项。它既浪费时间又浪费空间。考虑一个流式 API,您可以在两端使用中等大小的缓冲区;以方便发送方的块形式发送数据;并以方便接收者的块接收它。