卡桑德拉跨多个读取请求

问题描述:

读取是否卡桑德拉使用并发线程读取列族的sstables以服务为行密钥或个人的工作线程不会的工作跨越多个sstables查找读取请求?卡桑德拉跨多个读取请求

会是什么一个比其他[使用并发线程和单线程]的开销?

卡桑德拉实现阶段式服务器模型(SEDA)见SEDA

在典型应用中,工作的单个单元的单个线程的范围内常常进行。例如,写入操作将在同一个线程中开始和结束。然而,Cassandra是不同的:它的并发模型是基于SEDA的,所以一个单独的操作可能从一个线程开始,然后把工作交给另一个线程,这个线程可能会把它交给其他线程。但是现在的线程无法将工作交给另一个线程。相反,工作细分为所谓的阶段,并associ- at​​ed与舞台上的线程池(实际上是一个java.util.concurrent.ExecutorService中)决定的执行。一个阶段是一个基本的工作单位,一个单一的行动可能会从一个阶段转到另一个阶段。因为每个阶段都可以由不同的线程池处理,所以Cassandra可以获得巨大的性能提升。 Read在cassandra中表示为一个阶段,所以肯定有多个线程涉及到Read阶段,因此您必须深入了解源代码,以了解读取阶段是使用多个线程读取还是不使用。