Используйте gRP C, чтобы поделиться очень большим файлом - PullRequest
0 голосов
/ 19 июня 2020

Я хочу использовать gRP C для обмена очень большим файлом (более 6 ГБ) между конечными точками и сервером.

это подходящее решение? какие у меня есть альтернативы?

Компания, в которой я работаю, имеет приложение, которое разделено на несколько конечных точек, которые не знают друг друга, и они общаются с помощью RabbitMQ и с использованием шаблона публикации / подписки. Поскольку RabbitMQ имеет ограничение в 4 ГБ для каждого сообщения, я не могу использовать его напрямую, и мне нужно реализовать внешний микросервис.

Моя идея состоит в том, чтобы интегрировать эту систему с микросервисом, в который отправитель может загружать большое вложение и получите ключ. Затем он вставляет ключ в собственное сообщение для отправки. Затем получатель может использовать ключ из сообщения для загрузки копии вложения из микросервиса.

1 Ответ

1 голос
/ 19 июня 2020

Если вы действительно хотите сделать это через gRP C, то ключевым моментом является создание ответа «потоковая передача сервера», чтобы вместо возврата 6 ГБ одним фрагментом он возвращал несколько фрагментов любого размера, который вам нужен, например, может быть 128 КБ за раз (или что-то еще); вы можете сделать это примерно так:

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);
}

, но ничего не происходит автоматически c: теперь ваша задача - записать несколько сегментов обратно.

I подозреваю, что ответ в стиле ванильного HTTP-загрузки может быть проще!

...