Вступить в клуб →
лёгкаявопросКэш, очереди и микросервисы

IMemoryCache в сервисе, развёрнутом в нескольких репликах

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

В чём причина?

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

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела