1

Я рассматриваю использование кэширования AppFabric для своего приложения, но не понимаю, как заставить его делать то, что я хочу. У меня 1 кластер SQL в 1 месте. У меня есть 200 серверов приложений по всему миру. Я хочу разместить кластер кэширования AppFabric в каждом из этих мест, чтобы серверы приложений имели быстрый доступ к объектам SQL. В дополнение к быстрому доступу, мне нужно, чтобы они имели доступ к данным в случае недоступности кластера SQL.AppFabric Caching и SQL Dependency

Приложение HR, которое непосредственно обновляет кластер SQL, чтобы данные изменялись. Серверы приложений также будут обновлять кеш AppFabric во многих местах. Все эти данные должны оставаться в синхронизации. Вот мои вопросы:

  1. Как будет обновляться кеш при изменении БД? Я прочитал, что SQLDependency - это то, что мне нужно, но я также прочитал, что после того, как произойдут изменения, весь мой кеш будет выгружен и придется повторно синхронизировать. Я хочу, чтобы только измененные объекты отправлялись в несколько кешей для обновления.

  2. Что происходит, если кластер SQL недоступен и кеш не может найти запрашиваемые объекты?

  3. Есть ли лучший способ сделать то, что я пытаюсь сделать? Это больше о доступности объектов SQL, чем о производительности. О том, чтобы исследовать MS Sync Framework ...

ответ

1

AppFabric не имеет никакой поддержки для объектов зависимостей кэша, как SqlCacheDependency, но то, что вы можете сделать вместо этого создать для чтения через/записи-за кэш поставщика AppFabric. Этот провайдер знает структуру вашей базы данных SQL Server, поэтому он может извлекать информацию из базы данных. и могут обновлять вашу базу данных при обновлении. Серверы приложений обновляют кеш AppFabric, поэтому ваш кеш всегда имеет самую последнюю версию ваших данных, и затем кеш записывает обновления в базу данных асинхронно.

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

+0

FYI: SqlCacheDependency - поставщик кеша для ASP.NET и не тот же, что и объект SqlDependency от ADO.NET, который позволяет вам перехватывать пользовательский код для выполнения при уведомлении от SQL, данные которого были изменены. – Jaans

0

Я знаю, что вы опубликовали это некоторое время назад, но есть решения кэширования, которые позволяют использовать зависимости кэша для синхронизации с основными источниками данных. Случай с вашей ситуацией, зависящей от SQL, доступен в NCache. С NCache вы можете иметь несколько опций для синхронизации с БД и после того, как такая опция будет «прочитана». Поэтому, когда БД изменяется, зависимый Объект автоматически удаляется из кеша, и если чтение включено, то сервер кэша автоматически возвращает новую копию объекта. Вы можете узнать больше о Database Synchronization here

 Смежные вопросы

  • Нет связанных вопросов^_^