Cassandra (6) Consistency Levels and Replication Strategies
很久很久以前我們建 KEYSPACE 的時候指定了 class 和 replication_factor。
CREATE KEYSPACE redsox WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': 1 };
其中 class 指的是 Replication Strategies。 而 replication_factor 和 Consistency Levels 有關。
1. Consistency Levels:
Cassandra 在 CAP 理論裡是屬於 AP 型的,但 Cassandra 讀寫具有可調一致性。
以寫入來說系統最少會達到要求的一致性,一旦達到要求的一致性寫入就視為成功,而其他寫入會在背景持續進行。
常用的一致性設定如下:
- ONE, TWO and THREE: 用數字設定一致性
- QUORUM:用 replication factor 設定一致性,等於 replication factor / 2 + 1
- ALL: 所有 replicas 的 responce
replication factor 代表你希望的資料副本數量,consistency level 則是讀寫成功與否的標準。
在 cqlsh 裡可以用 CONSISTENCY 查詢 consistency level:
cqlsh> CONSISTENCY ; Current consistency level is ONE.
在 scala app 中可以這樣設定 consistency level:
val queryOptions = new QueryOptions() queryOptions.setConsistencyLevel(ConsistencyLevel.QUORUM) val cluster = Cluster.builder(). withQueryOptions(queryOptions). addContactPoint("192.168.0.128"). build()
2. Replication Strategies:
複製策略依照能否跨 DC 分成 SimpleStrategy 和 NetworkTopologyStrategy 兩種。
3. SimpleStrategy:
SimpleStrategy 會將資料放在同 DC 不同節點中。
4. NetworkTopologyStrategy:
NetworkTopologyStrategy 會跨 DC 分散資料,總副本量等於每個 DC 的複製因子加總。
Reference:
[1] Cassandra: The Definitive Guide(2nd Edition), Jeff Carpenter and Eben Hewitt, O’Reilly Media(2016)
留言
張貼留言