2013-07-24 8 views
3

У нас очень простая настройка AppFabric, где есть два клиента - позволяет называть их сервером A и сервером B. Сервер A также является ведущим кешем кэша, и оба сервера A и B имеют локальный кеш-ключ , Мы хотели бы иметь возможность сделать обновление элемента с сервера B и распространить это изменение на локальный кеш сервера A в течение 30 секунд (например).AppFabric Syncing Local Caches

Как я понимаю, как представляется, два различных способа получения изменений, распространяющихся к клиенту:

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

Если мое требование для получения обновлений для всех клиентов в течение 30 секунд, тогда установка тайм-аута менее чем на 30 секунд в локальном кеше представляется единственным выбором, если вы перейдете с опцией № 1 выше. Из-за размера кеша это было бы неэффективно, чтобы выселить весь кеш (99,99% из которых, вероятно, не изменилось за последние 30 секунд).

Я думаю, что нам нужно реализовать вариант № 2 выше, но я не уверен, что понимаю, как это работает. Я прочитал всю документацию msdn (http://msdn.microsoft.com/en-us/library/ee808091.aspx) и рассмотрел некоторые примеры, но мне все еще неясно, действительно ли нужно писать собственный код, или если это только в том случае, если вы хотите выполнить дополнительную обработку.

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

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

ответ

0

Я провел несколько тестов и рад сказать, что вам НЕ нужно писать какой-либо код, чтобы убедиться, что все клиенты синхронизированы. Если вы установите следующее в качестве дочернего элемента кластера конфигурации:

В клиентской конфигурации вам необходимо установить синхронизацию = «NotificationBased» на элементе.

Элемент конфигурации клиента сообщает клиенту, как часто он должен проверять наличие новых уведомлений на сервере. В этом случае каждые 15 секунд клиент проверяет наличие уведомлений и вытаскивает все элементы, которые были изменены.

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