Как стать автором
Обновить

Комментарии 12

А насколько вообще корректно сравнивать транспорт с библиотекой? Они хоть и похожи в названиях, но делают абсолютно разные вещи

Говорим gRPC, подразумеваем официальный биндинг, который и есть библиотека

Если честно, то ощущение что у автора смешалось все в кучу, и он сам не особо понимает о чем пишет.

Подход 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

Ну да, вот я сейчас пришел к своим бэкам и они взяли мне такие и затащили. Изначально нужно было что-то такое использовать - это верно.

Поэтому и был сделан starter kit: чтобы исключить изобретение прорабом кастомного кирпича :-)

Автор сильно злоупотребляет стрелочными функциями

Рекомендую использовать именно стрелочные функции

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории