偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Redis 架構(gòu)是如何演進的?為什么?

數(shù)據(jù)庫 Redis
Redis 受歡迎主要原因是極高的性能以及豐富、方便使用的數(shù)據(jù)結(jié)構(gòu),這些簡單好用的數(shù)據(jù)結(jié)構(gòu)大幅度降低開發(fā)業(yè)務復雜度。大家都在緊貼用戶需求,開發(fā)更多的數(shù)據(jù)結(jié)構(gòu)。

Redis 現(xiàn)在已經(jīng)十分流行,互聯(lián)網(wǎng)幾乎所有項目都會用到,在使用 Redis 時,你知道是如何保證穩(wěn)定和高效的提供服務呢,它的架構(gòu)演化路程是什么呢?

圖片

單機版 Redis

2010 年,Redis 1.0 版本發(fā)布,這個架構(gòu)非常簡單。你的業(yè)務系統(tǒng)可以把 Redis 作為緩存系統(tǒng),從 MySQL 查詢數(shù)據(jù),接著寫入到 Redis 中,之后業(yè)務系統(tǒng)再從 Redis 中讀取這些數(shù)據(jù)。

就這樣想享受 Redis 快到飛起的性能。然而,隨著時間的推移,業(yè)務體諒發(fā)展起來,忽然有一天,Redis 宕機,所有的流量會打到 MySQL 上,嚴重的話還會壓垮 MySQL。

數(shù)據(jù)持久化

于是趕緊重啟 Redis,可是因為 Redis 都是把數(shù)據(jù)保存在內(nèi)存中,盡管你把 Redis 重啟了,之前的戶數(shù)也丟失了。流量依然會打到 MySQL 上,咋辦呢?

于是,2013 年,Redis 2.8 版本發(fā)布,迎來了數(shù)據(jù)持久化。我們總不能每次寫數(shù)據(jù)都寫磁盤,這樣太慢了,于是 Redis 引入 RDB 內(nèi)存快照的方式實現(xiàn)持久化。

定時的把當前 Redis Redis 中的數(shù)據(jù),寫到磁盤上的 RDB 文件就可以了。除了 RDB 內(nèi)存快照文件做持久化以外,還支持 AOF 文件。也就是將每次寫指令都寫到 AOF 文件中。

主從復制

似乎經(jīng)過上面的優(yōu)化,你再也不擔心 Redis 宕機了,即使宕機,也可以通過持久化文件快速恢復 Redis 中的數(shù)據(jù)。

可事情并沒這么簡單,如果一個一個實例宕機,我們是否可以部署多個 Redis 實例,并保持實時數(shù)據(jù)同步,當一個實例宕機,手動從剩下的實例提升為 master 繼續(xù)提供服務實現(xiàn)高可用。

就這樣,Redis 2.8 版本添加了主從復制功能。主從復制架構(gòu)誕生了,master 處理實時讀寫請求,另一個叫做 slave 的節(jié)點同步 master 的數(shù)據(jù)。通過主從架構(gòu)縮短不可用時間,并且還可以讓 slave 節(jié)點分擔一部分讀請求,提升應用整體性能。

哨兵集群

有了主從復制就萬無一失了么?答案是否定的。

因為我們通過人工介入來實現(xiàn)主從切換的,就必須要算上人的反應時間、操作時間,所以,在這期間你的業(yè)務應用依舊會受到影響。

如何把這個過程自動化?

我們可以引入一個檢查員,讓這個檢察院實時監(jiān)測 master 的健康狀態(tài),這個觀察者就叫做哨兵。

2012 年,Redis 在 2.6 版本首次發(fā)布哨兵模式,直到 Redis 2.8 版本第二版才變成生產(chǎn)可用。

