我想使用 gRPC 在端点和服务器之间共享非常大的文件(更多的 6gb)。
这是一个合适的解决方案吗?
我有什么选择?
我工作的公司有一个应用程序,该应用程序分隔在多个彼此不了解的端点中,它们使用 RabbitMQ 和使用发布/订阅模式进行对话。
因为RabbitMQ对每条消息有4gb的限制,不能直接使用,需要实现外部微服务。
我的想法是将这个系统与一个微服务集成在一起,在这个微服务中,发送者可以上传一个大附件并接收一个 key 。然后它在要发送的实际消息中插入 key 。然后接收者可以使用消息中的 key 从微服务下载附件副本。
最佳答案
如果您真的想通过 gRPC 执行此操作,那么关键是使响应成为“服务器流式处理”,这样它就不会在一个块中返回 6GiB,而是返回您需要的任何大小的多个块,例如可能 128kiB 一次时间(或其他);你可以这样做:
syntax = "proto3";
message FileRequest {
string id = 1; // or whatever
}
message FileResponse {
bytes chunk = 1; // some segment of the file
}
service SearchService {
rpc GetFile(FileRequest) returns (stream FileResponse);
}
但没有什么是自动的:现在你的工作是写回多个段。
我怀疑 Vanilla http 下载式响应可能更简单!
关于c# - 使用 gRPC 共享非常大的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62470323/