Elasticsearch冷熱架構:性能與成本完美平衡

Elasticsearch 的冷熱架構(Hot-Warm-Cold Architecture)是一種針對時序數據(如日志、指標等)的成本與性能優化方案,通過將數據在不同生命周期的存儲需求分層處理,兼顧性能、容量和成本。其核心思想是:讓最新、最頻繁訪問的數據(熱數據)存儲在高速硬件上,較舊、較少訪問的數據(溫/冷數據)遷移到廉價大容量硬件上


核心架構分層

層級數據特征硬件配置使用場景
Hot最新寫入,高頻訪問高性能節點(SSD、高CPU/內存)實時寫入、快速查詢
Warm近期數據,中低頻訪問中等性能節點(SSD/HDD混合)歷史數據分析
Cold舊數據,極少訪問(歸檔)高容量低成本節點(大容量HDD)長期歸檔,偶爾查詢
Optional: Frozen極舊數據(只讀)對象存儲(如S3)極少訪問,解凍才能查詢

關鍵實現步驟

1. 節點角色劃分
  • 為不同層級配置專屬節點,在 elasticsearch.yml 中標記節點角色:
    # Hot 節點
    node.roles: ["data_hot"]# Warm 節點
    node.roles: ["data_warm"]# Cold 節點
    node.roles: ["data_cold"]
    
