Что такое хорошо документированный шаблон стратегии кэширования для микросервисной архитектуры, имеющей дело с устаревшим? - PullRequest
0 голосов
/ 12 марта 2020

Я строю архитектуру микросервисов, которая должна иметь дело с:

  1. Прямой доступ к базе данных
  2. Вызов внешних устаревших сервисов

Я могу подумать о двух стратегиях кэширования, но не могу понять, что лучше, учитывая, что я не буду контролировать то, что другие люди могут делать на разных уровнях.

Кэширование на уровне приложения (@Cacheable)

Я предоставляю только функцию кэширования, которую может использовать каждый, применяя spring.cache.redis.key-prefix к имени микросервиса для ограничения конфликтующих ключей.

  • PRO : самый гибкий способ
  • CONS :
    • Нет контроля над кэшем, кроме максимального пространства: люди просто создают новые записи в кэше
    • Нет контроля над недействительностью кэша: мы не знаем, какие данные на самом деле хранятся, поэтому, если, например, устаревшая система нуждается в перезагрузке, мы не можем очистить некоторые ключи кэша
    • Возможная избыточность: как кэширование является на уровне приложений может случиться так, что микросервисы хранят примерно одинаковые данные. Хотя я мог иметь контроль над базой данных (одна MS должна иметь собственную базу данных или хотя бы подмножество таблиц), я не могу гарантировать, что унаследован SOAP layer

Кэширование на уровне обслуживания (соединители)

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

  • PROS:
    • кэш контролируется
    • легко аннулировать
  • CONS:
    • необходимо обновлять соединители каждый раз, когда меняется политика кэширования
    • зависимость между разработкой и архитектурой

edit: мне нужно предложение о теоретическом подходе, а не о конкретной технологии c.

1 Ответ

1 голос
/ 19 марта 2020

Полагаю, вам следует создавать разные микросервисы (apis) для решения разных задач. Например, у вас может быть один микросервис, который имеет дело с устаревшим, а другой - с базой данных. Для взаимодействия этих двух микросервисов вы можете использовать архитектуру брокера сообщений, например apache kafka (Hazelcast экономически эффективен или Rabbit MQ). Связь между этими двумя микросервисами также может быть управляемой событиями. Как только вы решите это, вы можете окончательно определить, где разместить кеш. Вам нужно будет разместить кеш на уровне приложения, а не на уровне обслуживания, если есть пользовательский интерфейс, в котором вы показываете эти значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...