myks92
@myks92
Нашёл решение — пометь вопрос ответом!

Микросервисы как выводить общий профиль?

Всем привет!

Хотел бы спросить как реализуется общий профиль в микросервисах.

У меня есть несколько сервисов одного приложения. Пример двух:

user - служит для аутентификации и единого аккаунта.
event - служит для работы с мероприятиями.

В event есть свои сущности. Сущности, естественно никак не связаны ни в базе, ни в коде другими сервисами. Сущности в event имеют только ссылку по user_id на сервис user.

Пример

- id
- user_id
- first_name
- last_name
- city

И теперь возникает вопрос... Как выводить общий профиль и фотографию в микросервисе event. При условии того, что они должны быть оба независимы?

Пример того, что я имею ввиду можно посмотреть на всем известную платформу Яндекс. У яндекса есть passport где хранятся данные профиля и аватарка. А так же есть другие сервисы: Яндекс такси, Яндекс отзывы...

Соотвественно в яндекс отзывах выводится информация из профиля-сервиса passport: аватарка и фио. Я понимаю так, что имя и фамилия просто копируется из passport в сервис отзывы в свою сущность. Но как поступить с аватаркой?

И ещё вопрос. Как использовать единую систему городов? У всех сущностей нужны города. С точки зрения нормализации их лучше выделить в отдельные таблицы и ссылаться на них. Но тогда опять приходим к связанности. Получается в каждый сервис нужно реализовывать свои города?
  • Вопрос задан
  • 149 просмотров
Решения вопроса 2
@rPman
Фраза 'выводится' - это значит у вас есть методы, которые занимаются преобразованием данных объектов в представление (html например), это либо часть сущностей user/event/.. (т.е. каждая сущность умеет себя выставлять на показ) либо отдельная сущность, которая знает про все существующие и умеет их рисовать.

Собственно это ответ на ваш вопрос - ваша реализация будет гулять между этими крайностями.

Но когда речь идет об использовании данных, т.е. если вдруг для работы одной сущности нужна часть данных из другой, т.е. к примеру event должен знать дату рождения пользователя чтобы уметь добавлять ДР в календарь, то либо вы должны создать некую абстрактную сущность-посредник, умеющий выдавать дополнительные даты для календаря и знающий откуда их можно брать (и про user и имеющий методы, о которых знает event), либо забить связь между сущностями в код (прописать методы дат у user и напрямую запрашивать, т.е. в методе user необходимо прописать доступ к объектам типа user, точнее класс потом к для всех видов user).
Ответ написан
@grinat
Шо то не улавливаю проблемы, евент тупо через рест/grpc получает данные и их отображает, тоже с городами.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы