寫入高可用是阿里云Elasticsearch團隊為提升集群寫入穩定性而引入的新特性。即通過異步寫入高可用架構實現讀寫分離,以保證在高并發寫入情況下集群的穩定性。同時寫入高可用特性還加入了服務代理和消息隊列等組件。本文介紹寫入高可用特性的原理和使用方法。

背景信息

寫入高可用特性具有如下功能:
  • 數據高可用:當集群宕機時,數據也能正常寫入消息隊列中,待集群恢復后回追數據來保證數據不丟失。
  • 數據緩沖:當數據流量峰值到來時,數據會寫入消息隊列中緩沖,避免大流量將集群壓垮;數據緩沖后將進行批量發送,避免小批次數據頻繁寫入集群,從而提升了CPU使用率和寫入性能。
  • 數據回放:當集群丟失部分數據時,可通過數據回放恢復丟失的數據。
  • 流量控制:限制數據流量,避免在異常情況下,過大的流量導致集群服務不可用。

前提條件

創建阿里云Elasticsearch實例,具體操作請參見創建阿里云Elasticsearch實例。創建的實例需同時滿足以下條件:
  • 版本為6.7.0
  • 數據節點規格不低于2核4 GB

使用限制

寫入高可用特性僅支持2021年11月之前在華北2(北京)、華東2(上海)、華東1(杭州)和華南1(深圳)地域創建的實例,不符合要求的實例建議使用Indexing Service特性,詳細信息請參見基于Indexing Service實現數據流管理

異步寫入和同步寫入模式

  • 異步寫入模式
    開啟寫入高可用的集群,采用異步寫入模式。客戶端請求經過代理層分發,將查詢請求直接轉發給Elasticsearch,獲取查詢結果返回;寫入請求將經過異步數據處理組件(包含消息隊列),再將數據實時寫入Elasticsearch,來提高Elasticsearch的寫入性能及穩定性。寫入高可用異步模式
  • 同步寫入模式
    未開啟寫入高可用的集群,默認采用同步寫入模式。即查詢和寫入請求均直接由代理服務轉發給Elasticsearch。當異步寫入模式發生錯誤時,阿里云Elasticsearch支持臨時將異步模式轉換為同步模式,轉換后,寫入請求將直接由代理服務轉發給Elasticsearch,而不會存儲到消息隊列中,以確保數據寫入快速恢復。寫入高可用同步模式

開啟寫入高可用

  1. 登錄阿里云Elasticsearch控制臺
  2. 在左側導航欄,單擊Elasticsearch實例
  3. 進入目標實例。
    1. 在頂部菜單欄處,選擇資源組和地域。
    2. 在左側導航欄,單擊Elasticsearch實例,然后在Elasticsearch實例中單擊目標實例ID。
  4. 基本信息頁面的寫入高可用區域,單擊立即開啟
  5. 寫入高可用頁面,單擊開啟,以開啟寫入高可用。
    開啟寫入高可用

    無主鍵時,自動生成文檔哈希值主鍵:當您對數據的順序有較高要求時,可以勾選該選項。它將根據文檔內容,為無主鍵數據自動生成哈希值主鍵,內容完全相同的文檔在寫入Elasticsearch時將被覆蓋,從而避免數據被重復寫入。

    說明 開啟或關閉寫入高可用特性,均為集群架構的平滑變更,一般不會影響阿里云Elasticsearch集群的正常訪問,但是建議在業務低峰期進行。
  6. 單擊確認

查看異步寫入日志

開啟寫入高可用后,您可以在寫入高可用區域,單擊查看異步寫入日志,查看寫入高可用特性在異步模式下生成的日志。

查看異步寫入日志

臨時開啟同步寫入

當異步模式發生錯誤時,您可以在寫入高可用區域,打開臨時開啟同步寫入開關,將異步模式臨時轉換為同步模式,快速恢復數據寫入。臨時開啟同步寫入

當異步模式恢復正常后,您可以關閉臨時開啟同步寫入開關,快速恢復異步寫入模式。

關閉寫入高可用

注意 建議在業務低峰期關閉寫入高可用。因為當集群中存在數據頻繁更新的場景時,可能會發生數據亂序問題(概率較小)。
  1. 寫入高可用區域,單擊寫入高可用右側的設置
  2. 寫入高可用頁面,單擊關閉,以關閉寫入高可用。
    關閉寫入高可用
  3. 單擊確認