IMemoryCache в сервисе, развёрнутом в нескольких репликах
Сервис тарифов работает в трёх репликах за балансировщиком. Справочник тарифов закэширован через IMemoryCache с временем жизни 30 минут. Менеджер обновил тариф через админку, и служба поддержки жалуется: разные пользователи видят разную цену.
В чём причина?
- IMemoryCache живёт в памяти конкретного процесса: у каждой реплики свой набор данных
- Балансировщик закрепляет пользователя за одной репликой, поэтому проблемы быть не может — дело в кэше браузера
- IMemoryCache синхронизируется между экземплярами приложения автоматически, но с задержкой около минуты, поэтому расхождение и заметно
- После перезапуска одной реплики её кэш подтягивается с соседних, значит достаточно перезапустить любую из них
