Вопрос о том, как функция кэша AppFabric может быть использована

Вопрос о том, как функция кэша AppFabric может быть использована.

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

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

Одна из идей, которые мы имели, состояла в том, чтобы преобразовать приложение для чтения его использования данных, которое WCF называет к соразмещенному веб-серверу, который кэшировал бы связь с базой данных в Соединенных Штатах. Природа приложения такова, что все будут склонны просматривать те же 2 000 записей или так только со случайными обновлениями, и те обновления будут сделаны ограниченной группой пользователей.

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

AppFabric может проложить себе путь, или у меня должны просто быть серверы, получают их собственные данные из базы данных?

9
задан Kevin Buchan 10 June 2010 в 09:10
поделиться

1 ответ

Итак, если я правильно вас понял, у вас есть:

  • сервер базы данных в США
  • веб-серверы по всему миру?
  • (потенциально) кеш AppFabric в США

AppFabric потенциально дает вам два пути решения этого сценария.

  1. Локальный кеш
    В настройке AppFabric клиенты имеют возможность иметь локальный кеш объектов, где первый вызов кеша для объекта помещает объект в локальный кеш, а последующие запросы для этого объекта выполняются из локального кеша. Объекты удаляются из локального кеша либо из-за тайм-аута, либо из-за того, что основной кеш уведомляет локальный кеш о том, что объект устарел. Вы настраиваете это в своем web.config:

     
     
    
    

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

  2. Разместите кеш AppFabric на веб-серверах
    Ничто не мешает вашим веб-серверам быть серверами кеширования AppFabric! В этой настройке вы не будете использовать локальный кеш, потому что это не имеет смысла, если основной кеш уже является локальным для вашего клиента. Однако это гарантирует, что ваш клиент всегда будет извлекать последнюю версию кэшированного объекта из кеша.
    Однако вам нужно быть осторожным с сетевой нагрузкой, потому что эта настройка может означать, что ваш веб-сервер в США всегда читает кешированные объекты с (скажем) вашего европейского веб-сервера, что может замедлить оба ваших сервера, поскольку они пытаются обслуживать запросы кеша. а также веб-трафик.

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

11
ответ дан 3 November 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: