2012-04-03 5 views
1

Использует ли Cassandra параллельные потоки для чтения sstables из семейства столбцов для обслуживания запроса на чтение для строки или отдельного рабочего потока выполняет поиск по нескольким sstables?cassandra читает по нескольким запросам на чтение

Каковы будут накладные расходы одного над другим [с использованием одновременных потоков и одной нити]?

ответ

1

Кассандра реализует Поэтапное Event-Driven Architecture (СЕДА) см SEDA

В типичном применении, одна единица работы часто выполняется в пределах одной нити. Например, операция записи начинается и заканчивается в пределах одного потока. Кассандра, однако, отличается: модель параллелизма основана на SEDA, поэтому одна операция может начинаться с одного потока, который затем передает работу другому потоку, который может передать его другим потокам. Но дело не в текущем потоке, чтобы передать работу другому потоку. Вместо этого работа подразделяется на так называемые этапы, а пул потоков (действительно, java.util.concurrent.ExecutorService), связанный со сценой, определяет выполнение. Этап - это базовая единица работы, и одна операция может переходить из одного этапа в другой. Поскольку каждый этап может обрабатываться другим пулом потоков, Cassandra испытывает значительное улучшение производительности. Чтение представлено как этап в кассандре, поэтому на этапе чтения определенно много потоков, вам нужно будет глубже изучить исходный код, чтобы понять, используются ли для чтения или нет ни один поток на этапе чтения.