Прежде всего, извиняюсь, если об этом спрашивали раньше, я не могу найти ответ в Google или StackExchange.
Можно ли поместить Apache Cassandra в сценарий с разделенным мозгом, в котором служба данных с разделением на сеть продолжает выполнять хранение и доступ к данным без доступа ко всему кластеру?
Если нет, то какие методы используются (ссылки на документацию в порядке), чтобы избежать раздвоения мозга?
Если да, (кажется, об этом пишут твиты), каковы варианты восстановления в этом случае?
Итак, это действительно зависит от нескольких вещей.
Во-первых, Cassandra спроектирована так, чтобы быть терпимой к разделам, что означает, что она предназначена для продолжения работы в ситуациях, которые вы описываете. Например, у вас могут быть определены два центра обработки данных, и сетевое соединение между ними разрывается. Успешный возврат ваших запросов зависит от уровня согласованности, который вы запрашиваете в своем кластере. Если вы выберете LOCAL_QUORUM, вы получите результат, даже если 2 центра обработки данных не смогут связаться. Это предполагаемая функция базы данных.
Каждый узел в кластере поддерживает полную топологию кластера, поэтому, когда сетевое соединение будет разрешено, сработает подсказанная передача обслуживания, и центры обработки данных решат свои проблемы. Может потребоваться запустить восстановление nodetool, чтобы обеспечить согласованность всех данных на этом этапе. (это не повредит)