#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 МБ) может быть увеличен, чтобы это было возможно.