их ограничение размера буфера протокола? - PullRequest
0 голосов
/ 13 сентября 2018

Я передаю данные с моего клиента на сервер и наоборот.Я хочу знать, есть ли у них ограничение по размеру буфера протокола.

1 Ответ

0 голосов
/ 16 сентября 2018

Ссылаясь на официальный источник :

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

Тем не менее, буферные протоколы отлично подходят для обработки отдельных сообщений в больших данных.задавать.Обычно большие наборы данных на самом деле представляют собой просто набор маленьких фрагментов, где каждый маленький фрагмент может быть структурированным фрагментом данных.Несмотря на то, что буферные протоколы не могут обрабатывать весь набор сразу, использование буферов протокола для кодирования каждого фрагмента значительно упрощает вашу проблему: теперь все, что вам нужно, это обрабатывать набор байтовых строк, а не набор структур.

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


Насколько я понимаю, кодировка protobuf применимо следующее:

  • переменные выше 64-битных не указываются, но учитывая, как их кодирование работает длина битов varint не ограничена форматом проводов (varintсостоящий из нескольких 1xxxxxxx групп и оканчивающийся одной 0xxxxxxx, вполне допустим - я полагаю, что нет реальной реализации, поддерживающей варианты, размер которых превышает 64-битную)выше свойства кодирования varint, должна быть возможность кодировать любую длину сообщения (так как varints используются для внутреннего кодирования длины полей с разделителями длины, а другие типы полей являются varints или имеют фиксированную длину)

  • Вы можете создавать произвольно длинные допустимые сообщения protobuf, просто повторяя одно повторяющееся поле ad-absurdum - парсер должен быть совершенно счастливКроме того, он имеет достаточно памяти для хранения значений (есть даже синтаксические анализаторы, которые обеспечивают обратные вызовы для значений полей, что снижает потребление памяти, например, nanopb )

(Пожалуйста, сделайтеподтвердите мои мысли)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...