色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

如何從0到1構建一個穩(wěn)定、高性能的Redis集群?

數(shù)據(jù)分析與開發(fā) ? 來源:數(shù)據(jù)分析與開發(fā) ? 2023-07-19 15:19 ? 次閱讀

現(xiàn)如今 Redis 變得越來越流行,幾乎在很多項目中都要被用到,不知道你在使用 Redis 時,有沒有思考過,Redis 到底是如何穩(wěn)定、高性能地提供服務的?

你也可以嘗試回答一下以下這些問題:

我使用 Redis 的場景很簡單,只使用單機版 Redis 會有什么問題嗎?

我的 Redis 故障宕機了,數(shù)據(jù)丟失了怎么辦?如何能保證我的業(yè)務應用不受影響?

為什么需要主從集群?它有什么優(yōu)勢?

什么是分片集群?我真的需要分片集群嗎?

...

如果你對 Redis 已經(jīng)有些了解,肯定也聽說過數(shù)據(jù)持久化、主從復制、哨兵這些概念,它們之間又有什么區(qū)別和聯(lián)系呢?

如果你存在這樣的疑惑,這篇文章,我會從 0 到 1,再從 1 到 N,帶你一步步構建出一個穩(wěn)定、高性能的 Redis 集群。

在這個過程中,你可以了解到 Redis 為了做到穩(wěn)定、高性能,都采取了哪些優(yōu)化方案,以及為什么要這么做?

掌握了這些原理,這樣平時你在使用 Redis 時,就能夠做到「游刃有余」。

這篇文章干貨很多,希望你可以耐心讀完。

e45f0ece-25e7-11ee-962d-dac502259ad0.png

從最簡單的開始:單機版 Redis

首先,我們從最簡單的場景開始。

假設現(xiàn)在你有一個業(yè)務應用,需要引入 Redis 來提高應用的性能,此時你可以選擇部署一個單機版的 Redis 來使用,就像這樣:

e46d656e-25e7-11ee-962d-dac502259ad0.jpg

這個架構非常簡單,你的業(yè)務應用可以把 Redis 當做緩存來使用,從 MySQL 中查詢數(shù)據(jù),然后寫入到 Redis 中,之后業(yè)務應用再從 Redis 中讀取這些數(shù)據(jù),由于 Redis 的數(shù)據(jù)都存儲在內(nèi)存中,所以這個速度飛快。

如果你的業(yè)務體量并不大,那這樣的架構模型基本可以滿足你的需求。是不是很簡單?

隨著時間的推移,你的業(yè)務體量逐漸發(fā)展起來了,Redis 中存儲的數(shù)據(jù)也越來越多,此時你的業(yè)務應用對 Redis 的依賴也越來越重。

但是,突然有一天,你的 Redis 因為某些原因宕機了,這時你的所有業(yè)務流量,都會打到后端 MySQL 上,這會導致你的 MySQL 壓力劇增,嚴重的話甚至會壓垮 MySQL。

e478154a-25e7-11ee-962d-dac502259ad0.jpg

這時你應該怎么辦?

我猜你的方案肯定是,趕緊重啟 Redis,讓它可以繼續(xù)提供服務。

但是,因為之前 Redis 中的數(shù)據(jù)都在內(nèi)存中,盡管你現(xiàn)在把 Redis 重啟了,之前的數(shù)據(jù)也都丟失了。重啟后的 Redis 雖然可以正常工作,但是由于 Redis 中沒有任何數(shù)據(jù),業(yè)務流量還是都會打到后端 MySQL 上,MySQL 的壓力還是很大。

這可怎么辦?你陷入了沉思。

有沒有什么好的辦法解決這個問題?

既然 Redis 只把數(shù)據(jù)存儲在內(nèi)存中,那是否可以把這些數(shù)據(jù)也寫一份到磁盤上呢?

如果采用這種方式,當 Redis 重啟時,我們把磁盤中的數(shù)據(jù)快速恢復到內(nèi)存中,這樣它就可以繼續(xù)正常提供服務了。

是的,這是一個很好的解決方案,這個把內(nèi)存數(shù)據(jù)寫到磁盤上的過程,就是「數(shù)據(jù)持久化」。

數(shù)據(jù)持久化:有備無患

現(xiàn)在,你設想的 Redis 數(shù)據(jù)持久化是這樣的:

