Назад | Перейти на главную страницу

Apache Cassandra с разделенным мозгом

Прежде всего, извиняюсь, если об этом спрашивали раньше, я не могу найти ответ в Google или StackExchange.

Можно ли поместить Apache Cassandra в сценарий с разделенным мозгом, в котором служба данных с разделением на сеть продолжает выполнять хранение и доступ к данным без доступа ко всему кластеру?

Если нет, то какие методы используются (ссылки на документацию в порядке), чтобы избежать раздвоения мозга?

Если да, (кажется, об этом пишут твиты), каковы варианты восстановления в этом случае?

Итак, это действительно зависит от нескольких вещей.

Во-первых, Cassandra спроектирована так, чтобы быть терпимой к разделам, что означает, что она предназначена для продолжения работы в ситуациях, которые вы описываете. Например, у вас могут быть определены два центра обработки данных, и сетевое соединение между ними разрывается. Успешный возврат ваших запросов зависит от уровня согласованности, который вы запрашиваете в своем кластере. Если вы выберете LOCAL_QUORUM, вы получите результат, даже если 2 центра обработки данных не смогут связаться. Это предполагаемая функция базы данных.

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