Кассандра репликации странности производительности чтения
Извините, это займет немного времени, чтобы объяснить... Мы тестируем производительность Cassandra с использованием YCSB. У нас есть установка с 3 узлами и установка с 9 узлами. Настройка с 3 узлами довольно проста: репликация =1 (без копий).
Наша установка с 9 узлами содержит 3 центра обработки данных (3 узла на центр обработки данных). В настройке с 9 узлами мы также сохранили replication=1, потому что мы понимаем, что стандартная Cassandra NetworkTopologyStrategy собирается автоматически реплицироваться через центры обработки данных. Это эффективно дает нам копию данных в каждом центре обработки данных, и это здорово, потому что мы хотим это проверить.
В нашем тесте, доступном только для чтения, для установки с 9 узлами DCAwareRoundRobinPolicy используется для запросов только к "локальному" центру обработки данных. Таким образом, мы запрашиваем только 3 из 9 узлов и ожидали результатов, аналогичных нашей простой настройке с 3 узлами. На самом деле мы ожидаем, что результаты будут немного хуже из-за сообщений о восстановлении чтения cassandra, а также потому, что мы используем согласованность чтения QUORUM.
Однако мы обнаружили обратное. Наш тест "только для чтения" на производительность простой установки с 3 узлами был немного хуже, чем у более сложной установки с 3 центрами обработки данных /9 узлов.
Данные, загруженные в оба кластера, одинаковы. Тесты только для чтения выполнялись с различным числом потоков, и мы заметили большее расхождение с большим количеством потоков. Настройка с 9 узлами стала лучше с большим количеством потоков, чего не должно было быть, потому что мы убедились, что только 3 узла, к которым мы подключены в нашем "локальном" центре обработки данных, получают запросы.
Итак, почему чтение быстрее в более сложной настройке, когда мы все еще достигаем того же количества узлов (3)? Наш тест только для записи не показал такого поведения.
Заранее спасибо!