揭秘華為雲GaussDB(for Redis)丨大key治理

来源:https://www.cnblogs.com/huaweiyun/archive/2023/08/11/17622579.html
-Advertisement-
Play Games

GaussDB(for Redis)提供了完備的大Key解決方案,支持大Key線上診斷、監控預警、承載力強等能力,彌補了開源Redis在大key問題上的不足,讓DBA如虎添翼。 ...


本文分享自華為雲社區《華為雲GaussDB(for Redis)揭秘第31期:大key治理》,作者: 高斯Redis官方博客。

從DBA的視角看,大Key無疑是引起Redis線上問題的常見原因。為瞭解決大Key隱患,業務首先要遵守合理的開發規範,減少大Key的產生和訪問依賴。但有時大Key是在程式運行過程中悄悄產生的,讓人防不勝防。因此,一款可隨時線上診斷,且能主動預警,防患於未然的Redis服務產品顯得尤為重要。

GaussDB(for Redis):支持大Key線上診斷

GaussDB(for Redis)採用計算、存儲分離的高可靠架構,每個計算節點上都部署有後臺任務。GaussDB(for Redis)通過後臺任務持續檢測分析存儲池中的大key情況,用戶執行命令時直接取結果,不會影響線上業務,跟業界阻塞式全量掃描方式相比,更安全。

cke_221.png

用戶執行bigkeys命令後,將直接從節點上獲取“答案”,不用全庫掃描引起不必要的性能影響。

cke_222.png

此外,GaussDB(for Redis)支持用戶自定義大key標準,比如大於1MB的string、大於10000個元素的hash類型等。該功能一經推出,收穫了很多客戶和DBA小伙伴的認可及點贊。

GaussDB(for Redis):支持大key監控預警

分享兩個真實案例:

1、業務周期性執行“lrange 0 -1”獲取list key的所有元素。但由於程式bug,業務也同時在長期、緩慢地向這個key中持續追加,導致key越來越長。直到線上業務出問題,幾經波折,才發現了這個危險的大Key。

2、業務長期穩定運行,有一天有新組件上線,線上業務開始不斷超時。幾經排查,發現新組件對Redis執行hmset f1 v1 f2 v2……,一條寫入命令攜帶了長達2萬個參數,嚴重影響了生產業務。

從DBA的角度,這類問題需要一個“大Key偵探”時刻盯防,一旦有對大Key的高危操作,立刻主動預警。

GaussDB(for Redis)設計了10+監控指標,提供“大Key偵探”的能力,例如:單個請求回包的最大元素個數(識別lrange 0 -1操作大key引起阻塞的場景)、單個請求攜帶的最大參數個數(識別hmset上萬元素批導引起阻塞的場景)……DBA只需要根據多年經驗,將這類指標訂閱告警,即可在第一時間“抓住大Key案發現場”,將風險扼殺於萌芽狀態。

GaussDB(for Redis):對大Key的承載能力更強

即使在大Key存在的一些業務場景,GaussDB(for Redis)的表現也是遠優於開源Redis的。下麵將介紹大Key經常引起的一些問題:

1、大key引發了CPU 100%,阻塞生產業務

在開源Redis中,大key容易引起CPU占用100%,使生產業務受損,引起線上問題。這是因為開源Redis本身就是單線程,尤其在這種比較脆弱的架構下使用大key,更容易引起線程阻塞,從而影響整個實例。

GaussDB(for Redis)的多線程架構天然就對大key更友好,不會有這個問題困擾。即使單個線程被個別大Key影響,整個GaussDB(for Redis)實例包含數十、上百個線程,整體業務基本都不會受到干擾。

2、大key因個別分片帶寬高,被Redis頻繁“流控”

目前市面上有一些開源Redis是基於一個大的容器混合部署很多租戶的Redis進程,但在這種架構下,為了避免一個客戶的Redis影響其他客戶,往往會對客戶的Redis進程進行流量控制,當某個客戶業務中對大key有較為頻繁的操作時,很容易觸發給客戶設定的該租戶的帶寬閾值並觸發流控,從而導致線上業務受損。

