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

關於 Cassandra 複製係數

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

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

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

請使用以下程序查看 Cassandra 結構定義,瞭解每個 Edge 鍵空間的複製係數:

  1. 登入 Cassandra 節點。
  2. 執行下列指令:
    /opt/apigee/apigee-cassandra/bin/cqlsh $(hostname -i) [-u cassuser -p casspass] -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 值做為一致性等級,讀取/寫入作業數必須為 在所有資料中心都經過驗證

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

  1. 登入訊息處理器節點。
  2. 切換至 /opt/apigee/edge-message-processor/conf 目錄:
    cd /opt/apigee/edge-message-processor/conf
  3. 讀寫一致性:
    grep -ri "consistency.level" *
  4. 登入 Management Server 節點。
  5. 切換至 /opt/apigee/edge-management-server/conf 目錄:
    cd /opt/apigee/edge-management-server/conf
  6. 重複執行步驟 3。

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