哨兵是 Redis 的一種運行模式,它專注于對 Redis 實例(主節(jié)點、從節(jié)點)運行狀態(tài)的監(jiān)控,并能夠在主節(jié)點發(fā)生故障時通過一系列的機制實現(xiàn)選主及主從切換,實現(xiàn)故障轉(zhuǎn)移,確保整個 Redis 系統(tǒng)的可用性。結(jié)合 Redis 的 官方文檔,可以知道 Redis 哨兵具備的能力有如下幾個:

  • 監(jiān)控:持續(xù)監(jiān)控 master 、slave 是否處于預期工作狀態(tài)。
  • 自動切換主庫:當 Master 運行故障,哨兵啟動自動故障恢復流程:從 slave 中選擇一臺作為新 master。
  • 通知:讓 slave 執(zhí)行 replicaof ,與新的 master 同步;并且通知客戶端與新 master 建立連接。

Cluster 集群

2015 年,Redis 3.0 發(fā)布,這是一個里程碑版本,新增了 Redis 集群。

使用 Redis Cluster 集群,主要解決了大數(shù)據(jù)量存儲導致的各種慢問題,同時也便于橫向拓展。

Redis 集群是一種分布式數(shù)據(jù)庫方案,集群通過分片(sharding)來進行數(shù)據(jù)管理(「分治思想」的一種實踐)。

將數(shù)據(jù)劃分為 16384 的 slots,每個節(jié)點負責一部分槽位。槽位的信息存儲于每個節(jié)點中。是一個無中心架構(gòu),并提供復制和故障轉(zhuǎn)移功能。

展望未來

Redis 受歡迎主要原因是極高的性能以及豐富、方便使用的數(shù)據(jù)結(jié)構(gòu),這些簡單好用的數(shù)據(jù)結(jié)構(gòu)大幅度降低開發(fā)業(yè)務復雜度。大家都在緊貼用戶需求,開發(fā)更多的數(shù)據(jù)結(jié)構(gòu)。

  • 2017 年,Redis 5.0 發(fā)布,該版本最大的變化,就是新增了 stream 數(shù)據(jù)類型。
  • 2020 年,Redis 6.0 發(fā)布,該版本引入了網(wǎng)絡 IO 多線程,Redis 模型主要分為網(wǎng)絡模塊和命令處理模塊,作者認為正常情況下,redis 單線程模型中,網(wǎng)絡模塊往往成為瓶頸高發(fā)地;
  • 2022 年,Redis 7.0 發(fā)布,該版本就是重構(gòu)了 dict 結(jié)構(gòu),內(nèi)存占用更小,內(nèi)存成本會大大減少,RDB 版本不向下兼容。
責任編輯:姜華 來源: 碼哥跳動
相關推薦

2024-03-06 11:22:33

架構(gòu)演進技巧

2023-12-30 08:27:13

2024-11-14 08:08:14

2021-08-03 07:21:14

架構(gòu)微服務開發(fā)

2023-12-04 07:25:20

軟件架構(gòu)

2019-03-26 09:37:11

ES系統(tǒng)架構(gòu)

2019-01-14 09:06:40

LBS定位系統(tǒng)架構(gòu)

2021-06-07 10:13:01

單體架構(gòu)系統(tǒng)

2018-11-29 09:36:45

架構(gòu)系統(tǒng)拆分結(jié)構(gòu)演變

2022-06-06 14:28:27

零信任零信任架構(gòu)ZTA

2024-11-25 07:00:00

RedisMySQL數(shù)據(jù)庫

2022-12-09 14:53:17

2020-01-02 15:01:27

NginxApache服務器

2019-06-17 14:20:51

Redis數(shù)據(jù)庫Java

2020-11-18 10:54:29

垃圾回收器演進

2023-03-21 08:02:36

Redis6.0IO多線程

2020-10-09 08:26:16

架構(gòu)

2024-07-01 10:16:55

搜索向量數(shù)據(jù)類型

2020-08-14 09:11:29

RedisQPS數(shù)據(jù)庫

2012-08-01 14:04:46

Surface
點贊
收藏

51CTO技術(shù)棧公眾號