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