e48098aa-25e7-11ee-962d-dac502259ad0.jpg

但是,數(shù)據(jù)持久化具體應該怎么做呢?

我猜你最容易想到的一個方案是,Redis 每一次執(zhí)行寫操作,除了寫內(nèi)存之外,同時也寫一份到磁盤上,就像這樣:

e48a7636-25e7-11ee-962d-dac502259ad0.jpg

沒錯,這是最簡單直接的方案。

但仔細想一下,這個方案有個問題:客戶端的每次寫操作,既需要寫內(nèi)存,又需要寫磁盤,而寫磁盤的耗時相比于寫內(nèi)存來說,肯定要慢很多!這勢必會影響到 Redis 的性能。

如何規(guī)避這個問題?

我們可以這樣優(yōu)化:Redis 寫內(nèi)存由主線程來做,寫內(nèi)存完成后就給客戶端返回結果,然后 Redis 用另一個線程去寫磁盤,這樣就可以避免主線程寫磁盤對性能的影響。

這確實是一個好方案。除此之外,我們可以換個角度,思考一下還有什么方式可以持久化數(shù)據(jù)?

這時你就要結合 Redis 的使用場景來考慮了。

回憶一下,我們在使用 Redis 時,通常把它用作什么場景?

是的,緩存。

把 Redis 當做緩存來用,意味著盡管 Redis 中沒有保存全量數(shù)據(jù),對于不在緩存中的數(shù)據(jù),我們的業(yè)務應用依舊可以通過查詢后端數(shù)據(jù)庫得到結果,只不過查詢后端數(shù)據(jù)的速度會慢一點而已,但對業(yè)務結果其實是沒有影響的。

基于這個特點,我們的 Redis 數(shù)據(jù)持久化還可以用「數(shù)據(jù)快照」的方式來做。

那什么是數(shù)據(jù)快照呢?

簡單來講,你可以這么理解:

你把 Redis 想象成一個水杯,向 Redis 寫入數(shù)據(jù),就相當于往這個杯子里倒水

此時你拿一個相機給這個水杯拍一張照片,拍照的這一瞬間,照片中記錄到這個水杯中水的容量,就是水杯的數(shù)據(jù)快照

e491050a-25e7-11ee-962d-dac502259ad0.jpg

也就是說,Redis 的數(shù)據(jù)快照,是記錄某一時刻下 Redis 中的數(shù)據(jù),然后只需要把這個數(shù)據(jù)快照寫到磁盤上就可以了。

它的優(yōu)勢在于,只在需要持久化時,把數(shù)據(jù)「一次性」寫入磁盤,其它時間都不需要操作磁盤。

基于這個方案,我們可以定時給 Redis 做數(shù)據(jù)快照,把數(shù)據(jù)持久化到磁盤上。

e49a56b4-25e7-11ee-962d-dac502259ad0.jpg

其實,上面說的這些持久化方案,就是 Redis 的「RDB」和「AOF」:

RDB:只持久化某一時刻的數(shù)據(jù)快照到磁盤上(創(chuàng)建一個子進程來做)

AOF:每一次寫操作都持久到磁盤(主線程寫內(nèi)存,根據(jù)策略可以配置由主線程還是子線程進行數(shù)據(jù)持久化)

它們的區(qū)別除了上面講到的,還有以下特點:

RDB 采用二進制 + 數(shù)據(jù)壓縮的方式寫磁盤,這樣文件體積小,數(shù)據(jù)恢復速度也快

AOF 記錄的是每一次寫命令,數(shù)據(jù)最全,但文件體積大,數(shù)據(jù)恢復速度慢

如果讓你來選擇持久化方案,你可以這樣選擇:

如果你的業(yè)務對于數(shù)據(jù)丟失不敏感,采用 RDB 方案持久化數(shù)據(jù)

如果你的業(yè)務對數(shù)據(jù)完整性要求比較高,采用 AOF 方案持久化數(shù)據(jù)

假設你的業(yè)務對 Redis 數(shù)據(jù)完整性要求比較高,選擇了 AOF 方案,那此時你又會遇到這些問題:

AOF 記錄每一次寫操作,隨著時間增長,AOF 文件體積會越來越大

這么大的 AOF 文件,在數(shù)據(jù)恢復時變得非常慢

