Комментарии 12
А насколько вообще корректно сравнивать транспорт с библиотекой? Они хоть и похожи в названиях, но делают абсолютно разные вещи
Если честно, то ощущение что у автора смешалось все в кучу, и он сам не особо понимает о чем пишет.
Подход gRPC децентрализован
В чем заключается децентрализация? Что такое высокая нагрузка? Выглядит как преждевременная оптимизация сайта личного блога.
Децентрализация, в данном контексте, подразумевает декомпозицию кода без единой точки входа и способ взаимодействия сервисов между собой напрямую, а не через роутер между ними
1. Каждый сервис gRPC занимает свой обособленный порт. Как следствие, сервисы можно включать и выключать по отдельности
export const CC_GRPC_MAP = {
"FooService": {
grpcHost: "localhost:50051",
protoName: "foo_service",
methodList: [
"Execute",
],
},
"BarService": {
grpcHost: "localhost:50052",
protoName: "bar_service",
methodList: [
"Execute",
],
},
"BazService": {
grpcHost: "localhost:50053",
protoName: "baz_service",
methodList: [
"Execute",
],
},
} as const;
2. Proto файлы пишутся по отдельности. Нет единого файла, где на каждый новый добавленный разными разработчиками метод сервиса будет конфликт слияния веток
├───proto
│ bar_service.proto
│ baz_service.proto
│ foo_service.proto
По поводу нагрузки, разумеется, что условный Яндекс будет использовать Kafka. Если выбор стоит между gRPC и tRPC, очевидно, что это некоторое коробочное решение, поставляемое среднем бизнесом на условный завод. Не особо крупный, но достаточно большой
Во поводу внешнего вида, это деперсонализированное решение для не подпадания под NDA, уже используемое в коммерческом продукте
Я не встречал ничего более неудобного для фронта, чем gRPC. Удачи писать моки на классах, и дебаг бинарных данных во вкладке Network браузера. OpenAPI - наше всё!
Фронт не при чем, в host приложениях используется REST API. Берем NestJS, вот вам и Swagger. Это для взаимодействия между backend микросервисами
https://docs.nestjs.com/recipes/swagger
Автор сильно злоупотребляет стрелочными функциями
Почему мы выбрали gRPC вместо tRPC?