寫入高可用是阿里云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,而不會存儲到消息隊列中,以確保數據寫入快速恢復。
開啟寫入高可用
查看異步寫入日志
開啟寫入高可用后,您可以在寫入高可用區域,單擊查看異步寫入日志,查看寫入高可用特性在異步模式下生成的日志。
臨時開啟同步寫入
當異步模式發生錯誤時,您可以在寫入高可用區域,打開臨時開啟同步寫入開關,將異步模式臨時轉換為同步模式,快速恢復數據寫入。
當異步模式恢復正常后,您可以關閉臨時開啟同步寫入開關,快速恢復異步寫入模式。
關閉寫入高可用
注意 建議在業務低峰期關閉寫入高可用。因為當集群中存在數據頻繁更新的場景時,可能會發生數據亂序問題(概率較小)。