這怎么辦?數(shù)據(jù)完整性要求變高了,恢復數(shù)據(jù)也變困難了?有沒有什么方法,可以縮小文件體積?提升恢復速度呢?

我們繼續(xù)來分析 AOF 的特點。

由于 AOF 文件中記錄的都是每一次寫操作,但對于同一個 key 可能會發(fā)生多次修改,我們只保留最后一次被修改的值,是不是也可以?

是的,這就是我們經(jīng)常聽到的「AOF rewrite」,你也可以把它理解為 AOF 「瘦身」。

我們可以對 AOF 文件定時 rewrite,避免這個文件體積持續(xù)膨脹,這樣在恢復時就可以縮短恢復時間了。

e49fbda2-25e7-11ee-962d-dac502259ad0.jpg

再進一步思考一下,還有沒有辦法繼續(xù)縮小 AOF 文件?

回顧一下我們前面講到的,RDB 和 AOF 各自的特點:

RDB 以二進制 + 數(shù)據(jù)壓縮方式存儲,文件體積小

AOF 記錄每一次寫命令,數(shù)據(jù)最全

我們可否利用它們各自的優(yōu)勢呢?

當然可以,這就是 Redis 的「混合持久化」。

具體來說,當 AOF rewrite 時,Redis 先以 RDB 格式在 AOF 文件中寫入一個數(shù)據(jù)快照,再把在這期間產(chǎn)生的每一個寫命令,追加到 AOF 文件中。因為 RDB 是二進制壓縮寫入的,這樣 AOF 文件體積就變得更小了。

e4a86146-25e7-11ee-962d-dac502259ad0.jpg

此時,你在使用 AOF 文件恢復數(shù)據(jù)時,這個恢復時間就會更短了!

Redis 4.0 以上版本才支持混合持久化。

這么一番優(yōu)化,你的 Redis 再也不用擔心實例宕機了,當發(fā)生宕機時,你就可以用持久化文件快速恢復 Redis 中的數(shù)據(jù)。

但這樣就沒問題了嗎?

仔細想一下,雖然我們已經(jīng)把持久化的文件優(yōu)化到最小了,但在恢復數(shù)據(jù)時依舊是需要時間的,在這期間你的業(yè)務應用還是會受到影響,這怎么辦?

我們來分析有沒有更好的方案。

一個實例宕機,只能用恢復數(shù)據(jù)來解決,那我們是否可以部署多個 Redis 實例,然后讓這些實例數(shù)據(jù)保持實時同步,這樣當一個實例宕機時,我們在剩下的實例中選擇一個繼續(xù)提供服務就好了。

沒錯,這個方案就是接下來要講的「主從復制:多副本」。

主從復制:多副本

此時,你可以部署多個 Redis 實例,架構模型就變成了這樣:

e4b2fd5e-25e7-11ee-962d-dac502259ad0.jpg

我們這里把實時讀寫的節(jié)點叫做 master,另一個實時同步數(shù)據(jù)的節(jié)點叫做 slave。

采用多副本的方案,它的優(yōu)勢是:

縮短不可用時間:master 發(fā)生宕機,我們可以手動把 slave 提升為 master 繼續(xù)提供服務

提升讀性能:讓 slave 分擔一部分讀請求,提升應用的整體性能

e4ba39f2-25e7-11ee-962d-dac502259ad0.jpg

這個方案不錯,不僅節(jié)省了數(shù)據(jù)恢復的時間,還能提升性能,那它有什么問題嗎?

你可以思考一下。

其實,它的問題在于:當 master 宕機時,我們需要「手動」把 slave 提升為 master,這個過程也是需要花費時間的。

雖然比恢復數(shù)據(jù)要快得多,但還是需要人工介入處理。一旦需要人工介入,就必須要算上人的反應時間、操作時間,所以,在這期間你的業(yè)務應用依舊會受到影響。

怎么解決這個問題?我們是否可以把這個切換的過程,變成自動化呢?

對于這種情況,我們需要一個「故障自動切換」機制,這就是我們經(jīng)常聽到的「哨兵」所具備的能力。

哨兵:故障自動切換

現(xiàn)在,我們可以引入一個「觀察者」,讓這個觀察者去實時監(jiān)測 master 的健康狀態(tài),這個觀察者就是「哨兵」。

具體如何做?

哨兵每間隔一段時間,詢問 master 是否正常

master 正常回復,表示狀態(tài)正常,回復超時表示異常

