国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

一文解析得物自建 Redis 最新技術演進

數據庫 Redis
本文詳細介紹了自建 Redis 最新技術演進,詳細介紹了自研 DRedis SDK優勢與目前使用現狀,以及 DRedis 在同城雙活就近讀場景下,可以更精細化的控制部分請求采用優先同區就近讀。

一、前言

二、規?,F狀

三、技術演進介紹

   1. 自建 Redis 系統架構

   2. 接入方式演進

   3. 同城雙活就近讀

   4. Redis-server 版本與能力

   5. 實例架構與規格

   6. proxy 限流

   7. 自動化運維

四、總結

一、前言

自建 Redis 上線 3 年多以來,一直圍繞著技術架構、性能提升、降低成本、自動化運維等方面持續進行技術演進迭代,力求為公司業務提供性能更高、成本更低的分布式緩存集群,通過自動化運維方式提升運維效率。

本文將從接入方式、同城雙活就近讀、Redis-server 版本與能力、實例架構與規格、自動化運維等多個方面分享一下自建 Redis 最新的技術演進。

二、規?,F狀

隨著公司業務增長,自建 Redis 管理的 Redis 緩存規模也一直在持續增長,目前自建 Redis 總共管理 1000+集群,內存總規格 160T,10W+數據節點,機器數量數千臺,其中內存規格超過 1T 的大容量集群數十個,單個集群最大訪問 QPS 接近千萬。

圖片圖片

三、技術演進介紹

自建Redis系統架構

下圖為自建Redis系統架構示意圖:

自建 Redis 架構示意圖自建 Redis 架構示意圖

自建Redis集群由Redis-server、Redis-proxy、ConfigServer 等核心組件組成。

  • Redis-server 為數據存儲組件,支持一主多從,主從多可用區部署,提供高可用、高性能的服務;
  • Redis-proxy 為代理組件,業務通過 proxy 可以像使用單點實例一樣訪問 Redis 集群,使用更簡單,并且在Redis-proxy 上提供同區優先就近讀、key 維度或者命令維度限流等高級功能;
  • ConfigServer 為負責 Redis 集群高可用的組件。

自建 Redis 接入方式支持通過域名+LB、service、SDK 直連(推薦)等多種方式訪問 Redis 集群。

自建 Redis 系統還包含一個功能完善的自動化運維平臺,其主要功能包括:

  • Redis 集群實例從創建、proxy 與 server 擴縮容、到實例下線等全生命周期自動化運維管理能力;
  • 業務需求自助申請工單與工單自動化執行;
  • 資源(包含 ECS、LB)精細化管理與自動智能分配能力、資源報表統計與展示;
  • ECS 資源定期巡檢、自動均衡與節點智能調度;
  • 集群大 key、熱 key 等診斷與分析,集群數據自助查詢。

下面將就一些重要的最新技術演進進行詳細介紹。

接入方式演進

自建 Redis 提升穩定性的非常重要的一個技術演進就是自研 DRedis SDK,業務接入自建 Redis 方式從原有通過域名+LB 的方式訪問演進為通過 DRedis SDK 連接 proxy 訪問。

LB接入問題

在自建 Redis 初期,為了方便業務使用,使用方式保持與云 Redis 一致,通過 LB 對 proxy 做負載均衡,業務通過域名(域名綁定集群對應 LB)訪問集群,業務接入簡單,像使用一個單點 Redis 一樣使用集群,并且與云 Redis 配置方式一致,接入成本低。

隨著自建 Redis 規模增長,尤其是大流量業務日漸增多,通過 LB 接入方式的逐漸暴露出很多個問題,部分問題還非常棘手:

  • 自建 Redis 使用的單個 LB 流量上限為5Gb,閾值比較小,對于一些大流量業務單個 LB 難以承接其流量,需要綁定多個LB,增加了運維復雜度,而且多個 LB 時可能會出現流量傾斜問題;
  • LB組件作為訪問入口,可能會受到網絡異常流量攻擊,導致集群訪問受損;
  • 由于Redis訪問均是TCP連接,LB摘流業務會有秒級報錯。

