Я сейчас думаю о том, как лучше всего обращаться с клиентами по всему миру с Кассандрой. Я предполагаю, что у меня есть серверы в Америке и Европе. Есть ли механизм влияния на какие серверы хранятся данные? Для пользователя в США данные должны размещаться на американском сервере и только в одной безопасной копии в Европе. В общем, я думал о UUID, который можно определить как определенное место. Например, если последний бит установлен, он должен быть на сервере в США, а в противном случае - в Европе. Затем я думал о написании пользовательского Partitioner, который присваивает значение значению в пределах диапазона американских серверов. Например, если он начинается с 00-7f, Европа и 80-ff находятся в Америке. Поэтому я мог бы использовать обычный Murmur3, который устанавливает первый бит на основе информации о местоположении в UUID. Могу ли я влиять на диапазон разделов определенного сервера? Я думаю, что особенно с виртуальными узлами это может осложниться. Есть ли способ сделать выбор разделов на основе местоположения на сервере, как вам нужно? Как бы вы попытались решить эту проблему?Как хранить данные на серверах, близких к местоположению пользователей в Кассандре?
0
A
ответ
1
Прямо сейчас вам нужно иметь разные пространства ключей для каждого региона. Как только это будет сделано, вы можете установить стратегию репликации на NetworkTopologyStrategy
, а затем использовать NTS, чтобы установить коэффициент репликации в соответствии с ожиданием местоположения данных.
Существует открытый вопрос (CASSANDRA-7306), в котором предлагается добавить возможность контролировать местность в том виде, как вы описываете. В настоящее время нет никаких указаний на то, что он близок к работе или что он будет реализован в ближайшем будущем, поэтому фактический способ реализовать это - NetworkTopologyStrategy
и соответствующим образом настроить коэффициент репликации.