哨兵發(fā)現(xiàn)異常,發(fā)起主從切換

e4c3fe88-25e7-11ee-962d-dac502259ad0.jpg

有了這個方案,就不需要人去介入處理了,一切就變得自動化了,是不是很爽?

但這里還有一個問題,如果 master 狀態(tài)正常,但這個哨兵在詢問 master 時,它們之間的網(wǎng)絡發(fā)生了問題,那這個哨兵可能會誤判。

e4cd6fe0-25e7-11ee-962d-dac502259ad0.jpg

這個問題怎么解決?

答案是,我們可以部署多個哨兵,讓它們分布在不同的機器上,它們一起監(jiān)測 master 的狀態(tài),流程就變成了這樣:

多個哨兵每間隔一段時間,詢問 master 是否正常

master 正常回復,表示狀態(tài)正常,回復超時表示異常

一旦有一個哨兵判定 master 異常(不管是否是網(wǎng)絡問題),就詢問其它哨兵,如果多個哨兵(設置一個閾值)都認為 master 異常了,這才判定 master 確實發(fā)生了故障

多個哨兵經(jīng)過協(xié)商后,判定 master 故障,則發(fā)起主從切換

所以,我們用多個哨兵互相協(xié)商來判定 master 的狀態(tài),這樣一來,就可以大大降低誤判的概率。

哨兵協(xié)商判定 master 異常后,這里還有一個問題:由哪個哨兵來發(fā)起主從切換呢?

答案是,選出一個哨兵「領導者」,由這個領導者進行主從切換。

問題又來了,這個領導者怎么選?

想象一下,在現(xiàn)實生活中,選舉是怎么做的?

是的,投票。

在選舉哨兵領導者時,我們可以制定這樣一個選舉規(guī)則:

每個哨兵都詢問其它哨兵,請求對方為自己投票

每個哨兵只投票給第一個請求投票的哨兵,且只能投票一次

首先拿到超過半數(shù)投票的哨兵,當選為領導者,發(fā)起主從切換

其實,這個選舉的過程就是我們經(jīng)常聽到的:分布式系統(tǒng)領域中的「共識算法」。

什么是共識算法?

我們在多個機器部署哨兵,它們需要共同協(xié)作完成一項任務,所以它們就組成了一個「分布式系統(tǒng)」。

在分布式系統(tǒng)領域,多個節(jié)點如何就一個問題達成共識的算法,就叫共識算法。

在這個場景下,多個哨兵共同協(xié)商,選舉出一個都認可的領導者,就是使用共識算法完成的。

這個算法還規(guī)定節(jié)點的數(shù)量必須是奇數(shù)個,這樣可以保證系統(tǒng)中即使有節(jié)點發(fā)生了故障,剩余超過「半數(shù)」的節(jié)點狀態(tài)正常,依舊可以提供正確的結果,也就是說,這個算法還兼容了存在故障節(jié)點的情況。

共識算法在分布式系統(tǒng)領域有很多,例如 Paxos、Raft,哨兵選舉領導者這個場景,使用的是 Raft 共識算法,因為它足夠簡單,且易于實現(xiàn)。

現(xiàn)在,我們用多個哨兵共同監(jiān)測 Redis 的狀態(tài),這樣一來,就可以避免誤判的問題了,架構模型就變成了這樣:

e4d60452-25e7-11ee-962d-dac502259ad0.jpg

好了,到這里我們先小結一下。

你的 Redis 從最簡單的單機版,經(jīng)過數(shù)據(jù)持久化、主從多副本、哨兵集群,這一路優(yōu)化下來,你的 Redis 不管是性能還是穩(wěn)定性,都越來越高,就算節(jié)點發(fā)生故障,也不用擔心了。

你的 Redis 以這樣的架構模式部署,基本上就可以穩(wěn)定運行很長時間了。

...

隨著時間的發(fā)展,你的業(yè)務體量開始迎來了爆炸性增長,此時你的架構模型,還能夠承擔這么大的流量嗎?

我們一起來分析一下:

穩(wěn)定性:Redis 故障宕機,我們有哨兵 + 副本,可以自動完成主從切換

性能:讀請求量增長,我們可以再部署多個 slave,讀寫分離,分擔讀壓力

性能:寫請求量增長,但我們只有一個 master 實例,這個實例達到瓶頸怎么辦?