DRedis接入

自建Redis通過自研DRedis SDK,通過SDK直連 proxy,不再強依賴 LB,徹底解決 LB 瓶頸和穩定性風險問題,同時,DRedis SDK 默認優先訪問同可用區 proxy,天然支持同城雙活就近讀。

DRedis SDK系統設計圖如下所示:

圖片圖片

Redis-proxy 啟動并且獲取到集群拓撲信息后,自動注冊到注冊中心;可通過管控白屏化操作向配置中心配置集群使用的 proxy 分組與權重、就近讀規則等信息;DRedis SDK 啟動后,從配置中心獲取到 proxy 分組與權重、就近讀規則,從注冊中心獲取到 proxy 節點信息,然后與對應 proxy 節點建立連接;應用通過 DRedis SDK 訪問數據時,DRedis SDK 通過加權輪詢算法獲取一個 proxy 節點(默認優先同可用區)及對應連接,進行數據訪問。

DRedis SDK并且對原生 RESP 協議進行了增強,添加了一部分自定義協議,支持業務靈活開啟就近讀能力,對于滿足就近讀規則的 key 訪問、或者通過注解指定的就近讀請求,DRedis SDK通過自定義協議信息,通知 proxy 在執行對應請求時,優先訪問同可用區 server 節點。

DRedis SDK 目前支持 Java、Golang、C++(即將上線)三種開發語言。

  • Java SDK 基于 Redisson 客戶端二次開發,后續還會新增基于 Jedis 二次開發版本,供業務靈活選擇,并且集成到 fusion 框架中
  • Golang SDK 基于 go-Redis v9 進行二次開
  • C++ SDK 基于 brpc 二次開發

DRedis 接入優勢

業務通過 DRedis SDK 接入自建 Redis,在穩定性、性能等方面都能得到大幅提升,同時能降低使用成本。

圖片

社區某應用升級后,業務 RT 下降明顯,如下圖所示:

圖片圖片

DRedis 接入現狀

DRedis SDK目前在公司內部大部分業務域的應用完成升級。

Java 和 Golang 應用目前接入上線超過300+。

同城雙活就近讀

自建 Redis 同城雙活采用中心寫就近讀的方案實現,可以降低業務多區部署時訪問 Redis RT。

同城雙活就近讀場景下,業務訪問 Redis 時,需要 SDK 優先訪問同可用區proxy,proxy 優先訪問同可用區 server節點,其中proxy優先訪問同區 server 節點由 proxy 實現,但是在自研 DRedis SDK 之前,LB 無法自動識別應用所在同區的 proxy 并自動路由,因此需要借助service 的同區就近路由能力,同城雙活就近讀需要通過容器 proxy+service 接入。

自建 Redis 自研 DRedis SDK 設計之初便考慮了同城雙活就近讀需求,DRedis 訪問 proxy 時,默認優先訪問同區proxy。

圖片

圖片

service接入問題

目前,自建 Redis server 和 proxy 節點基本都是部署在 ECS 上,并且由于 server 節點主要消耗內存,而 proxy 節點主要消耗 CPU,因此默認采用 proxy + server 節點混部的方式,充分利用機器的 CPU 和內存,降低成本。

而為了支持同城雙活就近讀,需要在容器環境部署 proxy,并創建 service,會帶來如下問題:

  • 運維割裂,運維復雜度增加,除了需要運維 ECS 環境部署節點,額外增加了容器環境部署方式。
  • 成本增加,容器環境 proxy 需要獨立機器部署,無法與 server 節點混部,造成成本增加。
  • RT上升,節點 CPU 更高,從實際使用效果來看,容器環境 proxy 整體的 CPU 和響應 RT 都明顯高于 ECS 環境部署的節點。
  • 訪問不均衡,service 接入時,會出現連接和訪問不均衡現象。
  • 無法定制化指定僅僅少量特定key 或者 key 前綴、指定請求開啟就近讀。

DRedis接入

