如何在Cassandra Cluster中为大量使用它的客户组织公平缓存?

时间:2013-11-26 14:15:12

标签: caching cassandra

是否有关于如何使用Cassandra为大量客户提供服务的建议?

想象一下,所有人都在Cassandra中读取行(特定于每个客户)。如果我们有一个大的列族(CF),我们将根据这个CF相应地具有单个记忆。因此,更频繁地读取数据的客户将取代频率较低的客户的缓存条目。并且不同用户的服务质量(即读取速度)将不同。这不公平(所有客户必须经历相同的表现)。

为每个客户分配单独的CF(例如5000 CF或更多)是否正常?据我所知,这将导致创建5000个memtables,这将导致公平缓存,因为每个客户将在单独的缓存(memtable)中提供服务。我是对的吗?

而另一方面,大量CF的创建是否会降低性能而不是单个大CF?

1 个答案:

答案 0 :(得分:0)

Memtables不是缓存,它们是为了确保Cassandra中的写入顺序在磁盘上。它们在执行查询时被读取,但在它们太大时会被刷新,而不是使用适合缓存的驱逐策略。

为每个客户设置单独的列系列将是非常低效的 - 1000s的CF太多了。更好的方法是确保您的客户CF保留在缓存中。如果你有足够的内存,那么它(假设你的Cassandra集群上没有其他CF)。或者您可以使用行缓存并将大小设置为足以容纳客户CF中的所有数据。