Каковы способы использования и работы с gRPC?

Приветствую всех! У меня возникли вопросы организации взаимодействия микросервисов, использующих gRPC для общения. Предположим, у нас есть модель пользователя. Сколько protobuf файлов мне понадобится для этой модели? Нужно ли делать отдельный protobuf для каждого сценария взаимодействия? Как лучше организовать данные пользователя: разделять их между разными микросервисами или использовать общую модель? Насколько целесообразно создавать отдельный микросервис для аутентификации и авторизации, или лучше делегировать эти задачи отдельному провайдеру? Какие библиотеки для работы с gRPC вы можете посоветовать? Какие материалы можно изучить для более глубокого понимания принципов и устройства такой архитектуры?
  • 25 апреля 2024 г. 13:50
Ответы на вопрос 2
Существует несколько способов использования и работы с gRPC:

1. Создание protobuf файлов для определения сообщений и сервисов, которые будут использоваться для взаимодействия между микросервисами.
2. Генерация клиентского и серверного кода на основе protobuf файлов для разработки и интеграции микросервисов.
3. Организация аутентификации и авторизации на уровне прокси-сервера (например, nginx) или использование специализированных библиотек и сервисов для управления данными пользователя.

Для модели пользователя вам может потребоваться создать один protobuf файл, который будет содержать определение этой модели, а также файлы для определения соответствующих сервисов.

В отношении организации данных пользователя между разными микросервисами, можно использовать общую модель, чтобы избежать дублирования данных. Однако, важно учитывать принципы микросервисной архитектуры, чтобы каждый сервис отвечал только за свою часть функциональности.

Отдельный микросервис для аутентификации и авторизации также может быть целесообразным решением, особенно если у вас есть несколько сервисов, использующих эти функции. Это позволит централизованно управлять пользователями и их правами.

Что касается библиотек для работы с gRPC, вы можете рассмотреть следующие варианты: gRPC-Java, gRPC-Go, gRPC-node.

Для более глубокого понимания принципов и устройства архитектуры микросервисов с использованием gRPC, вы можете изучить официальную документацию по gRPC, а также пройти соответствующие онлайн-курсы и обучающие материалы от профессионалов в области архитектуры программного обеспечения.
1-2. Если говорить про микросервисы: каждый микросервис должен определять свою модель пользователя (только те поля/данные которые нужны конкретно ему) - да это будет копипаст 

Если про реальность: все зависит от области - возможно стоит сделать несколько независимых (в контексте запускаемых процессов) сервисов, но все они будут шарить единственную модель, а может для каждого свою определить.

3. Зависит
4. Обычно, для популярных ЯП (ты не указал, но в тегах есть питон) есть официальные библиотеки с кодогенерацией - юзай их
5. Какой архитектуры? Если про gRPC vs HTTP, то лучше копай в строну понимания синхронного (HTTP, TCP, gRPC) и асинхронного (очереди сообщений) взаимодействия
Похожие вопросы