自建 Redis 自研 DRedis SDK 設計之初便考慮了同城雙活就近讀需求,DRedis 訪問 proxy 時,默認優先訪問同區proxy;當同可用區可用 proxy 數量小于等于1個時,啟用調用保護,DRedis會主動跨區訪問其他可用區 proxy 節點。

通過service接入方式支持同城雙活就近讀,是需要在 proxy 上統一開啟就近讀配置,開啟后,對全局讀請求均生效,所有讀請求都默認優先同區訪問。

由于 Redis 主從復制為異步復制,主從復制可能存在延遲,理論上在備可用區可能存在讀取到的不是最新數據。

某些特定業務場景下,業務可能在某些場景能夠接受就近讀,但是其他一些場景需要保證強一致性,無法接受就近讀,通過 service 接入方式時無法靈活應對這種場景。

DRedis SDK 提供了兩種方式供這種場景下業務使用:

  • 支持指定 key 精確匹配或者 key 前綴匹配的方式,定向啟用就近讀。
  • Java 支持通過聲明式注解(@NearRead)指定某次請求采用就近讀;Golang 新增 80 個類似 xxxxNearby 讀命令,支持就近讀。

使用以上兩種方式指定特定請求使用就近讀時,無需 proxy 上統一配置同區優先就近讀。默認情況下,所有讀請求訪問主節點,業務上對 RT 要求高、一致性要求低的請求可以通過以上兩種方式指定優先同區就近讀。

Redis-server版本與能力

在自建Redis 初期,由于業務在前期使用云Redis產品時均是使用Redis4.0 版本,因此自建 Redis 初期也是選擇 Redis4.0 版本作為主版本,隨著 Redis 社區新版本發布,結合當前業界使用的主流版本,自建Redis也新增了 Redis6.2 版本,并且將 Redis6.2 版本作為新集群默認版本。

圖片圖片

不管是 Redis4.0 還是 Redis6.2 版本,均支持了多線程特性、實時熱 key 統計能力、水平擴容異步遷移 slot 能力,存量集群隨著日常資源均衡遷移調度,集群節點版本會自動升級到同版本的最新安裝包。

  • 多線程特性

Redis6.2 版本支持 IO 多線程,在 Redis 處理讀寫業務請求數據時使用多線程處理,提高 IO 處理能力,自建 Redis 將多線程能力也移植到了 Redis4.0 版本,測試團隊測試顯示,開啟多線程,讀寫性能提升明顯。

圖片圖片

多線程版本 VS 普通版本

圖片圖片

多線程版本 VS 云產品5.0版本

  • 實時熱 key 統計

自建 Redis4.0 和 Redis6.2 版本均支持 Redis 服務端實時熱 key 統計能力,管控臺白屏化展示,方便快速排查熱 key 導致的集群性能問題。方案詳細可閱讀《基于Redis內核的熱key統計實現方案》。

圖片圖片

  • 水平擴容異步遷移

自建 Redis 支持水平擴容異步數據遷移,解決大 key 無法遷移或者遷移失敗的穩定性問題,支持多 key 并發遷移,幾億 key 數據在默認配置下水平擴容時間從平均 4 小時縮短到 10 分鐘,性能提升 20 倍,對業務RT影響下降 90% 以上。

圖片圖片

算法某實例 2.5 億 key 水平擴容花費時間和遷移過程對業務 RT 影響

實例架構與規格

Redis單點主備模式

自建 Redis 實例默認均采用集群架構,但是通過 proxy 代理屏蔽集群架構細節,集群架構對業務透明,業務像使用一個單點 Redis 實例一樣使用 Redis 集群。

但是集群架構下,由于底層涉及多個分片,不同 key 可能存在在不同分片,并且隨著水平擴容,key所在分片可能會發生變化,因此,集群架構下,對于一些多 key 命令(如 eval、evalsha、BLPOP等)要求命令中所有 key 必須屬于同一個slot。因此集群架構下,部分命令訪問與單點還是有點差異。

實際使用中,有少數業務由于依賴了一些開源的三方組件,其中可能由于存儲非常少量的數據,所以使用到 Redis 單點主備模式實例,因此,考慮到這種場景,自建 Redis 在集群架構基礎上,也支持了Redis 單點主備模式可供選擇。