2. 配置索引生命周期管理 (ILM)
  • 策略示例(將數據按時間自動遷移):
    PUT _ilm/policy/hot_warm_cold_policy
    {"policy": {"phases": {"hot": {"min_age": "0ms","actions": {"rollover": { "max_size": "50gb", "max_age": "1d" }, // 滾動創建新索引"set_priority": { "priority": 100 }                  // 高查詢優先級}},"warm": {"min_age": "1d",    // 1天后進入溫層"actions": {"set_priority": { "priority": 50 },"allocate": { "require": { "data_type": "warm" } // 遷移到 Warm 節點},"forcemerge": { "max_num_segments": 1 } // 合并段減少資源占用}},"cold": {"min_age": "7d",    // 7天后進入冷層"actions": {"set_priority": { "priority": 0 },"allocate": { "require": { "data_type": "cold" }  // 遷移到 Cold 節點}}},"delete": {"min_age": "30d",   // 30天后刪除"actions": { "delete": {} }}}}
    }
    
3. 應用ILM策略到索引模板
PUT _index_template/logs_template
{"index_patterns": ["logs-*"], "template": {"settings": {"index.lifecycle.name": "hot_warm_cold_policy","index.routing.allocation.require.data_type": "hot" // 初始寫入 Hot 節點}}
}

核心優勢

  1. 成本優化
    • 冷數據用廉價HDD存儲,降低50%+存儲成本。
  2. 性能保障
    • 熱數據獨占SSD資源,確保寫入/查詢速度。
  3. 擴展靈活
    • 按需擴展不同層級節點(如單獨擴容Cold層)。
  4. 自動化管理
    • ILM自動處理數據流轉,無需人工干預。

注意事項

  • 硬件差異:確保Hot節點使用SSD,Cold節點使用大容量HDD。
  • 分片分配:Cold層可減少分片副本數(如從2副本降為1副本)。
  • 凍結層(Frozen):對極少訪問數據使用 searchable snapshots,從對象存儲加載數據(查詢慢但成本極低)。
  • 版本兼容:ILM功能需ES 6.6+,完整冷熱架構建議7.10+。

實際應用場景

  • 日志分析系統:新日志寫入Hot節點實時分析,舊日志移至Cold層歸檔。
  • 電商指標:當天訂單數據在Hot層快速聚合,上月數據存Cold層備份。
  • 安全審計:近期審計記錄在Warm層可查,歷史數據存Frozen層合規保留。

通過冷熱分離,ES集群在資源有限的情況下可最大化平衡性能與成本,是處理海量時序數據的標準實踐。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/95050.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/95050.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/95050.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【MFC自動生成的文件詳解:YoloClassMFC.cpp 的逐行解釋、作用及是否能刪除】

大家好,歡迎來到我的MFC編程入門系列。上次我們聊了MFC項目創建后的核心文件區別(項目名.cpp、.h、Dlg.cpp 和 Dlg.h),今天針對讀者的反饋,專門來拆解其中最重要的一個文件:項目名.cpp(這里以用…

玄機靶場 | 冰蝎3.0-jsp流量分析

文章目錄一、冰蝎3.0流量特征二、索引三、題目列表步驟#1黑客IP是什么?步驟#2黑客上傳的Webshell名是什么?步驟#3黑客上傳WebShell的時間是多少?(格式如:flag{YYYY-MM-DD HH:MM:SS})步驟#4木馬的解密key是什…

基于物理信息神經網絡(Physics-Informed Neural Network, PINN)的三維熱傳導方程求解器MATLAB

代碼實現了一個基于物理信息神經網絡(Physics-Informed Neural Network, PINN)的三維熱傳導方程求解器。以下是詳細分析:🧠 一、主要功能 main.m: 構建一個全連接神經網絡用于近似三維熱傳導方程的解 ( u(x, y, z, t) …

按鈕計數器:jQuery / AngularJS / Vue / React / dagger.js 實現對比與技術解讀

代碼來源:https://codepen.io/dagger8224/pen/myeKgVQ 任務:實現“按鈕點擊 1”計數器,對比不同框架的寫法與特性,并給出選型建議。 目錄 代碼解讀(逐框架) jQuery(命令式 DOM)Angu…

useEffect中直接使用 await報錯

在 useEffect 中直接使用 await 會報錯,因為 useEffect 的回調函數不能是 async 函數。有幾種正確的方式來處理異步操作: 方法一:在 useEffect 內部創建 async 函數并立即調用 這是最常用的方式。 import React, { useEffect } from react;co…

卷積神經網絡為什么要填充(Padding)

填充(Padding)是卷積神經網絡中一個至關重要且巧妙的設計。它的核心目的可以概括為:為了解決卷積操作導致的特征圖尺寸縮小和邊緣信息丟失問題。

C++ 并發編程:全面解析主流鎖管理類

在 C 的并發世界里,管理共享資源就像是在一個繁忙的十字路口指揮交通。如果指揮不當,就會發生混亂甚至致命的“死鎖”。C 標準庫提供的各種鎖管理工具,就是我們手中的“交通信號燈”,它們各自擁有獨特的職能,幫助我們編…

Spring boot 啟用第二數據源

1. 數據源配置代碼:import com.alibaba.druid.pool.DruidDataSource; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilde…

Wi-Fi 時延與掉包的關鍵因素全解析

在無線網絡性能優化中,時延(Latency)與掉包(Packet Loss)是最核心的兩個指標。本文將從 物理層、MAC層、系統棧、業務形態與環境 等多個維度,對 Wi-Fi 時延與掉包的關鍵因素進行全面梳理,并結合…

《Python 文本分析實戰:從單詞頻率統計到高效可視化的全流程指南》

《Python 文本分析實戰:從單詞頻率統計到高效可視化的全流程指南》 一、引言:小任務背后的大世界 在我多年的開發與教學中,文本處理始終是一個繞不開的主題。無論是日志分析、自然語言處理,還是搜索引擎、推薦系統,幾乎所有數據驅動的系統都離不開對文本的理解。而“統計…

12KM無人機高清圖傳通信模組——打造未來空中通信新高度

在無人機技術飛速發展的今天,高清圖傳和穩定的通信模塊無疑是提高無人機作業效率和可靠性的關鍵因素。作為新一代無人機核心技術之一,深圳云望物聯12KM無人機高清圖傳通信模組憑借其卓越的性能,正逐步成為行業內的寵兒,成為無人機…

【LeetCode 熱題 100】62. 不同路徑——(解法二)遞推

Problem: 62. 不同路徑 文章目錄整體思路完整代碼時空復雜度時間復雜度:O(m * n)空間復雜度:O(m * n)整體思路 這段代碼同樣旨在解決 “不同路徑” 問題,但它采用的是一種 自底向上(Bottom-Up)的動態規劃 方法&#x…

C++ 高階錯誤解析:MSVC 與 Qt 全景指南

在 C 開發中,尤其是在 Windows 平臺使用 MSVC 或 Qt 框架 時,程序員經常會遇到編譯錯誤、鏈接錯誤和運行時異常。本文將系統梳理這些問題,按 語法錯誤、類型錯誤、鏈接錯誤、Qt 運行錯誤 分類,并給出 觸發示例、原因分析及修復策略…

基于Net海洋生態環境保護系統的設計與實現(代碼+數據庫+LW)

摘要 隨著全球氣候變化和人類活動的加劇,海洋生態系統面臨著前所未有的威脅。污染、過度捕撈、棲息地破壞等問題嚴重影響了海洋生物多樣性和生態平衡。為了應對海洋生態系統面臨的嚴重威脅,如污染、過度捕撈和棲息地破壞等問題,利用C#語言和…

DoIP路由激活報文

目錄 DoIP路由激活報文詳解 基本概念 報文結構 響應報文 通信流程 注意事項 **DoIP (Diagnostics over Internet Protocol) 報文詳解** **1. DoIP 報文結構** **1.1 通用報文格式** **2. 常見 DoIP 報文類型** **3. 典型 DoIP 報文示例** **3.1 車輛識別請求(廣播)** **3.2 車…

學習Python中Selenium模塊的基本用法(8:元素操作-2)

定位網頁元素后,調用is_displayed函數可以判斷元素的顯示狀態,如百度網站中有默認隱藏的元素,此時即可使用is_displayed函數判斷該元素的顯示狀態,如下面代碼所示:driver webdriver.Chrome() driver.get("https:…

雙指針:從「LC11 盛最多水的容器」到「LC42 接雨水」

LC11 盛最多水的容器 選擇兩條線,它們與x軸構成的容器可以盛的水量取決于兩條線中較短的那條以及兩條線之間的距離。 樸素的思想是使用i和j遍歷height中的所有線,但是這樣的時間復雜度是O(n2)O(n^2)O(n2)。 我們讓i從0開始,j從n-1開始&…

WINTRUST!_GetMessage函數分析之CRYPT32!CryptSIPGetSignedDataMsg函數的作用是得到nt5inf.cat的信息

UEDIT打開nt5inf.cat。第一部分:BOOL _GetMessage(CRYPT_PROVIDER_DATA *pProvData) {DWORD dwMsgEncoding;SIP_SUBJECTINFO *pSubjInfo;SIP_DISPATCH_INFO *pSip;DWORD cbEncodedMsg;BYTE *pbEncodedMsg;DWORD …

編譯esp32報錯解決辦法

報錯信息:CMake Error at build/CMakeFiles/git-data/grabRef.cmake:48 (file):file failed to open for reading (No such file or directory):這個錯誤是由于 Git 的安全檢查導致的。從錯誤信息可以看出,Git 檢測到了"可疑的所有權"&#xf…

【AI】常見8大LLM大語言模型地址

序號AI名稱地址1 ChatGPT (OpenAI)https://chat.openai.com/2Gemini (Google personal AI assistant)https://gemini.google.com/app3Grok (xAI Grok LLM)https://x.ai/4DeepSeek (DeepSeek AI chatbot)DeepSeek5Claude (Anthropic Claude AI)App unavai…