Я собираюсь улучшить эффективность тяжелой системы кеша, которая имеет следующие свойства / архитектуру:
Система состоит из 2 компонентов: одного экземпляра и нескольких экземпляров внешнего интерфейса, распределенных по удаленным центрам обработки данных.
Сервер создает данные и записывает их в реляционную базу данных, которая реплицируется в несколько центров обработки данных.
Интерфейсы обрабатывают запросы клиентов (на основе общего веб-трафика), считывая данные из базы данных и обслуживая их. Данные хранятся в локальном кэше в течение часа до истечения срока действия и должны быть восстановлены снова.
(Политика удаления кэша основана на LRU).
Хочу отметить, что с реализацией выше есть две проблемы:
Оказывается, что многие из обращений к базе данных избыточны, потому что базовые данные фактически не изменились.
С другой стороны, изменение не отражается до тех пор, пока не истечет TTL кеша, что приведет к проблемам с устареванием.
Можете ли вы посоветовать решение, которое устранит обе эти проблемы?
должно ли решение измениться, если данные хранятся в nosql db, например, в cassandra, а не в классической базе данных?