Вы можете читать или писать с любого узла кластера, все они способны маршрутизировать запросы к правильным узлам (узел, выполняющий маршрутизацию, обычно называют «координатором» для операции). Вы должны попытаться сбалансировать свои запросы по всем узлам локального центра обработки данных, используя только узлы в удаленных центрах обработки данных, если все локальные узлы опущены. Большинство клиентов Cassandra будут распространять запросы в циклическом режиме по всем узлам, на которые вы указываете их, и, как отмечает Canausa, некоторые автообнаружают другие узлы, а иногда используют более сложные алгоритмы для выбора того, на какой узел отправить запрос.
Запись в любой центр обработки данных автоматически реплицируется во все другие датацентры, поэтому вы можете писать на любой узел и читать с любого узла. Как правило, вы хотите использовать уровень согласованности LOCAL_QUORUM для чтения и записи, что требует, чтобы кворум реплик в локальном центре обработки данных отвечал за то, что операция считается успешной. Вы также можете рассмотреть запись в EACH_QUORUM, которая ждет ответа от кворума реплик в каждом центре обработки данных. Очевидно, что в этом случае латентность будет намного выше, но вы можете добиться значительной согласованности во всех датацентрах.
Однако, только с двумя узлами в каждом центре обработки данных, кворум реплик эквивалентен всем репликам, поэтому, если какой-либо узел опускается, вы потеряете доступность для этой части данных. По этой причине, если вы хотите использовать уровни согласованности кворума, рекомендуется, чтобы коэффициент репликации составлял не менее 3 в каждом центре данных, позволяя потерять одну реплика при сохранении сильной (или локальной сильной) последовательности.