Log Service提供基於消費處理器的資料即時消費功能,通過SPL實現服務端資料處理後消費。本文介紹消費處理器的概念、優勢、情境、計費規則及消費目標。
工作原理
基於消費處理器消費是一種通過設定SPL即時處理Log Service資料的方式,適用於第三方軟體、多語言應用、雲產品、流式計算架構等多種應用情境。SPL是SLS推出的一種高效能資料處理語言,專門用於處理日誌的弱結構化特點。其原理是在服務端使用SPL對日誌資料進行預先處理和清洗,例如執行行過濾、列裁剪、正則提取等操作。經過處理後,用戶端接收到的資料已是規整格式。更多關於SPL文法的詳情,請參見SPL文法。
功能優勢
通過公網消費,節省流量費用。
某客戶想把日誌寫入到Log Service後,再通過公網消費日誌,過濾後再分發給內部系統。基於SPL消費功能,該客戶可以直接在Log Service中實現日誌規則過濾,避免將大量無效日誌投遞給消費者,節省網路流量費用。
節省本地CPU資源,加速計算進程。
某客戶想把日誌寫入到Log Service後,再消費日誌到本地機器進行計算。基於SPL消費功能,該客戶可以直接在Log Service中實現SPL計算,降低本地資源消耗。
計費規則
若Logstore的計費模式為按寫入資料量計費,基於消費處理器消費將不產生費用,僅從Log Service公網網域名稱所在介面拉取資料時,會產生外網讀取流量(按照壓縮後的資料量計算)。具體內容,可參見按寫入資料量計費模式計費項目。
若Logstore的計費模式為按使用功能計費,基於消費處理器消費服務會產生服務端計算費用,使用Log Service公網網域名稱可能產生公網流量費用。更多資訊,請參見按使用功能計費模式計費項目。
消費目標
Log Service支援的基於消費處理器消費目標如下表所示。
類型 | 目標 | 說明 |
多語言應用 | 多語言應用 | 基於Java、Python、Go等語言的應用基於消費處理器消費組消費Log Service的資料。具體操作,請參見通過API消費和通過消費組消費日誌。 |
雲產品 | 阿里雲Flink | 您可以通過阿里雲FlinkRealtime Compute消費Log Service的資料。具體操作,請參見Log ServiceSLS。 最佳實務: |
流式計算 | Kafka | 如有需求請提工單申請。 |
注意事項
基於消費處理器消費需要在服務端進行複雜計算。由於SPL計算複雜度及資料特徵的差異,資料讀取的服務端延遲可能會略有增加(例如處理5MB資料,延遲增加10~100ms之間)。然而,一般情況下,儘管服務端延遲有所增加,但整體端到端延遲(即從資料拉取到本地計算完成的總時間)通常會減少。
基於消費處理器消費在SPL語法錯誤、來源資料欄位缺失等情況下,可能會導致擷取到的資料缺失或失敗,具體說明可以參考錯誤處理。
基於消費處理器消費在配置SPL語句時,SPL語句長度(字串長度)最大為4KB。
基於消費處理器消費與普通即時消費Shard讀取限制相同:其中基於消費處理器消費的Shard讀流量是指SPL處理前的未經處理資料量,具體限制可以參考資料讀寫。
使用限制
限制項 | 說明 |
消費處理器個數 | 每個 Project 下組多建立 100 個 ConsumeProcessor。如果您有更大的使用需求,如有需求請提工單申請。 |
消費處理器配置中 SPL 長度 | 每個 SPL 長度不超過 4000 個字元。 |
消費處理器中 SPL 指令限制 | 僅支援行處理指示,不支援彙總、邏輯判斷等指令。 |
更新或刪除消費處理器後生效時間 | 修改或刪除消費處理器配置,最多一分鐘內生效。 |
常見問題
規則消費的ShardReadQuotaExceed錯誤怎麼處理?
這個錯誤碼是由於Shard讀流量超過Quota報錯,解決方案:
消費用戶端程式遇到此錯誤可以等待(sleep)後重試。
或者手動分裂Shard,對於Shard分裂後的產生的新資料消費,達到降低每個shard讀取速度的效果。
規則消費的流量控制是什麼樣的?
規則消費的流量控制策略等同於普通消費的流量控制,具體可以參考資料讀寫。規則消費的流量計算是指SPL處理前的未經處理資料量:
例如未經處理資料大小為100MB(壓縮後),經過SPL語句
* | where method = 'POST'過濾後,返回給消費用戶端的資料大小為20MB(壓縮後),讀取流量控制是按照100MB來計算。
使用規則消費後,為什麼在專案監控中的“流量/分鐘”圖表中看到的outflow的流量很低?
因為專案監控中顯示的“流量/分鐘”的outflow是指SPL處理後的資料量,並非未經處理資料量,如果SPL語句中包含行過濾、列裁剪等減少資料量的指令時,可能會有outflow低情況出現。