關於 Cassandra 複製係數
Cassandra 會將資料備用資源儲存在多個節點中,以確保可靠性和容錯能力。 每個 Edge Keyspace 的複製策略會決定備用資源所在的節點 位置。
Cassandra 叢集中鍵空間的備用資源總數稱為 索引鍵空間的「複製係數」。如果其中一個複製係數, Cassandra 叢集中每個資料列的複本。兩個複製因子代表 副本,而每個副本都位於不同節點上。所有備用資源都一樣重要; 沒有主要備用資源或主要備用資源。
在生產系統中,每個資料中心有三個以上的 Cassandra 節點,預設的 邊緣金鑰空間的複製係數為三個一般來說,複製係數是 不得超過叢集中的 Cassandra 節點數量。
請使用以下程序查看 Cassandra 結構定義,瞭解每個 Edge 鍵空間的複製係數:
- 登入 Cassandra 節點。
- 執行下列指令:
/opt/apigee/apigee-cassandra/bin/cqlsh $(hostname -i) [-u
cassuser
-pcasspass
] -e "select keyspace_name, replication from system_schema.keyspaces;"其中
$(hostname -i)
解析為 Cassandra 節點的 IP 位址。或者,您也可以將$(hostname -i)
替換為節點的 IP 位址。cassuser
:如果您已啟用 Cassandra 驗證,請傳遞 Cassandra 使用者名稱。如未啟用 Cassandra 驗證,則可略過這個步驟。casspass
:如果您已啟用 Cassandra 驗證,請傳送 Cassandra 密碼。如未啟用 Cassandra 驗證,則可略過這個步驟。
輸出內容如下所示,其中每個資料列都代表一個索引鍵空間:
keyspace_name | replication kms | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_distributed | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'} apprepo | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'}
可以看到資料中心 1 (dc-1) 的預設複製係數是具有三個 Cassandra 節點的安裝時,公里鍵空間的預設複製係數為三個。以 Cassandra 內部的特定索引鍵空間 (例如 system、system_schema 等) 來說,複製策略和複製係數可能會有所不同。這是刻意的系統行為。
如果您將額外的 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 "consistency.level" *
- 登入 Management Server 節點。
- 切換至
/opt/apigee/edge-management-server/conf
目錄:cd /opt/apigee/edge-management-server/conf
- 重複執行步驟 3。
如果在叢集中加入額外的 Cassandra 節點,一致性等級不會受到影響。