Поведение Cas при разделении сети
Руководство Couchbase 2.0 описывает разделение сети как потенциальную проблему.
http://docs.couchbase.org/couchbase-manual-2.0/couchbase-architecture.html
Но я не видел, как (если) Couchbase 2.0 справляется с такими проблемами на стороне хранилища данных.
У меня вопрос, как CAS реализован в кластере и как операции CAS решают проблему разделения мозга? Есть ли кластерная широкая блокировка? Это последний писатель выигрывает?
2 ответа
Тот же вопрос был задан в нашем списке групп Google: http://groups.google.com/group/couchbase/browse_thread/thread/e0d543d9b17f9c77
Это внизу темы, сообщения, начинающиеся 30 августа
грушевый сидр
Membase и Couchbase Server 2.0 разделяют данные. Для каждого фрагмента данных (vbucket) всегда есть один сервер, который является источником правды.
Хорошая сторона этого в том, что это всегда строго последовательно. Нет необходимости разрабатывать для разрешения конфликтов и т. Д.
Но когда какой-то узел выходит из строя, вы просто теряете доступ к подмножеству ваших данных. Вы можете выполнить отработку отказа, и в этом случае реплики будут преобразованы в master для vbuckets, которые были потеряны, таким образом "восстанавливая" доступ к этим vbuckets. Обратите внимание, что потеря некоторых недавних мутаций неизбежна в этом случае из-за некоторой задержки репликации. А аварийное переключение - это ручное управление (хотя в последней версии реализовано очень тщательно и ограничено автоматическое переключение).