@Lost_Watchmaker

Как можно реализовать пагинацию в Java, в том случае, когда данные для фильтрации должны браться из двух разных микросервисов?

Всем привет, подскажите как можно реализовать пагинацию в Java, в том случае, когда данные для фильтрации должны браться из двух разных микросервисов. В первом микросервисе есть информация о пользователе, а во втором есть информация о его работе, и нужно фильтровать данные и по пользователю и по работе. Если отфильтровать данные по пользователю а затем по работе, то пагинация сломается (записей будет меньше, чем мы ожидали бы увидеть)
  • Вопрос задан
  • 197 просмотров
Решения вопроса 1
@Akela_wolf
Extreme Programmer
1. Подумать - что это за странное разбиение на микросервисы, которые оперируют связанными данными? Возможно тут что-то не так (и сильно не так)
2. Подумать - не стоит ли данные денормализовать и сдублировать данные о пользователе (или работе) в какой-то из двух микросервисов.
3. Выгребать все данные без фильтрации и делать фильтрацию и пагинацию уже на сервисе-потребителе. Но тут все зависит от объема данных. Если там десятки-сотни мегабайт - это окажется очень грустно.

Но лично я бы в первую очередь заподозрил необходимость рефакторинга. И, возможно, слияния этих микросервисов.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый день.
Согласен с коллегой. Возможно. вам стоит рассмотреть вопрос о слиянии микросервисов или же о создании доп. микросервиса, у которого будет доступ к базе и данные будут согласованы (сага паттерн вроде должен подойти)
Ответ написан
Комментировать
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
Ключевая фраза

Если отфильтровать данные по пользователю а затем по работе, то пагинация сломается (записей будет меньше, чем мы ожидали бы увидеть)


Мне кажется что здесь надо просто с бизнесом обсудить что собственно надо публиковать. С фильтрацией или без. А пагинация - это просто технический приём. К корректности результата вобщем то не имеет прямого отношения.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы