Я запутался между DCAwareRoundRobinPolicy и RoundRobinPolicy
Согласно документации, DCAwareRoundRobinPolicy сначала связывается с узлами с локального DC, а затем с удаленного DC.
Если я не установил withUsedHostsPerRemoteDc & allowRemoteDCsForLocalConsistencyLevel.
Будут ли все клиентские приложения java все еще отправляться на удаленный DC в случае отказа ??
Я сейчас использую код ниже:
DCAwareRoundRobinPolicy.builder().withLocalDc(cassandraConfig.getLocalDC())
.withUsedHostsPerRemoteDc(cassandraConfig.getUsedHostsPerRemoteDc())
.allowRemoteDCsForLocalConsistencyLevel();
У меня проблема при добавлении новых контроллеров домена в моем текущем производственном кластере. Из-за приведенного выше кода я вижу, что чтение / запись запускается также на удаленном DC, который я просто добавляю. Хотя для новых контроллеров домена для них не установлен фактор репликации. Тем не менее я мог видеть этот трафик. Поскольку восстановление новых узлов займет несколько часов, я не мог позволить всем приложениям добраться до новых узлов.
Наконец, мне нужно списать новые узлы, чтобы временно остановить это поведение.
После удаления withUsedHostsPerRemoteDc & allowRemoteDCsForLocalConsistencyLevel все выглядит хорошо.
Также в документации Datastax написано https://docs.datastax.com/en/latest-java-driver-api/com/datastax/driver/core/policies/DCAwareRoundRobinPolicy.Builder.html#allowRemoteDCsForLocalConsistencyLevel--
Однако это нецелесообразно делать почти во всех случаях, так как это
потенциально нарушает гарантии согласованности
Если выше верно, тогда какая польза от DCAwareRoundRobinPolicy, почему RoundRobinPolicy не был хорош ???