Как клиент Cassandra выбирает координатора node? координатор node хранит данные, отправленные клиентом до репликации?
Как Кассандра выбирает координатор node и узлы репликации?
Ответ 1
Координирующий узел обычно выбирается алгоритмом, который учитывает "расстояние сети". Любой узел может выступать в качестве координатора, и сначала запросы будут отправляться на узлы, о которых знает ваш драйвер. Но как только он подключается и понимает топологию вашего кластера, он может измениться на "более близкого" координатора.
Координатор хранит данные только локально (при записи), если он оказывается одним из узлов, отвечающих за диапазон токенов данных.
Ответ 2
Координатор выбирается драйвером на основе политики, которую вы установили. Общие политики - политика DCAwareRoundRobinPolicy и TokenAware.
Для DCAwareRoundRobinPolicy драйвер выбирает координатор node в соответствии с его циклической политикой. Подробнее здесь: http://docs.datastax.com/en/drivers/java/2.1/com/datastax/driver/core/policies/DCAwareRoundRobinPolicy.html
Для TokenAwarePolicy он выбирает координатор node, который запрашивает данные - для уменьшения "переходов" и латентности. Дополнительная информация: http://docs.datastax.com/en/drivers/java/2.1/com/datastax/driver/core/policies/TokenAwarePolicy.html
Лучше всего применять политику переноса, поэтому в случае первичной и вторичной политики возникает проблема. Дополнительная информация доступна по ссылкам выше.