關於 Cassandra 複製係數
Cassandra 會將資料備用資源儲存在多個節點中,以確保可靠性和容錯能力。 每個 Edge Keyspace 的複製策略會決定備用資源所在的節點 位置。
Cassandra 叢集中鍵空間的備用資源總數稱為 索引鍵空間的「複製係數」。如果其中一個複製係數, Cassandra 叢集中每個資料列的複本。兩個複製因子代表 副本,而每個副本都位於不同節點上。所有備用資源都一樣重要; 沒有主要備用資源或主要備用資源。
在生產系統中,每個資料中心有三個以上的 Cassandra 節點,預設的 邊緣金鑰空間的複製係數為三個一般來說,複製係數是 不得超過叢集中的 Cassandra 節點數量。
請使用以下程序查看 Cassandra 結構定義,其中會顯示複製係數。 :
- 登入 Cassandra 節點。
- 執行下列指令:
/opt/apigee/apigee-cassandra/bin/cassandra-cli -h $(hostname -i) <<< "show schema;"
其中
$(hostname -i)
解析為 Cassandra 節點的 IP 位址。或是您 可以將$(hostname -i)
替換為節點的 IP 位址。
針對每個索引鍵空間,您會看見下列格式的輸出內容:
create keyspace kms with placement_strategy = 'NetworkTopologyStrategy' and strategy_options = {dc-1 : 3} and durable_writes = true;
可以看到資料中心 1 的預設複製係數是 dc-1
kms
索引鍵空間是三個
安裝三個 Cassandra 節點
如果您將額外的 Cassandra 節點新增至叢集,預設的複製因子不會 可能會受到影響
舉例來說,如果您將 Cassandra 節點數量增加為六個,但保留複製工作 是三項因素,您無法確保所有 Cassandra 節點都有所有資料的副本。如果 複製因數越多,節點資料的機率越高 才會存在於其餘的節點上複製係數較高的缺點增加 延遲時間計算的是資料寫入作業延遲時間
關於 Cassandra 一致性等級
Cassandra 一致性等級定義為必須達到的 Cassandra 節點數量下限 進行讀取或寫入作業後,系統才會將作業視為成功。 可將不同一致性等級指派給不同的 Edge 鍵空間。
連線至 Cassandra 以執行讀取和寫入作業時,訊息處理器與管理機制
伺服器節點通常會使用 Cassandra 值為 LOCAL_QUORUM
實現
指定鍵空間的一致性等級。不過,部分索引鍵空間定義為使用
一致性等級設為 1
資料中心的 LOCAL_QUORUM
值計算方式如下:
LOCAL_QUORUM = (replication_factor/2) + 1
如上所述,在
三個 Cassandra 節點因此,LOCAL_QUORUM
的預設值 =
(3/2) +1 = 2 (該值會無條件捨去為整數)。
當 LOCAL_QUORUM
= 2 時,資料中至少有兩個 Cassandra 節點 (共兩個 Cassandra 節點)
中心必須回應讀取/寫入作業,作業才能成功。若為三個節點
若是 Cassandra 叢集,叢集可容許一個節點停止運作。
透過將一致性等級指定為 LOCAL_QUORUM
,Edge 可避免延遲
要求驗證多個資料中心之間的作業如果索引鍵空間使用 Cassandra
QUORUM
值做為一致性等級,讀取/寫入作業數必須為
在所有資料中心都經過驗證
如何查看邊緣訊息處理器或管理伺服器節點使用的一致性等級:
- 登入訊息處理器節點。
- 變更為 /opt/apigee/edge-message-processor/conf 目錄:
cd /opt/apigee/edge-message-processor/conf
- 為寫入一致性:
grep -ri "write.consistencylevel" *
- 讓讀取一致性:
grep -ri "read.consistencylevel" *
- 登入 Management Server 節點。
- 變更為 /opt/apigee/edge-management-server/conf 目錄:
cd /opt/apigee/edge-management-server/conf
- 重複第 3 與第 4 個步驟。
如果在叢集中加入額外的 Cassandra 節點,一致性等級不會受到影響。