一主多從規格

自建 Redis 支持一主多從規格用于跨區容災,提供更快的 HA 效率,當前支持一主一從(默認),一主兩從、一主三從 3 種副本規格,支持配置讀寫分離策略提升系統性能(一主多從規格下,開啟讀寫分離,可以有多個分片承接讀流量)。

一主一從一主一從

一主兩從一主兩從

一主三從一主三從

  • 一主一從時默認主備可用區各部署一個副本(master在主可用區)
  • 一主兩從時默認主可用區部署一主一從,備可用區部署一從副本
  • 一主三從時默認主可用區部署一主一從,備可用區部署兩從副本

proxy限流

為了應對異常突發流量導致的業務訪問性能下降,自建 Redis-proxy 支持限流能力。

有部分業務可能存在特殊的已知大key,業務中正常邏輯也不會調用查詢大 key 全量數據命令,如 hgetall、smembers 等,查詢大 key 全量數據會導致節點性能下降,極端情況下會導致節點主從切換,因此,自建Redis 也支持配置命令黑名單,在特定的集群,禁用某些特定的命令。

  • 支持 key 維度限流,指定 key 訪問 QPS 閾值
  • 支持命令維度限流,指定命令訪問 QPS 閾值
  • 支持命令黑名單,添加黑名單后,該實例禁用此命令

自動化運維

自建 Redis 系統還包含一個功能完善的自動化運維平臺,一直以來,自建Redis一直在完善系統自動化運維能力,通過豐富的自動化運維能力,實現集群全生命周期自動化管理,資源管理與智能調度,故障自動恢復等,提高資源利用率、降低成本,提高運維效率。

圖片圖片

  • 資源池自動化均衡調度

自建 Redis 資源池支持按內存使用率自動化均衡調度、按內存分配率自動化均衡調度、按 CPU 使用率均衡調度、支持指定機器凌晨遷移調度(隱患機器提前維護)等功能,均衡資源池中所有資源的負載,提高資源利用率。

  • 集群自動部署與下線

當業務提交集群申請工單審批通過后,判斷是否支持自建,如符合自建則自動化進行集群部署和部署結果校驗,校驗集群可用性后自動給業務交付集群信息,整個過程高效快速。

業務提交集群下線工單后,自動檢測是否滿足下線條件,比如是否存在訪問連接,如滿足下線條件,則自動釋放 proxy 資源,保留 7 天后自動回收 server 節點資源,在7 天內,如果存在特殊業務仍在使用的情況,還支持快速恢復使用。

  • 資源管理

對 ECS 機器資源和 LB 資源進行打標,根據特殊業務需要做不同資源池的隔離調度,支持在集群部署與擴容時,資源自動智能化分配。

  • 集群擴縮容

自建 Redis 支持 server 自動垂直擴容,業務申請集群時,可以選擇是否開啟自動擴容,如果開啟自動擴容,當集群內存使用率達到80%時,系統會自動進行垂直擴容,對業務完全無感,快速應對業務容量上漲場景。

ecs-proxy,docker-proxy擴容,server節點的擴縮容也支持工單自動化操作,業務提交工單后,系統自動執行。

  • 工單自動化

當前80%以上的運維場景已完成工單自動化,如 Biz 申請、創建實例、密碼申請、權限申請、刪除key、實例升降配,集群下線等均完成工單自動化。業務提單審批通過后自動校驗執行,執行完成后自動發送工單執行結果通知。

  • 告警自動化處理

系統會自動檢測機器宕機事件,如發現機器宕機重啟,會自動拉起機器上所有節點,快速恢復故障,提高運維效率。

關于自建 Redis 自動化運維能力提升詳細設計細節,后續會專門分享,敬請期待。

四、總結

本文詳細介紹了自建 Redis 最新技術演進,詳細介紹了自研 DRedis SDK優勢與目前使用現狀,以及 DRedis 在同城雙活就近讀場景下,可以更精細化的控制部分請求采用優先同區就近讀。