看到了么,當你的寫請求量越來越大時,一個 master 實例可能就無法承擔這么大的寫流量了。

要想完美解決這個問題,此時你就需要考慮使用「分片集群」了。

分片集群:橫向擴展

什么是「分片集群」?

簡單來講,一個實例扛不住寫壓力,那我們是否可以部署多個實例,然后把這些實例按照一定規(guī)則組織起來,把它們當成一個整體,對外提供服務,這樣不就可以解決集中寫一個實例的瓶頸問題嗎?

所以,現(xiàn)在的架構模型就變成了這樣:

e4dfae9e-25e7-11ee-962d-dac502259ad0.jpg

現(xiàn)在問題又來了,這么多實例如何組織呢?

我們制定規(guī)則如下:

每個節(jié)點各自存儲一部分數(shù)據(jù),所有節(jié)點數(shù)據(jù)之和才是全量數(shù)據(jù)

制定一個路由規(guī)則,對于不同的 key,把它路由到固定一個實例上進行讀寫

而分片集群根據(jù)路由規(guī)則所在位置的不同,還可以分為兩大類:

客戶端分片

服務端分片

客戶端分片指的是,key 的路由規(guī)則放在客戶端來做,就是下面這樣:

e4ed3046-25e7-11ee-962d-dac502259ad0.jpg

這個方案的缺點是,客戶端需要維護這個路由規(guī)則,也就是說,你需要把路由規(guī)則寫到你的業(yè)務代碼中。

如何做到不把路由規(guī)則耦合在業(yè)務代碼中呢?

你可以這樣優(yōu)化,把這個路由規(guī)則封裝成一個模塊,當需要使用時,集成這個模塊就可以了。

這就是 Redis Cluster 的采用的方案。

e4f7dc76-25e7-11ee-962d-dac502259ad0.jpg

Redis Cluster 內(nèi)置了哨兵邏輯,無需再部署哨兵。

當你使用 Redis Cluster 時,你的業(yè)務應用需要使用配套的 Redis SDK,這個 SDK 內(nèi)就集成好了路由規(guī)則,不需要你自己編寫了。

再來看服務端分片。

這種方案指的是,路由規(guī)則不放在客戶端來做,而是在客戶端和服務端之間增加一個「中間代理層」,這個代理就是我們經(jīng)常聽到的 Proxy。

而數(shù)據(jù)的路由規(guī)則,就放在這個 Proxy 層來維護。

這樣一來,你就無需關心服務端有多少個 Redis 節(jié)點了,只需要和這個 Proxy 交互即可。

Proxy 會把你的請求根據(jù)路由規(guī)則,轉(zhuǎn)發(fā)到對應的 Redis 節(jié)點上,而且,當集群實例不足以支撐更大的流量請求時,還可以橫向擴容,添加新的 Redis 實例提升性能,這一切對于你的客戶端來說,都是透明無感知的。

業(yè)界開源的 Redis 分片集群方案,例如 Twemproxy、Codis 就是采用的這種方案。

e5012ea2-25e7-11ee-962d-dac502259ad0.jpg

分片集群在數(shù)據(jù)擴容時,還涉及到了很多細節(jié),這塊內(nèi)容不是本文章重點,所以暫不詳述。

至此,當你使用分片集群后,對于未來更大的流量壓力,都可以從容面對了!

總結

好了,我們來總結一下,我們是如何一步步構建一個穩(wěn)定、高性能的 Redis 集群的。

首先,在使用最簡單的單機版 Redis 時,我們發(fā)現(xiàn)當 Redis 故障宕機后,數(shù)據(jù)無法恢復的問題,因此我們想到了「數(shù)據(jù)持久化」,把內(nèi)存中的數(shù)據(jù)也持久化到磁盤上一份,這樣 Redis 重啟后就可以從磁盤上快速恢復數(shù)據(jù)。

在進行數(shù)據(jù)持久化時,我們又面臨如何更高效地將數(shù)據(jù)持久化到磁盤的問題。之后我們發(fā)現(xiàn) Redis 提供了 RDB 和 AOF 兩種方案,分別對應了數(shù)據(jù)快照和實時的命令記錄。當我們對數(shù)據(jù)完整性要求不高時,可以選擇 RDB 持久化方案。如果對于數(shù)據(jù)完整性要求較高,那么可以選擇 AOF 持久化方案。

