2012-10-10 58 views
7

增加羣集上的複製因子是否也會提高讀取速度?Cassandra:更大的複製因子=讀取速度更快?

據我所知,當複製因子爲1,並且有6個節點並且令牌分佈相同 - 那麼只有16,66%的機會給定節點有數據,如果它沒有它,它會要求節點負責,這需要額外的時間。

我想複製因子設置爲6,每個節點都有完整的數據集,並且可以立即獲取數據而不需要詢問其他節點(我們使用讀一致性= 1)。所以增加複製因子應該會提高閱讀速度。它是否正確?

我們的應用程序的寫入相對較少,但每秒可以執行超過10k次get()操作。我們在集羣中有6個節點,我們需要所有的讀取操作都非常快,這就是爲什麼我們正在尋找一種方法來提高cassandra的讀取性能。

回答

4

這是正確的,只要您使用ConsistencyLevel.ONE即可。

+0

您能否提供一些參考資料。這似乎與我的直覺相抵觸。據我所知,無論使用什麼一致性級別,讀取都會發送到* all *副本。 – user1202136

+0

@ user1202136我意識到這是一篇舊文章,但僅僅是爲了避免任何讀者的困惑......編寫和讀取一致性在Cassandra中是可調的。以下是關於讀取一致性的一節。http://www.datastax.com/documentation/cassandra/2.0/cassandra/dml/dmlClientRequestsRead.html –

4

我實際上運行ycsb基準 - 100%寫入和100%讀取 - 來測試這個。 增加複製因子似乎導致讀取速度較慢,而一致性級別保持爲一。

在8節點羣集這裏是我收到的數字:

16000000個讀操作-YCSB工作量Ç

rep.factor _ readtime(分鐘)

1 _ 10.8840833333333

2 _ 11.1243666666667

4 _ 17.4050333333333

對於更大的尺寸,跳躍更大。

任何人都可以解釋爲什麼嗎?

+0

如果我正確理解Cassandra,則讀取和寫入將轉到* all *副本,無論如何一致性水平是。因此,增加複製因子應增加節點上的負載。實際上,我感到驚訝的是,複製因數加倍並不會使讀取時間增加一倍。 – user1202136

+0

@ user1202136只有當相應的一致性設置爲複製數量即複製因子時,讀取和寫入纔會轉到所有副本。默認情況下,它只能從單個副本讀取。 –

+0

@adarshhegde你是對的。我重新閱讀文檔,其他副本僅作爲讀取修復的一部分以較低的概率聯繫,默認情況下爲0.1。因此,平均而言,更多副本是讀取的一部分而不是一致性級別,但平均而言,並非所有副本都被聯繫。 http://docs.datastax.com/en/cassandra/1.2/cassandra/architecture/architectureClientRequestsRead_c.html – user1202136