Расширение кэша данных ASP.NET для совместного использования через веб-ферму
У меня есть приложение ASP.NET, которое широко использует API-интерфейс кэширования ASP.NET для кэширования часто используемых данных. Кроме того, я использую основанную на опросе зависимость кэша sql для отслеживания срока действия.
Недостаток текущего проекта заключается в том, что в среде веб-фермы каждый веб-сервер имеет свой собственный кэш данных, который не распределяется между серверами.
Можно ли просто перенести код для совместного использования кэша данных между несколькими серверами?
Я думал об использовании memcached, однако, это не будет работать с зависимостью кеша sql, верно?
Любые другие решения?
3 ответа
Вы смотрели на Windows Server AppFabric (ранее Velocity).
Вы можете использовать следующие параметры -
Используйте описанный здесь подход для синхронизации данных между веб-фермами - http://www.eggheadcafe.com/articles/20030420.asp
Использовать подход распределенного кэширования
Используйте корпоративную библиотеку кеша.
Мне кажется, что Windows Server AppFabric - это именно то, что вы ищете. (АКА "Скорость"). Из вступительной документации:
Windows Server AppFabric предоставляет распределенную платформу кеша приложений в памяти для разработки масштабируемых, доступных и высокопроизводительных приложений. AppFabric объединяет память на нескольких компьютерах, чтобы предоставить приложениям единое представление кэша. Приложения могут хранить любой сериализуемый объект CLR, не беспокоясь о том, где этот объект хранится. Масштабируемость может быть достигнута простым добавлением большего количества компьютеров по требованию. Кэш также позволяет хранить копии данных в кластере, защищая данные от сбоев. Он работает как сервис, доступ к которому осуществляется по сети. Кроме того, Windows Server AppFabric обеспечивает бесшовную интеграцию с ASP.NET, что позволяет сохранять объекты сеансов ASP.NET в распределенном кэше без необходимости записи в базы данных. Это повышает как производительность, так и масштабируемость приложений ASP.NET.