AppFabric против asp.net кеша с производительностью sqldependency - PullRequest
3 голосов
/ 29 сентября 2011

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

Исследуя AppFabric, я действительно не вижу значения в моей ситуации, потому что кажется, что по большей части, я просто заменяю обратную передачу в базу данных на обратную передачу в кластер кэша (который выглядит какон может даже иметь больше служебной информации, чем база данных, чтобы поддерживать синхронизацию узлов).

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

Для проблемы масштабируемости,также кажется, что проще добавлять идентичные веб-серверы в веб-ферму (каждый из которых кэширует пользователя).данные в процессе), а не управлять кластером кэша отдельно, что добавляет сложности.

С учетом сказанного, кто-то может объяснить, почему я выбрал бы один подход вместо другого, учитывая мои заявленные цели?Если вы порекомендуете подход AppFabric, вы можете объяснить, как производительность будет лучше, чем хранение данных в кэше asp.net в процессе.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 29 сентября 2011

Вы правы, что кэш фабрики приложений хранится вне процесса.

Когда поступает запрос на элемент кэша фабричного приложения, сначала выполняется поиск, чтобы определить, где находится элемент, а затем вызов wcf net.tcpip для получения элемента. Следовательно, это будет медленнее, чем кэширование asp.net. Но бывают случаи, когда кэширование appfabric лучше:

  • Вы не потеряете кеш при перезапуске пула приложений.
  • Если у вас 100 веб-серверов, вам нужно получить данные из базы данных один раз, а не 100 раз
  • Если вы используете Windows Edition Enterprise Edition, вы не потеряете кеш, если машина выйдет из строя
1 голос
/ 18 мая 2012

Я нашел эту тему на codeproject. Надеюсь, что это может ответить на ваш вопрос

0 голосов
/ 23 июля 2012

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

Что касается использования кэша asp.net, вы должны также учитывать его ограничения.это хорошо только для небольших веб-ферм.но когда число серверов растет, кэш asp.net может закончиться некоторыми проблемами производительности и масштабируемости из-за его внутрипроцессного характера.в большом веб-саду вам нужно иметь распределенный кеш в памяти. Прочтите для справки

...