У меня есть приложение, которое запускает один сервер Membase (1.7.1.1), который я использую для кэширования данных, которые я бы выбрал из нашей центральной базы данных SQL Server. У меня есть одно ведра по умолчанию, связанное с сервером Membase и следовать традиционной схеме данных, Вычитывание:Шаблон кэширования Membase, когда один сервер в кластере недоступен
- Когда конкретные данные запрашиваются, выполните поиск соответствующего ключа в Membase
- Если данные возвращаются, используйте его.
- Если данные не возвращается, извлекать данные из БД
- магазин вновь возвращаемые данные в Membase
Я ищу, чтобы добавить дополнительный сервер к моей группе по умолчанию, а также переориентацию ключи. (У меня также включена репликация для одного дополнительного сервера).
В этом случае мне любопытно, как я могу использовать текущий шаблон (или изменить его), чтобы убедиться, что я не получаю данные из синхронизации, когда один из моих двух серверов отключается либо в режиме автосохранения, отказоустойчивость или ручной переход на другой ресурс.
От моего понимания, если один сервер опускается (назовите его сервером A), в течение периода, когда он не работает, но все еще подключен к кластеру, будет отсутствовать ключ кеша (если активен активный ключ на сервер A, а не на сервер B). В этом случае в приведенном выше шаблоне выборки данных я не получал бы никаких данных, возвращаемых и получаемых непосредственно с SQL Server. Но когда я попытаюсь сохранить данные обратно в мой кластер Membase, сохранит данные на сервере B и переназначит этот ключ на сервер B на следующей выборке?
Я понимаю, что как только я помечаю сервер A как «не пройденный», ключ реплики сервера B станет активным, но я не понимаю, как обрабатывать прерывистую ситуацию, когда сервер A недоступен, но еще не отмечен как не удалось.
Любая помощь очень ценится!