Можно ли совместно использовать HttpRuntime.Cache между несколькими веб-серверами? - PullRequest
7 голосов
/ 10 ноября 2010

У нас есть веб-приложение, которое хранит все данные сайта в HttpRuntime.Cache.

Теперь нам нужно развернуть приложение на 2 веб-серверах с балансировкой нагрузки.

В таком случаекаждый веб-сервер будет иметь свой собственный кэш, что не является идеальным, потому что если пользователь запрашивает данные у веб-сервера1, они будут кэшироваться, но следующий запрос может перейти на веб-сервер2, и данные, которые были кэшированы в предыдущем запросе, будут недоступны.

Можно ли использовать поставщика общего кэша для совместного использования HttpRuntime.Cache между двумя веб-серверами или для репликации кэша между ними, чтобы один и тот же кэш был доступен на обоих веб-серверах?Если да, что я могу сделать, чтобы решить эту проблему?

Ответы [ 4 ]

7 голосов
/ 10 ноября 2010

Нет, вы не можете использовать встроенный кеш ASP.NET, но вместо этого вы можете использовать что-то вроде memcached или AppFabric .

2 голосов
/ 10 ноября 2010

Нет, это невозможно. Вы должны использовать так называемый распределенный кэш, такой как Microsoft AppFabric Caching или очень популярный продукт с открытым исходным кодом memcached .

1 голос
/ 10 ноября 2010

По вашему вопросу звучит, что у вас есть пользовательские данные в кеше?В этом случае я буду с Aliostad и скажу: не ходите туда!

Кэш HttpRuntime должен использоваться для статических, но регулярно используемых элементов, которые поступают из базы данных, основной целью должно быть предотвращение попаданий в базу данных, которые в противном случае могли бы произойтина каждый запрос вне зависимости от пользователя ... так что, например, параметры в комбинированном ящике или параметры настройки certian

Если вам действительно требуется кэширование для пользовательских данных, то, как указано выше, Memcached, Appfabric или nvelocity

Существуют уровни кэширования, подходящие для различных нужд, поскольку наличие только двух веб-серверов позволяет предположить, что вам пока не требуется структура распределенного кэширования, приведенная выше.

Какова нагрузка на сервер и каков ограничивающий фактор, Процессор, оперативная память, сеть с полосой пропускания?На вашей БД или ваших веб-серверах?Каждый из них указывает на свою стратегию кэширования.

0 голосов
/ 10 ноября 2010

Не ходи туда. Обычно, кеш, являющийся статическим объектом, живет только в домене приложения. Вручную обновлять их - это мир боли, и мы настоятельно рекомендуем против.

Вы можете использовать несколько решений для кэширования, которые располагаются перед вашим сервером для таких целей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...