синхронная и асинхронная запись/удаление в Cassandra

В чем разница между синхронной и асинхронной записью/удалением в Cassandra?

Если я использую метод executeAsynchronously() вместо execute() класса CqlOperation (драйвер datastax), улучшит ли это производительность с точки зрения пропускной способности (TPS)? В моем приложении я делаю одиночную вставку/удаление, а также пакетную вставку. До сих пор я использовал только метод execute (синхронный) и думаю использовать асинхронное выполнение для повышения производительности приложения с точки зрения TPS.


person Laxmikant    schedule 03.11.2015    source источник
comment
Прежде чем читать партии, ознакомьтесь с ними. Пакеты не улучшают производительность   -  person jny    schedule 03.11.2015


Ответы (3)


Асинхронная запись обеспечивает более высокую производительность в расчете на одного рабочего, но увеличивает нагрузку на обратные вызовы и обработку ошибок.

Недавно я провел тест, чтобы найти преимущества в производительности, а также реализацию обратного вызова с обработкой ошибок с использованием одного рабочего с 1 миллионом записанных записей. Асинхронность была обнаружена в 4 раза быстрее, чем синхронные. in_flight queries были ограничены 1000, это число может быть настроено в соответствии с условиями среды (количество подключений, которые вы хотите установить по сети, скажем, с сетевой задержкой 200 мс и временем отклика сервера 1 мс, можно выполнить 200 запросов, которые будут отправлены в_полет, в то время как Синхронный вызов освободил бы сервер на 199 мс из 200 мс, в этом случае сервер будет обрабатывать хотя бы один запрос почти все время), но без ограничений он будет перегружать сеть с возможным снижением производительности.

В некоторых случаях синхронный запрос может быть более подходящим, особенно если результат запроса имеет решающее значение перед продолжением программы. Но в большинстве случаев достаточно Async.

Короче говоря, ответ на ваш вопрос: Да. Я протестировал увеличение TPS в 4 раза.

Справочник – оценка производительности с использованием асинхронной записи

person Bhuvan Rawal    schedule 22.05.2016

синхронизация записи (или удаления) в cassandra блокирует выполнение кода до тех пор, пока клиент не получит подтверждение о завершении операции на основе уровня согласованности.

С другой стороны, асинхронная запись (или удаление) отправит запрос в cassandra, а затем продолжит выполнение кода (не будет блокироваться). Теперь вам нужно зарегистрировать какой-то обратный вызов, который сообщит вам (асинхронно) о завершении операции записи.

Все блокировки складываются и могут замедлить работу вашего приложения. Поскольку асинхронные запросы выполняются немедленно, они позволяют отправлять больше асинхронных запросов сразу после, вместо того, чтобы ждать завершения первого. Именно здесь происходит увеличение производительности, особенно если вы отправляете много запросов в cassandra.

person Aki    schedule 04.11.2015

Это определенно повысит производительность. Я не пробовал, но ссылка ниже говорит то же самое вопрос

http://www.datastax.com/dev/blog/java-driver-async-queries

person undefined_variable    schedule 03.11.2015