但是我們又發(fā)現(xiàn),AOF 文件體積會隨著時間增長變得越來越大,此時我們想到的優(yōu)化方案是,使用 AOF rewrite 的方式對其進行瘦身,減小文件體積,再后來,我們發(fā)現(xiàn)可以結合 RDB 和 AOF 各自的優(yōu)勢,在 AOF rewrite 時使用兩者結合的「混合持久化」方式,又進一步減小了 AOF 文件體積。

之后,我們發(fā)現(xiàn)盡管可以通過數(shù)據(jù)恢復的方式還原數(shù)據(jù),但恢復數(shù)據(jù)也是需要花費時間的,這意味著業(yè)務應用還是會受到影響。我們進一步優(yōu)化,采用「多副本」的方案,讓多個實例保持實時同步,當一個實例故障時,可以手動把其它實例提升上來繼續(xù)提供服務。

但是這樣也有問題,手動提升實例上來,需要人工介入,人工介入操作也需要時間,我們開始想辦法把這個流程變得自動化,所以我們又引入了「哨兵」集群,哨兵集群通過互相協(xié)商的方式,發(fā)現(xiàn)故障節(jié)點,并可以自動完成切換,這樣就大幅降低了對業(yè)務應用的影響。

最后,我們把關注點聚焦在如何支撐更大的寫流量上,所以,我們又引入了「分片集群」來解決這個問題,讓多個 Redis 實例分攤寫壓力,未來面對更大的流量,我們還可以添加新的實例,橫向擴展,進一步提升集群的性能。

至此,我們的 Redis 集群才得以長期穩(wěn)定、高性能的為我們的業(yè)務提供服務。

這里我畫了一個思維導圖,方便你更好地去理解它們之間的關系,以及演化的過程。

e50a7296-25e7-11ee-962d-dac502259ad0.png

后記

看到這里,我想你對如何構建一個穩(wěn)定、高性能的 Redis 集群問題時,應該會有自己的見解了。

其實,這篇文章所講的優(yōu)化思路,圍繞的主題就是「架構設計」的核心思想:

高性能:讀寫分離、分片集群

高可用:數(shù)據(jù)持久化、多副本、故障自動切換

易擴展:分片集群、橫向擴展

當我們講到哨兵集群、分片集群時,這還涉及到了「分布式系統(tǒng)」相關的知識:

分布式共識:哨兵領導者選舉

負載均衡:分片集群數(shù)據(jù)分片、數(shù)據(jù)路由

當然,除了 Redis 之外,對于構建任何一個數(shù)據(jù)集群,你都可以沿用這個思路去思考、去優(yōu)化,看看它們到底是如何做的。

例如當你在使用 MySQL 時,你可以思考一下 MySQL 與 Redis 有哪些不同?MySQL 為了做到高性能、高可用,又是如何做的?其實思路都是類似的。

我們現(xiàn)在到處可見分布式系統(tǒng)、數(shù)據(jù)集群,我希望通過這篇文章,你可以理解這些軟件是如何一步步演化過來的,在演化過程中,它們遇到了哪些問題,為了解決這些問題,這些軟件的設計者設計了怎樣的方案,做了哪些取舍?

你只有了解了其中的原理,掌握了分析問題、解決問題的能力,這樣在以后的開發(fā)過程中,或是學習其它優(yōu)秀軟件時,就能快速地找到「重點」,在最短的時間掌握它,并能在實際應用中發(fā)揮它們的優(yōu)勢。

其實這個思考過程,也是做「架構設計」的思路。在做軟件架構設計時,你面臨的場景就是發(fā)現(xiàn)問題、分析問題、解決問題,一步步去演化、升級你的架構,最后在性能、可靠性方面達到一個平衡。雖然各種軟件層出不窮,但架構設計的思想不會變,我希望你真正吸收的是這些思想,這樣才可以做到以不變應萬變。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 模型
    +關注

    關注

    1

    文章

    3226

    瀏覽量

    48809
  • MySQL
    +關注

    關注

    1

    文章

    804

    瀏覽量

    26531
  • Redis
    +關注

    關注

    0

    文章

    374

    瀏覽量

    10871

原文標題:如何從0到1構建一個穩(wěn)定、高性能的 Redis 集群?(附16張圖解)

