Детали задачи
-
История
-
Решение: Готово
-
High
-
Не заполнено
-
Не заполнено
-
Не заполнено
Описание
Сейчас типы из микросервиса ecos-model синхронизируются с использованием постоянных (раз в 5 секунд) REST запросов, в которых идет поиск всех типов, которые изменились с прошлого запроса + для получения всей информации по типам приходится делать вычисления для учета наследования типов. Этот механизм работает, но имеет ряд недостатков, от которых хотелось бы избавиться:
- Если предположить, что у нас в системе будет ~10 микросервисов которые отправляют запросы, то получается микросервису ecos-model нужно обрабатывать 2 запроса в секунду на “холостом ходу”. Сюда же добавлятся синхронизация других конфигов (шаблоны нотификаций, шаблоны нумерации, матрицы прав). Выходит лишняя нагрузка.
- На практике микросервис ecos-model периодически падает по нехватке памяти
Предположительно это связано с необходимостью регулярно в памяти вычислять конфигурацию типов на основе наследования - Постоянные запросы создают трудности для локальной разработки т.к.
- Бывает отсутствует связь между некоторым микросервисом и ecos-model, а без этой связи запуститься нельзя.
- Если микросервис ecos-model перезапускается или не успел еще запуститься, то мы видим очень много спама о том, что запрос за получением типов провалился.
- Задержка между изменением типа и получением этой конфигурации в других микросервисах
- Сейчас есть сложности при настройке синхронизации типов в новых микросервисах с учетом использовании реестра типов в тестах. После выполнения задачи нужно будет только подключить библиотеки ecos-zookeeper и ecos-model-lib
Нужно разработать универсальный реестр конфигураций на базе Zookeeper в либе ecos-zookeeper и мигрировать все конфигурации c RemoteSyncRecordsDao на использование ecos-zookeeper