Я пытаюсь понять protobuf и gRPC и то, как я могу их использовать. Не могли бы вы помочь мне понять следующее:
- Учитывая модель OSI , где, например, находится Protobuf на уровне 4?
- Подумав о передаче сообщений, как обстоят дела с «потоком», что делает gRPC, что пропускает protobuf?
- Если отправитель использует protobuf, может ли сервер использовать gRPC или gRPC добавляет что-то, что может доставить только клиент gRPC?
- Если gRPC может сделать возможной синхронную и асинхронную связь, Protobuf предназначен только для маршалинга и, следовательно, не имеет ничего общего с состоянием - true или false?
- Могу ли я использовать gRPC во внешнем приложении вместо REST или GraphQL?
Я уже знаю - или предполагаю, что знаю - что:
- Бинарный протокол для обмена данными
- Разработано Google
- Использует сгенерированное описание типа "Struct" на клиенте и сервере для отмены - / - маршаллинга сообщения
- Использует protobuf (v3)
- Опять из гугла
- Платформа для вызовов RPC
- Также использует HTTP / 2
- Возможна синхронная и асинхронная связь
Я снова предполагаю, что это простой вопрос для тех, кто уже использует эту технологию. Я все еще буду благодарен вам за терпение и помощь. Я также был бы очень благодарен за любое сетевое глубокое погружение в технологии.
networking
protocol-buffers
grpc
одинокий
источник
источник
HTTP/2
), но он определенно выполняет функции этих уровней.На самом деле gRPC и Protobuf - это две совершенно разные вещи. Позвольте мне упростить:
У gRPC есть 2 стороны: сторона сервера и сторона клиента, которая может дозваниваться до сервера. Сервер предоставляет RPC (т. Е. Функции, которые можно вызывать удаленно). И у вас есть много вариантов: вы можете защитить связь (с помощью TLS), добавить уровень аутентификации (с помощью перехватчиков), ...
Вы можете использовать protobuf внутри любой программы, которая не обязательно должна быть клиент-серверной. Если вам нужно обмениваться данными и вы хотите, чтобы они были строго типизированы, protobuf - хороший вариант (быстрый и надежный).
При этом вы можете комбинировать и то, и другое для создания хорошей системы клиент / сервер: gRPC будет вашим кодом клиент / сервер, а protobuf - вашим протоколом данных.
PS: Я написал этот документ, чтобы показать, как можно шаг за шагом построить клиент / сервер с gRPC и protobuf с помощью Go.
источник
grpc - это фреймворк, созданный Google, и он используется в производственных проектах самого Google, а #HyperledgerFabric построен с использованием grpc, есть много приложений с открытым исходным кодом, созданных с помощью grpc
protobuff - это представление данных, такое как json, это также Google, на самом деле у них есть несколько тысяч прото-файлов, созданных в их производственных проектах
grpc
протобафф
источник