介紹了自建 Redis 目前支持最新的 Redis6.2版本,以及在 Redis4.0 和 Redis6.2 版本均支持多線程 IO 能力、實時熱 key 統計能力、水平擴容異步遷移能力。自建 Redis 除了支持集群架構,也支持單點主備架構實例申請,同時支持一主多從副本規格,可以提供可靠性和讀請求能力(讀寫分離場景下)。自建 Redis-proxy 也支持多種限流方式,包括 key 維度、命令維度等。

自建 Redis 自動化運維平臺支持強大的自動化運維能力,提高資源利用率,降低成本,提高運維效率。

自建 Redis 經過長期的技術迭代演進,目前支持的命令和功能上完全對比云 Redis,同時,自建 Redis 擁有其他一些特色的能力與優勢,比如不再依賴LB、支持自動垂直擴容、支持同區優先就近讀等。

責任編輯:武曉燕 來源: 得物技術
相關推薦

2023-07-07 19:26:50

自建DTS平臺

2019-09-30 09:19:54

Redis分離云數據庫

2023-11-08 08:21:52

MVPMVVMMVI

2023-11-21 08:37:09

2022-03-24 08:51:48

Redis互聯網NoSQL

2025-01-24 14:38:51

2021-09-13 22:34:56

區塊鏈新基建數字化轉型

2019-04-24 12:30:36

2024-10-14 10:04:51

2024-11-25 12:30:00

云原生云原生網關

2023-01-11 18:34:22

推薦精排模型

2017-01-09 15:55:42

eMTC物聯網無線連接

2022-12-20 07:39:46

2025-04-22 00:00:55

2021-10-18 14:30:55

物聯網IOT

2023-10-26 01:15:09

得物視頻優化

2018-10-08 15:00:27

物聯網LoRaIOT

2021-08-05 15:12:30

Anolis OS 國密生態國產化

2020-02-28 19:06:21

緩存讀寫Redis

2023-12-26 12:18:02

Java設計開發
點贊
收藏

51CTO技術棧公眾號