相比之下,GaussDB(for Redis)的每個分片都是一個獨立的容器,是客戶的獨享資源,更可靠,連接數、帶寬等資源不設主動流控,尤其是節點帶寬資源的“天花板”非常高。

3、大key導致傾斜,分片記憶體占用不均勻

開源Redis集群中,存儲大key會導致記憶體空間不均勻、消耗不均衡,大key所在分片有OOM風險。

cke_223.png

GaussDB(for Redis)採用高性能存儲池,不會對某個節點分片造成數據量的傾斜,支持大key可靠存儲,不會導致分片OOM。

cke_224.png

4、Redis擴容時要搬遷數據,大key總引起問題

開源Redis擴容時,由於涉及數據跨片搬遷,擴容過程耗時久,存在訪問阻塞的風險。如圖所示,因此開源Redis在有大key的情況下,擴容必須謹慎!

cke_225.png

GaussDB(for Redis)支持秒級無感擴容,不論擴容量,還是擴CPU,都不需要搬遷數據,因此也不受大Key影響,運維體驗極佳。

cke_226.png

本文介紹了GaussDB(for Redis)的大Key診斷、大Key預警特性,以及在大Key場景下如何解決開源Redis的穩定性痛點,為客戶提供了高效可靠的大Key解決方案。未來,GaussDB(for Redis)將持續致力於開發更多好用的企業級特性,幫助客戶輕鬆運維,高效開發。

附錄

  • 本文作者:

華為雲資料庫GaussDB(for Redis)團隊

  • 杭州/西安/深圳簡歷投遞:

[email protected]

  • 更多產品信息,歡迎訪問官方博客:

bbs.huaweicloud.com/blogs/248875

 

點擊關註,第一時間瞭解華為雲新鮮技術~

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • DrawingBrush 背景圖 Background上畫,線條(LineGeometry)、幾何圖形(RectangleGeometry)、橢圓(EllipseGeometry)、弧線(ArcSegment )等。 屬性 說明 描述 <GeometryDrawing Brush="Orange"> ...
  • 前面講了Centos如何安裝telnet遠程,這次分享Ubuntu系統如何安裝遠程telnet,作為咱們運維備用遠程途徑 一、下載和安裝 查看系統版本:Ubuntu 22.04.1 LTS 線上安裝: apt install telnet telnetd openbsd-inetd 離線安裝: 離線 ...
  • # Docker概述 ## Docker為何要出現 由於傳統的方式,不能打包環境,而環境的配置也及其繁瑣,及其耗費時間,而docker就可以非常有效的解決這個問題 **docker的思想來源於集裝箱,docker的核心思想!打包裝箱,也就是說每個箱子都是隔開的,docker通過這種機制可以吧伺服器利 ...
  • 提要:本系列文章主要參考`MIT 6.828課程`以及兩本書籍`《深入理解Linux內核》` `《深入Linux內核架構》`對Linux內核內容進行總結。 記憶體管理的實現覆蓋了多個領域: 1. 記憶體中的物理記憶體頁的管理 2. 分配大塊記憶體的伙伴系統 3. 分配較小記憶體的slab、slub、slob分 ...
  • 屏蔽驅動列印信息 root許可權:echo "1 4 1 7" > /proc/sys/kernel/printk sudo sh -c "sudo echo "1 4 1 7" > /proc/sys/kernel/printk 實現觸摸屏校驗 第一次進入Linux系統時,會出現觸摸校驗提示,按提示 ...
  • ![](https://img2023.cnblogs.com/blog/3076680/202308/3076680-20230811232544082-164229613.png) # 1. 基本信息 SQL經典實例 SQL Cookbook [[美]安東尼·莫利納羅(Anthony Molin ...
  • ![file](https://img2023.cnblogs.com/other/3195851/202308/3195851-20230811181235894-1707158282.png) # 個人簡介 * 王海林 白鯨開源研發工程師 * GitHub ID:hailin0 * 做過性能監控 ...
  • GaussDB(DWS)支持多種相容模式,為了相容目標資料庫,各模式之間或多或少存在一些行為差異。這裡分享一個mysql相容模式下的表達式函數因不同寫法引發的結果差異案例。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...