Я занимаюсь разработкой микросервиса. Эта MS будет развернута в док-контейнерах и будет контролироваться Kubernetes. Я должен реализовать решение для кэширования с использованием распределенного кэша hazelcast. Мои требования:
- Предварительная загрузка кэша при запуске этого микросервиса. Приблизительно для 3000 магазинов мне нужно выбрать два определенных атрибута и кэшировать их.
- Каждые 24 часа обновляйте кеш.
Я реализовал Spring @EventListener и при запуске сделал вызов из базы данных для двух атрибутов, сделал @CachePut и сохранил их в Cache.
У меня также есть планировщик Spring с выражением cron для обновления кэша каждые 6 часов утра.
Пока все хорошо.
Но то, что я не осознавал, что в кластерной среде - 10-15 экземпляров моего микросервиса будут в действии и будут пытаться выполнить выше 2 шага почти одновременно - таким образом создавая панический эффект для моей базы данных и кеша. Кто-нибудь знает, что делать в этом сценарии? Есть ли какой-нибудь хороший дизайн или даже средний, которому я могу следовать?
Спасибо.