Разница между go-micro и go-grpc
Я построил сервис "go-micro". Насколько я понимаю, go-micro использует protobuf для создания определения и создания структур сообщений gRPC в качестве сетевого протокола (я, конечно, могу ошибаться здесь).
Если приведенное выше верно, то для чего используется плагин "go-grpc"?
Спасибо!
2 ответа
Go-micro использует интерфейс Go для своих абстракций. Из-за этого базовая реализация может быть заменена. Go-Micro по умолчанию использует HTTP для связи
Go-GRPC - это простая оболочка для go-micro и плагинов grpc для клиента и сервера.
Позвольте мне попробовать.
RPC - это просто модель вызова метода, если мы можем вызывать удаленный сервис из локальной системы, мы можем сказать, что это некий тип RPC.
RPC бывают разных типов, так как клиент и сервис могут взаимодействовать в разных протоколах, таких как UTP, TCP, HTTP, HTTP/2.
Protobuf, как и JSON, XML, является просто форматом обмена данными, за исключением того, что json и xml основаны на тексте, а protobuf основан на байтах и экономит много трафика и время сериализации.
Итак, вместе мы можем объединить эти два, чтобы сформировать все виды RPC. Например, отправка данных JSON через UTP - это одна из форм RPC, отправка данных XML через TCP - это еще одна, отправка данных Protobuf через UTP - еще одна.
GRPC - это одна из форм RPC, которая отправляет данные Protobuf через протокол HTTP/2.
go-mico - это инфраструктура микросервисов, сервисы обмениваются данными через RPC, поэтому go-micro предлагает разработчикам все виды RPC на выбор, и они представлены в виде плагинов, таких как UTP, HTTP, GRPC и т. д.
GRPC является коммуникационной моделью и может быть реализована на большинстве языков, таких как C++, JAVA, Go. Таким образом, Go-GRPC - это плагин GRPC, написанный на языке Go.
Надеюсь, я объяснил это ясно, и поправьте меня, если я ошибаюсь,