Protocol Buffer vs Json - когда выбирать один над другим - PullRequest
0 голосов
/ 19 сентября 2018

Может кто-нибудь объяснить, когда использовать буфер протокола вместо JSON для архитектуры микроуслуг?И наоборот?Как на синхронной, так и на асинхронной связи.

Ответы [ 2 ]

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

Когда использовать JSON

  • Вы должны или хотите, чтобы данные были удобочитаемыми для человека
  • Данные из сервиса напрямую используются веб-браузером
  • Ваш серверстороннее приложение написано на JavaScript
  • Вы не готовы связать модель данных со схемой
  • У вас нет пропускной способности, чтобы добавить еще один инструмент в ваш арсенал
  • Операционная нагрузка на запуск другого вида сетевого сервиса слишком велика

Плюсы ProtoBuf

  • Гарантирует безопасность типов
  • Предотвращает нарушения схемы
  • Предоставляет вам простые средства доступа
  • Быстрая сериализация / десериализация
  • Обратная совместимость

Пока мы на нем, вы смотрели на flatbuffers ?

Некоторые аспекты описаны здесь буферы протокола Google против json против XML

Ссылка:

https://codeclimate.com/blog/choose-protocol-buffers/

https://codeburst.io/json-vs-protocol-buffers-vs-flatbuffers-a4247f8bda6f

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

Я бы использовал JSON, когда потребитель написан или может быть написан на языке со встроенной встроенной поддержкой JSON (пример Javascript), веб-браузером или там, где требуется удобочитаемость.Говоря об этом, по крайней мере для асинхронных вызовов, многие разработчики пользуются удобством анализа содержимого очереди непосредственно для отладки и даже в ходе обычного процесса разработки.В зависимости от используемого технического стека, может быть, а может и не стоить компромисса с использованием protobuf только для уменьшения нагрузки на сеть, поскольку любое повышение производительности не принесет вам большой пользы в асинхронном мире.И это не значит, что нам нужно больше писать кучу кода, как мы привыкли использовать для маршалинга и демаршаллинга JSON в большинстве языков.

Я бы использовал protobuf для всего остального ... если есть какие-то другиеварианты использования оставлены для этого с учетом соображений выше.Есть преимущества, которые вы можете увидеть, такие как производительность, нагрузка на сеть, обратная совместимость, предлагаемая его схемой управления версиями, прекрасная документация, которая волшебным образом поставляется с файлами прото, и некоторая проверка!Если по какой-либо причине у вас есть много REST или других синхронных вызовов между микросервисами, protobuf может быть отправлен по проводной связи вместо JSON без многих компромиссов, если таковые вообще имеются, предлагая кучу преимуществ.

...