gRPC отправляет негабаритные сообщения

#c #buffer #grpc

Вопрос:

Я использую gRPC, извлекающий сообщения из удаленного хранилища(например, S3, GCS) и отправляющий их на сторону клиента. Некоторые из моих сообщений довольно большие(около 500 МБ-1 г), но размер отправки по умолчанию для gRPC составляет всего 4 МБ.

Если я поступлю ServerReaderWriter->Write(message) как обычно, запись завершится неудачей.

Есть ли хороший способ справиться с этой проблемой?

Комментарии:

1. gRPC предназначен для управления и управления, а не для передачи больших объемов данных. Другие протоколы более подходят для последних; например, API облачного хранилища

2. Это не «файл», я читаю сообщения из файлов некоторых видов и передаю их в порядке gRPC. Что касается того, почему я не использую HTTP GET, мне нужно поддерживать такие команды, как пауза и возобновление.

3. Я полагаю, что одна вещь, которую вы могли бы сделать (если нет лучшего способа), — это разделить ваши данные на 4 МБ (или меньше) фрагментов и отправить каждый фрагмент в отдельном сообщении, а получатель в конце объединит данные вместе.

4. Да, если нет лучших способов сделать это 🙁

5. Если и отправитель, и получатель этих больших сообщений могут позволить себе буферизировать весь 1 ГБ памяти для каждой из этих выборок, то максимальный размер получаемого сообщения (по умолчанию 4 МБ) может быть увеличен, чтобы это было возможно.