全部產品
Search
文件中心

Elasticsearch:使用gig流控外掛程式

更新時間:Jun 30, 2024

gig流控外掛程式是Elasticsearch團隊自主研發的協調節點流控外掛程式,整合了淘寶搜尋核心的流控能力。針對分布式環境中,偶發的節點異常導致的查詢抖動問題,能夠做到秒級切流,最大程度降低業務抖動機率,保證查詢業務平穩運行。同時能夠通過流量探測的方式,解決冷節點上線導致的查詢延遲飆升問題,實現線上服務的查詢預熱功能。本文介紹gig流控外掛程式的使用方法。

背景資訊

gig流控外掛程式的原理如下:
  • 外掛程式工作在協調節點上。針對高查詢QPS的應用,業務通常使用多副本橫向擴充的方式實現吞吐線性增長。當協調節點從多個副本中挑選合適的副本提供查詢服務時,外掛程式能夠協助協調節點做出最優決策,盡量選擇服務能力最高的節點進行服務。
  • 外掛程式以查詢延遲時間作為節點服務能力的判斷標準,內部通過PID演算法即時協調服務節點,確保協調效率快速準確。當節點服務品質出現問題(一般體現為查詢延遲飆升或錯誤率上升)時,外掛程式能夠通過PID演算法即時收集分析服務節點指標,快速做出反應,屏蔽異常節點,實現故障後的秒級切流。
  • 當新節點上線加入叢集時,為避免業務流量直接輸入到服務能力未達標的節點,導致延遲飆升,外掛程式會即時採樣線上查詢流量,複製部分查詢請求流量,輸入到新節點(這部分流量稱為探測流量),並丟棄查詢結果。通過一段時間的探測及指標收集,當外掛程式判斷新節點的延遲回到正常範圍,就會將正式的線上流量輸入到新節點上,提供線上服務。

使用限制

僅滿足以下版本要求的Elasticsearch執行個體支援gig流控外掛程式:
  • 執行個體版本:6.7.0或7.10.0
  • 核心版本:1.3.0及以上,1.6.0以下
    重要 如果核心版本不滿足要求,在使用前需要升級核心版本,具體操作請參見升級版本。Elasticsearch 6.7.0支援升級的版本包括:通用商業版0.3.0、1.0.2和1.2.0,不支援1.0.1。

注意事項

  • Elasticsearch 6.7.0的核心版本升級至1.3.0時,會自動安裝,無需再次手動安裝。安裝後,外掛程式的流控功能預設關閉,使用前需要手動開啟。
  • Elasticsearch執行個體版本為7.10.0時,gig流控外掛程式預設整合在aliyun-qos叢集限流外掛程式中,不需要單獨安裝。
  • 使用gig流控外掛程式前,需要確保所有資料節點預留充足的資源。因為當其中一個資料節點出現服務品質問題時,流量將切換至其他節點上,導致相應節點壓力增加,因此需要保留充足的資源保證業務平穩運行。
  • 本文中的命令,均可在Kibana控制台上執行。登入Kibana控制台的具體操作步驟,請參見登入Kibana控制台

使用流程

  1. 開啟索引查詢流控功能。
    PUT test/_settings
    {
     "index.flow_control.enabled": true
    }
    說明 如需關閉,將index.flow_control.enabled設定為nullfalse即可。
  2. 設定gig查詢延時閾值。當滿足任一閾值條件時,就會觸發流控。
    PUT test/_settings
    {
        "index.flow_control.search": {
                "latency_upper_limit_extra": "10s", 
                "latency_upper_limit_extra_percent": "1.0", 
                "probe_percent": "0.2",
                "full_degrade_error_percent": "0.5", 
                "full_degrade_latency": "10s" 
        }
    }
    參數預設值說明
    latency_upper_limit_extra10s實際查詢延時與平均延時差的絕對值閾值,即:|實際查詢延時-平均查詢延時|。預設為10s,表示:假設叢集中三個資料節點的平均查詢延時是2s,當其中一個資料節點的查詢延時達到13s,就會觸發流控。
    latency_upper_limit_extra_percent1.0實際查詢延時與平均延時差絕對值,佔平均查詢延時的比例閾值,即:(|實際查詢延時-平均查詢延時|)/平均查詢延時。預設為1.0,表示:假設叢集中三個資料節點的平均查詢延時是2s,當其中一個資料節點的查詢延時達到4s,就會觸發流控。
    probe_percent0.2探測流量占真實流量的比例閾值。預設為0.2,表示當比例大於0.2時,觸發流控。
    full_degrade_error_percent0.5查詢異常比例閾值。預設為0.5,表示當叢集中某一資料節點查詢響應存在50%的錯誤率時,觸發流控。
    full_degrade_latency10s查詢延遲閾值。預設為10s,表示當查詢延時大於10s時,觸發流控。
    重要 在實際使用情境中,請根據需求調整參數值。