文章出處:【微信號:DBDevs,微信公眾號:數(shù)據(jù)分析與開發(fā)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Redis緩存與Memcached的比較

    些關鍵特性和差異: 1. 數(shù)據(jù)存儲 Redis: Redis開源的鍵值存儲,支持多種數(shù)據(jù)結構,如字符串、列表、集合、有序集合、散列、位
    的頭像 發(fā)表于 12-18 09:33 ?102次閱讀

    某證券公司智能云投資交易云集群高性能分布式存儲應用

    某證券公司智能云投資交易云集群高性能分布式存儲應用
    的頭像 發(fā)表于 09-27 09:57 ?263次閱讀
    某證券公司智能云投資交易云<b class='flag-5'>集群</b><b class='flag-5'>高性能</b>分布式存儲應用

    云計算廠家使用WDS分布式存儲構建高性能超融合體機

    云計算廠家使用WDS分布式存儲構建高性能超融合體機
    的頭像 發(fā)表于 09-23 09:57 ?237次閱讀
    云計算廠家使用WDS分布式存儲<b class='flag-5'>構建</b>其<b class='flag-5'>高性能</b>超融合<b class='flag-5'>一</b>體機

    李老師暑假班PCB設計實戰(zhàn):01的進階之路

    ,基于Cadence23.1這業(yè)界領銜的EDA平臺,為大家呈上了01的全流程設計實戰(zhàn)教
    的頭像 發(fā)表于 08-30 12:20 ?647次閱讀
    李老師暑假班PCB設計實戰(zhàn):<b class='flag-5'>從</b><b class='flag-5'>0</b><b class='flag-5'>到</b><b class='flag-5'>1</b>的進階之路

    K8S學習教程(二):在 PetaExpress KubeSphere容器平臺部署高可用 Redis 集群

    并且需要手動重啟節(jié)點,相較之下,使用 PetaExpress 提供的 Kubernetes(k8s) 服務 進行 Redis 集群的部署,則展現(xiàn)出了顯著的優(yōu)勢: 1、安裝便捷:使用鏡像或者 yaml 配置文件即可
    的頭像 發(fā)表于 07-03 15:30 ?736次閱讀
    K8S學習教程(二):在 PetaExpress KubeSphere容器平臺部署高可用 <b class='flag-5'>Redis</b> <b class='flag-5'>集群</b>

    高性能計算集群的能耗優(yōu)化

    高性能計算(HighPerformanceComputing,HPC)是指利用大規(guī)模并行計算機集群來解決復雜的科學和工程問題的技術。高性能計算集群的應用領域非常廣泛,包括天氣預報、生物
    的頭像 發(fā)表于 05-25 08:27 ?416次閱讀
    <b class='flag-5'>高性能</b>計算<b class='flag-5'>集群</b>的能耗優(yōu)化

    Redis 開源協(xié)議調(diào)整,我們怎么辦?

    2 024 年 3 月 20 日, Redis 官方宣布, Redis 7.4 版本開始,Redis 將獲得源可用許可證 ( RSALv2 ) 和服務器端公共許可證 ( SSPLv
    的頭像 發(fā)表于 05-09 22:59 ?429次閱讀
    <b class='flag-5'>Redis</b> 開源協(xié)議調(diào)整,我們怎么辦?

    使用Redis和Spring?Ai構建rag應用程序

    隨著AI技術的不斷進步,開發(fā)者面臨著如何有效利用現(xiàn)有工具和技術來加速開發(fā)過程的挑戰(zhàn)。Redis與SpringAI的結合為Java開發(fā)者提供了強大的平臺,以便快速構建并部署響應式AI
    的頭像 發(fā)表于 04-29 08:04 ?1029次閱讀
    使用<b class='flag-5'>Redis</b>和Spring?Ai<b class='flag-5'>構建</b>rag應用程序

    Redis是怎么單體架構發(fā)展分布式緩存的?

    Redis 架構是如何步發(fā)展今天的樣子的?
    的頭像 發(fā)表于 04-20 15:37 ?799次閱讀
    <b class='flag-5'>Redis</b>是怎么<b class='flag-5'>從</b>單體架構發(fā)展<b class='flag-5'>到</b>分布式緩存的?

    DePIN 101實操指南:如何01創(chuàng)建DePIN項目

    相結合,為構建和管理物聯(lián)網(wǎng)網(wǎng)絡提供了種去中心化的方法。這種創(chuàng)新模式有望打破數(shù)據(jù)孤島,增強安全性,并提高制造業(yè)智慧城市等各個行業(yè)的運營效率。DePIN的落點就在于
    的頭像 發(fā)表于 04-14 08:05 ?132次閱讀
    DePIN 101實操指南:如何<b class='flag-5'>從</b><b class='flag-5'>0</b><b class='flag-5'>到</b><b class='flag-5'>1</b>創(chuàng)建<b class='flag-5'>一</b><b class='flag-5'>個</b>DePIN項目

    Redis開源版與Redis企業(yè)版,怎么選用?

    Redis開源版,二者有何不同?該如何選擇?Redis企業(yè)版Redis企業(yè)版基于開源Redis構建
    的頭像 發(fā)表于 04-04 08:04 ?1047次閱讀
    <b class='flag-5'>Redis</b>開源版與<b class='flag-5'>Redis</b>企業(yè)版,怎么選用?

    新版 Redis 不再“開源”,對使用者都有哪些影響?

    2024 年 3 月 20 日,Redis Labs 宣布 Redis 7.4 開始,將原先比較寬松的 BSD 源碼使用協(xié)議修改為 RSAv2和 SSPLv1協(xié)議。該變化意味著
    的頭像 發(fā)表于 03-27 22:30 ?488次閱讀
    新版 <b class='flag-5'>Redis</b> 不再“開源”,對使用者都有哪些影響?

    Redis官方搜索引擎來了,性能炸裂!

    RediSearch 是 Redis 模塊,為 Redis 提供查詢、二級索引和全文搜索功能。
    的頭像 發(fā)表于 02-21 10:01 ?2321次閱讀
    <b class='flag-5'>Redis</b>官方搜索引擎來了,<b class='flag-5'>性能</b>炸裂!

    01 微碩開發(fā)出系列高性能功率系磁材

    針對功率系磁材發(fā)展的四大方向,微碩推出了對應的四大系列的磁性材料,適用于多種終端產(chǎn)品。 “磁性材料的開發(fā)是0
    的頭像 發(fā)表于 01-25 15:17 ?569次閱讀
    <b class='flag-5'>從</b><b class='flag-5'>0</b><b class='flag-5'>到</b><b class='flag-5'>1</b> 微碩開發(fā)出<b class='flag-5'>一</b>系列<b class='flag-5'>高性能</b>功率系磁材

    Redis為LangChain定制AI代理——OpenGPTs

    OpenAI最近推出了OpenAIGPTs——構建定制化AI代理的無代碼“應用商店”,隨后LangChain開發(fā)了類似的開源工具OpenGPTs。OpenGPTs是款低代碼的開源
    的頭像 發(fā)表于 01-13 08:03 ?834次閱讀
    用<b class='flag-5'>Redis</b>為LangChain定制AI代理——OpenGPTs
    主站蜘蛛池模板: 交换娇妻呻吟声不停中文字幕| 久久久久久久久久毛片精品美女| 久草在线在线精品观看99| 蜜桃传媒在线播放| 羞羞影院午夜男女爽爽免费| 中文字幕在线观看网址| 东北小伙FREECHINESE野外| 激情女人花| 欧美区 bt| 亚洲人成在线观看一区二区| 99国产强伦姧在线看RAPE| 国产精品视频免费视频| 免费xxx成年大片| 亚洲AV精品乱码专区| bt成人社区| 精品久久久99大香线蕉| 日韩视频中文在线一区| 在线中文字幕网站| 国产成人精品久久久久婷婷| 麻豆国产MV视频| 亚洲AV成人片色在线观看网站 | 久见久热 这里只有精品| 日韩精品亚洲专区在线影院| 夜色帮首页| 国产高清精品国语特黄A片| 美女久久久| 亚洲精品国产AV成人毛片| xart欧美一区在线播放| 久久毛片免费看一区二区三区| 丝袜足控免费网站xx91| 99久久国产露脸国语对白| 久久 这里只精品 免费| 武侠古典久久亚洲精品| videossexo乌克兰| 久久在精品线影院| 亚洲精品蜜夜内射| 国产精品 中文字幕 亚洲 欧美| 欧美大片免费观看| 中文字幕午夜乱理片| 精品久久久久久久国产潘金莲| 失禁h啪肉尿出来高h|