關於 Cassandra 複製係數和一致性等級

Private Cloud v4.18.05 專用 Edge

關於 Cassandra 複製係數

Cassandra 會將資料備用資源儲存在多個節點中,以確保可靠性和容錯能力。 每個 Edge Keyspace 的複製策略會決定備用資源所在的節點 位置。

Cassandra 叢集中鍵空間的備用資源總數稱為 索引鍵空間的「複製係數」。如果其中一個複製係數, Cassandra 叢集中每個資料列的複本。兩個複製因子代表 副本,而每個副本都位於不同節點上。所有備用資源都一樣重要; 沒有主要備用資源或主要備用資源。

在生產系統中,每個資料中心有三個以上的 Cassandra 節點,預設的 邊緣金鑰空間的複製係數為三個一般來說,複製係數是 不得超過叢集中的 Cassandra 節點數量。

請使用以下程序查看 Cassandra 結構定義,其中會顯示複製係數。 :

  1. 登入 Cassandra 節點。
  2. 執行下列指令:
    /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 節點數量增加為六個,但保留複製工作 原因是第 3 個因素是 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 值做為一致性等級,讀取/寫入作業數必須為 在所有資料中心都經過驗證

如何查看邊緣訊息處理器或管理伺服器節點使用的一致性等級:

  1. 登入訊息處理器節點。
  2. 變更為 /opt/apigee/edge-message-processor/conf 目錄:
    cd /opt/apigee/edge-message-processor/conf
  3. 為寫入一致性:
    grep -ri "write.consistencylevel" *
  4. 讓讀取一致性:
    grep -ri "read.consistencylevel" *
  5. 登入 Management Server 節點。
  6. 變更為 /opt/apigee/edge-management-server/conf 目錄:
    cd /opt/apigee/edge-management-server/conf
  7. 重複第 3 與第 4 個步驟。

如果在叢集中加入額外的 Cassandra 節點,一致性等級不會受到影響。