欧美一区二区三区四区五区六区| 中文字幕一区二区av| 色激情天天射综合网| 欧美成年人视频网站| 亚洲欧洲日本国产| 欧美激情视频在线播放| 天堂在线免费av| 欧美日韩国产一区二区三区不卡| 国产欧美视频在线观看| 色婷婷综合久久久久| 中文精品一区二区三区| 免费a级毛片在线播放| 一区在线观看视频| 91av网站在线播放| jizz18女人| 精品国产乱码| 久久久免费电影| 日本一本视频| 欧美一区不卡| 日韩一区二区在线看片| 久草一区二区| 一二三四视频在线中文| 91香蕉视频污在线| 国产精品xxx视频| 秋霞av在线| 亚洲欧美日韩国产综合精品二区| 亚洲国产精品热久久| 激情五月婷婷六月| 亚洲一区二区三区日本久久九| 亚洲欧洲www| 2020中文字字幕在线不卡| 日韩国产一区二区| 精品欧美一区二区久久| 91动漫在线看| 水蜜桃精品av一区二区| 欧美刺激午夜性久久久久久久| 日本大片免费看| 久久99久久99| 欧美劲爆第一页| 国产裸舞福利在线视频合集| 日韩中文字幕亚洲一区二区va在线 | 成人影院入口| 国产精品美女久久久久久久久 | 91精品久久久久久| a国产在线视频| 欧美高清一级片在线观看| 国产日韩欧美一二三区| 日本高清免费电影一区| 精品福利在线导航| 成人伊人222| 亚洲精品在线二区| 欧美成人精品不卡视频在线观看| 4438全国亚洲精品观看视频| 国产精品第三页| 国产精品毛片| 国产精品极品在线| 黄色亚洲大片免费在线观看| 欧美激情久久久| av免费在线观| 亚洲精品国产品国语在线app| 久久亚洲综合网| 成功精品影院| 欧美mv和日韩mv国产网站| 欧美不卡高清一区二区三区| 亚洲成人一二三| 欧美色图另类小说| 亚洲破处大片| 中文字幕成人一区| 亚洲婷婷在线视频| 国产v亚洲v天堂无码久久久| 欧美一级一区| 日本中文字幕亚洲| 免费高清视频精品| 91久久国产综合久久蜜月精品| 成人亚洲激情网| 黄动漫在线免费观看| 久久成人免费网| 干日本少妇首页| 色欧美日韩亚洲| 国产伦精品一区二区三区视频金莲| 大胆欧美人体视频| 青草在线视频在线观看| 婷婷成人激情在线网| 欧美精品第三页| 美国一区二区三区在线播放| 亚洲一区二区三区视频| 天堂精品久久久久| 亚洲天堂av电影| 1769在线观看| 久久国产天堂福利天堂| 日韩av有码| 可以看毛片的网址| 在线免费不卡视频| 日本h片在线看| 亚洲色图美腿丝袜| 伊人情人综合网| 成年人免费大片| 欧美一区二区精品在线| 伊人久久久久久久久久| 日韩欧美在线观看一区二区| 日韩电影网在线| 久久国产精品黑丝| 国产日韩欧美中文| 国产亚洲精品久| 男人天堂av片| 欧美人xxxx| 暖暖视频在线免费观看| 一区二区三区色| 日本综合字幕| 国产小视频国产精品| 久草在线中文最新视频| 51精品秘密在线观看| wwwav在线| 欧美成人午夜电影| 国产精品传媒精东影业在线| 日韩欧美高清一区| 国产精品videosex性欧美| 日韩精品伦理第一区| 欧美电影网址| 国产一区精品视频| 欧美va天堂在线| 一级黄色香蕉视频| 在线视频免费一区二区| 一区二区视频免费完整版观看| 国产传媒一区二区三区| 在线不卡欧美| 国产一区二区伦理| 手机看片福利日韩| 一区二区三区中文字幕| 久久婷婷久久| 亚洲国产精品久久一线不卡| 欧美在线一级va免费观看| 欧美性猛片xxxxx免费中国| 91精品久久久久久久久久| 中文字幕一区二区三区色视频| 日本按摩中出| 91成人在线精品| 免费看av成人| 日韩欧美国产高清| 台湾色综合娱乐中文网| 无码av天堂一区二区三区| 欧美日韩在线播放一区| 中文字幕在线免费| 国产精品久久久91| 亚洲欧美一区二区三区孕妇| 欧美9999| 国产精品扒开腿做爽爽爽视频| 国产性色一区二区| 精品一区二区三区视频在线播放| 无码粉嫩虎白一线天在线观看| 亚洲女在线观看| 国产精品视频一区二区三区| 日韩暖暖在线视频| 国内精品亚洲| 欧美日本韩国一区二区| 国产精品一二区| 国产麻豆日韩| 欧美三级欧美成人高清www| 国产网站在线免费观看| 中文字幕亚洲欧美日韩2019| 狠狠网亚洲精品| www.精品在线| 国内精品视频一区| 亚洲精品中文字幕乱码三区| 日本大胆在线观看| 日本一区精品| 国产丝袜一区视频在线观看 | 久久久久久一区二区| 人妻av中文系列| 亚洲国产wwwccc36天堂| 亚洲精品在线观看91| 香蕉视频网站在线观看| 欧美黑人巨大精品一区二区| 国产精品国产自产拍高清av王其| 久久久久观看| 美女张开让男人捅| 亚洲人吸女人奶水| 综合激情婷婷| ...xxx性欧美| 国产精品99在线观看| 久久人人爽人人爽| 欧美天天综合| 国产精品免费丝袜| 欧美视频国产精品| 在线观看亚洲视频| 欧美一级欧美三级在线观看| 精品久久久久久亚洲国产300| 欧美大片一区二区三区| 国产精品亲子乱子伦xxxx裸| 日本在线看片免费人成视1000| 亚洲天堂第一区| 久久久99精品久久| 午夜av在线播放| 国产精品电影一区| 欧美一区二区播放| 久久久久久免费| 亚洲成色精品| 999国产精品一区| 麻豆tv入口在线看| 成视人a免费观看视频|