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

Redis 集群化的 3 種方案對比

數據庫 其他數據庫 Redis
我們簡單理一下這幾個方案的特點,以及它們之間的聯系。

之前我們提到,為了保證Redis的高可用,主要需要以下幾個方面:

  •  數據持久化
  •  主從復制
  •  自動故障恢復
  •   集群化

我們簡單理一下這幾個方案的特點,以及它們之間的聯系。

數據持久化本質上是為了做數據備份,有了數據持久化,當Redis宕機時,我們可以把數據從磁盤上恢復回來,但在數據恢復之前,服務是不可用的,而且數據恢復的時間取決于實例的大小,數據量越大,恢復起來越慢。Redis的持久化過程可以參考:Redis持久化是如何做的?RDB和AOF對比分析。

而主從復制則是部署多個副本節點,多個副本節點實時復制主節點的數據,當主節點宕機時,我們有完整的副本節點可以使用。另一方面,如果我們業務的讀請求量很大,主節點無法承受所有的讀請求,多個副本節點可以分擔讀請求,實現讀寫分離,這樣可以提高Redis的訪問性能。Redis 6.0 集群搭建實踐

但有個問題是,當主節點宕機時,我們雖然有完整的副本節點,但需要手動操作把從節點提升為主節點繼續提供服務,如果每次主節點故障,都需要人工操作,這個過程既耗時耗力,也無法保證及時性,高可用的程度將大打折扣。如何優化呢?

有了數據持久化、主從復制、故障自動恢復這些功能,我們在使用Redis時是不是就可以高枕無憂了?

答案是否定的,如果我們的業務大部分都是讀請求,可以使用讀寫分離提升性能。但如果寫請求量也很大呢?現在是大數據時代,像阿里、騰訊這些大體量的公司,每時每刻都擁有非常大的寫入量,此時如果只有一個主節點是無法承受的,那如何處理呢?

這就需要集群化!簡單來說實現方式就是,多個主從節點構成一個集群,每個節點存儲一部分數據,這樣寫請求也可以分散到多個主節點上,解決寫壓力大的問題。同時,集群化可以在節點容量不足和性能不夠時,動態增加新的節點,對進群進行擴容,提升性能。

從這篇文章開始,我們就開始介紹Redis的集群化方案。當然,集群化也意味著Redis部署架構更復雜,管理和維護起來成本也更高。而且在使用過程中,也會遇到很多問題,這也衍生出了不同的集群化解決方案,它們的側重點各不相同。

這篇文章我們先來整體介紹一下Redis集群化比較流行的幾個解決方案,先對它們有整體的認識,后面我會專門針對我比較熟悉的集群方案進行詳細的分析。

集群化方案

要想實現集群化,就必須部署多個主節點,每個主節點還有可能有多個從節點,以這樣的部署結構組成的集群,才能更好地承擔更大的流量請求和存儲更多的數據。

可以承擔更大的流量是集群最基礎的功能,一般集群化方案還包括了上面提到了數據持久化、數據復制、故障自動恢復功能,利用這些技術,來保證集群的高性能和高可用。

另外,優秀的集群化方案還實現了在線水平擴容功能,當節點數量不夠時,可以動態增加新的節點來提升整個集群的性能,而且這個過程是在線完成的,業務無感知。

業界主流的Redis集群化方案主要包括以下幾個:

  •  客戶端分片
  •  Codis
  •  Twemproxy
  •  Redis Cluster

它們還可以用是否中心化來劃分,其中客戶端分片、Redis Cluster屬于無中心化的集群方案,Codis、Tweproxy屬于中心化的集群方案。

是否中心化是指客戶端訪問多個Redis節點時,是直接訪問還是通過一個中間層Proxy來進行操作,直接訪問的就屬于無中心化的方案,通過中間層Proxy訪問的就屬于中心化的方案,它們有各自的優劣,下面分別來介紹。

客戶端分片

客戶端分片主要是說,我們只需要部署多個Redis節點,具體如何使用這些節點,主要工作在客戶端。

客戶端通過固定的Hash算法,針對不同的key計算對應的Hash值,然后對不同的Redis節點進行讀寫。

客戶端分片集群模式

客戶端分片需要業務開發人員事先評估業務的請求量和數據量,然后讓DBA部署足夠的節點交給開發人員使用即可。

這個方案的優點是部署非常方便,業務需要多少個節點DBA直接部署交付即可,剩下的事情就需要業務開發人員根據節點數量來編寫key的請求路由邏輯,制定一個規則,一般采用固定的Hash算法,把不同的key寫入到不同的節點上,然后再根據這個規則進行數據讀取。

可見,它的缺點是業務開發人員使用Redis的成本較高,需要編寫路由規則的代碼來使用多個節點,而且如果事先對業務的數據量評估不準確,后期的擴容和遷移成本非常高,因為節點數量發生變更后,Hash算法對應的節點也就不再是之前的節點了。

所以后來又衍生出了一致性哈希算法,就是為了解決當節點數量變更時,盡量減少數據的遷移和性能問題。

這種客戶端分片的方案一般用于業務數據量比較穩定,后期不會有大幅度增長的業務場景下使用,只需要前期評估好業務數據量即可。

Codis

隨著業務和技術的發展,人們越發覺得,當我需要使用Redis時,我們不想關心集群后面有多少個節點,我們希望我們使用的Redis是一個大集群,當我們的業務量增加時,這個大集群可以增加新的節點來解決容量不夠用和性能問題。

這種方式就是服務端分片方案,客戶端不需要關心集群后面有多少個Redis節點,只需要像使用一個Redis的方式去操作這個集群,這種方案將大大降低開發人員的使用成本,開發人員可以只需要關注業務邏輯即可,不需要關心Redis的資源問題。

多個節點組成的集群,如何讓開發人員像操作一個Redis時那樣來使用呢?這就涉及到多個節點是如何組織起來提供服務的,一般我們會在客戶端和服務端中間增加一個代理層,客戶端只需要操作這個代理層,代理層實現了具體的請求轉發規則,然后轉發請求到后面的多個節點上,因此這種方式也叫做中心化方式的集群方案,Codis就是以這種方式實現的集群化方案。

Proxy集群模式

Codis架構圖

Codis是由國人前豌豆莢大神開發的,采用中心化方式的集群方案。因為需要代理層Proxy來進行所有請求的轉發,所以對Proxy的性能要求很高,Codis采用Go語言開發,兼容了開發效率和性能。

Codis包含了多個組件:

  •  codis-proxy:主要負責對請求的讀寫進行轉發
  •  codis-dashbaord:統一的控制中心,整合了數據轉發規則、故障自動恢復、數據在線遷移、節點擴容縮容、自動化運維API等功能
  •  codis-group:基于Redis 3.2.8版本二次開發的Redis Server,增加了異步數據遷移功能
  •  codis-fe:管理多個集群的UI界面

可見Codis的組件還是挺多的,它的功能非常全,除了請求轉發功能之外,還實現了在線數據遷移、節點擴容縮容、故障自動恢復等功能。

Codis的Proxy就是負責請求轉發的組件,它內部維護了請求轉發的具體規則,Codis把整個集群劃分為1024個槽位,在處理讀寫請求時,采用crc32Hash算法計算key的Hash值,然后再根據Hash值對1024個槽位取模,最終找到具體的Redis節點。

Codis最大的特點就是可以在線擴容,在擴容期間不影響客戶端的訪問,也就是不需要停機。這對業務使用方是極大的便利,當集群性能不夠時,就可以動態增加節點來提升集群的性能。

為了實現在線擴容,保證數據在遷移過程中還有可靠的性能,Codis針對Redis進行了修改,增加了針對異步遷移數據相關命令,它基于Redis 3.2.8進行開發,上層配合Dashboard和Proxy組件,完成對業務無損的數據遷移和擴容功能。

因此,要想使用Codis,必須使用它內置的Redis,這也就意味著Codis中的Redis是否能跟上官方最新版的功能特性,可能無法得到保障,這取決于Codis的維護方,目前Codis已經不再維護,所以使用Codis時只能使用3.2.8版的Redis,這是一個痛點。

另外,由于集群化都需要部署多個節點,因此操作集群并不能完全像操作單個Redis一樣實現所有功能,主要是對于操作多個節點可能產生問題的命令進行了禁用或限制,具體可參考Codis不支持的命令列表。

但這不影響它是一個優秀的集群化方案,由于我司使用Redis集群方案較早,那時Redis Cluster還不夠成熟,所以我司使用的Redis集群方案就是Codis。

目前我的工作主要是圍繞Codis展開的,我們公司對Codis進行了定制開發,還對Redis進行了一些改造,讓Codis支持了跨多個數據中心的數據同步,因此我對Codis的代碼比較熟悉,后面會專門寫一些文章來剖析Codis的實現原理,學習它的原理,這對我們理解分布式存儲有很大的幫助!

Twemproxy

Twemproxy是由Twitter開源的集群化方案,它既可以做Redis Proxy,還可以做Memcached Proxy。

它的功能比較單一,只實現了請求路由轉發,沒有像Codis那么全面有在線擴容的功能,它解決的重點就是把客戶端分片的邏輯統一放到了Proxy層而已,其他功能沒有做任何處理。

Tweproxy推出的時間最久,在早期沒有好的服務端分片集群方案時,應用范圍很廣,而且性能也極其穩定。

但它的痛點就是無法在線擴容、縮容,這就導致運維非常不方便,而且也沒有友好的運維UI可以使用。Codis就是因為在這種背景下才衍生出來的。

Redis Cluster

采用中間加一層Proxy的中心化模式時,這就對Proxy的要求很高,因為它一旦出現故障,那么操作這個Proxy的所有客戶端都無法處理,要想實現Proxy的高可用,還需要另外的機制來實現,例如Keepalive。

而且增加一層Proxy進行轉發,必然會有一定的性能損耗,那么除了客戶端分片和上面提到的中心化的方案之外,還有比較好的解決方案么?

Redis官方推出的Redis Cluster另辟蹊徑,它沒有采用中心化模式的Proxy方案,而是把請求轉發邏輯一部分放在客戶端,一部分放在了服務端,它們之間互相配合完成請求的處理。

Redis Cluster是在Redis 3.0推出的,早起的Redis Cluster由于沒有經過嚴格的測試和生產驗證,所以并沒有廣泛推廣開來。也正是在這樣的背景下,業界衍生了出了上面所說的中心化集群方案:Codis和Tweproxy。

但隨著Redis的版本迭代,Redis官方的Cluster也越來越穩定,更多人開始采用官方的集群化方案。也正是因為它是官方推出的,所以它的持續維護性可以得到保障,這就比那些第三方的開源方案更有優勢。

Redis Cluster沒有了中間的Proxy代理層,那么是如何進行請求的轉發呢?

Redis把請求轉發的邏輯放在了Smart Client中,要想使用Redis Cluster,必須升級Client SDK,這個SDK中內置了請求轉發的邏輯,所以業務開發人員同樣不需要自己編寫轉發規則,Redis Cluster采用16384個槽位進行路由規則的轉發。

沒有了Proxy層進行轉發,客戶端可以直接操作對應的Redis節點,這樣就少了Proxy層轉發的性能損耗。

Redis Cluster也提供了在線數據遷移、節點擴容縮容等功能,內部還內置了哨兵完成故障自動恢復功能,可見它是一個集成所有功能于一體的Cluster。因此它在部署時非常簡單,不需要部署過多的組件,對于運維極其友好。

Redis Cluster在節點數據遷移、擴容縮容時,對于客戶端的請求處理也做了相應的處理。當客戶端訪問的數據正好在遷移過程中時,服務端與客戶端制定了一些協議,來告知客戶端去正確的節點上訪問,幫助客戶端訂正自己的路由規則。

雖然Redis Cluster提供了在線數據遷移的功能,但它的遷移性能并不高,遷移過程中遇到大key時還有可能長時間阻塞遷移的兩個節點,這個功能相較于Codis來說,Codis數據遷移性能更好。這里先了解一個大概就好,后面我會專門針對Codis和Redis Cluster在線遷移功能的性能對比寫一些文章。

現在越來越多的公司開始采用Redis Cluster,有能力的公司還在它的基礎上進行了二次開發和定制,來解決Redis Cluster存在的一些問題,我們期待Redis Cluster未來有更好的發展。

總結

比較完了這些集群化方案,下面我們來總結一下。

 

業界主流的集群化方案就是以上這些,并對它們的特點和區別做了簡單的介紹,我們在開發過程中選擇自己合適的集群方案即可,但最好是理解它們的實現原理,在使用過程中遇到問題才可以更從容地去解決。 

 

責任編輯:龐桂玉 來源: 民工哥技術之路
相關推薦

2024-08-27 08:29:49

2020-11-24 10:13:02

Redis集群數據庫

2018-07-09 08:38:13

集群Redis方案

2016-09-13 14:05:24

Spark集群管理模式

2021-10-19 07:27:07

邊緣集群管理

2020-11-20 09:39:19

Linux 審計操作系統

2010-06-01 10:37:11

MySQL修改root

2018-07-10 08:42:45

Oracle高可用集群

2020-05-18 10:52:10

集群SessionRedis

2023-04-03 10:00:00

Redis分布式

2019-05-15 10:59:50

開發者技能工具

2019-10-22 10:48:48

Redis集群架構

2010-05-07 12:53:50

Oracle提高SQL

2019-07-25 15:32:35

分布式事務微服務系統架構

2022-05-07 09:20:38

智能客服模塊方案

2025-10-09 09:28:50

2010-05-19 15:42:08

2021-01-12 08:43:29

Redis ListStreams

2023-01-30 08:12:53

訂單超時自動取消延長訂單

2020-08-31 06:43:13

Redis集群模式
點贊
收藏

51CTO技術棧公眾號

91九色国产在线播放| www成人在线观看| 欧美激情日韩| 综合自拍亚洲综合图不卡区| 伊人久久五月天| 亚洲v欧美v另类v综合v日韩v| 在线观看免费视频一区二区三区| 国产欧美高清视频在线| 欧美主播一区二区三区| 国产精品免费一区二区三区| 污片在线免费观看| 一本色道久久综合亚洲精品不卡| 3atv在线一区二区三区| 国产免费成人在线| 国内精品偷拍| 亚洲一区日韩精品中文字幕| 亚洲色图清纯唯美| 一本一道久久a久久精品综合| 精品淫伦v久久水蜜桃| 国产精品狼人久久影院观看方式| 欧美极品少妇与黑人| www婷婷av久久久影片| 激情久久久久久久久久久久久久久久| 日本精品视频在线| 免费电影视频在线看 | 国产精品主播| 日韩视频精品在线| 亚洲精品一二三四五区| 国产成人精品免费网站| 久久天天躁狠狠躁夜夜躁| 九色自拍视频在线观看| 日韩av影片| 在线成人av| 国产91精品免费| 欧美成人精品高清在线播放| 手机在线视频你懂的| 1234区在线观看视频免费| 亚洲高清在线一区| 国精一区二区| 久久影院视频免费| 久久这里只有精品8| 中文字幕亚洲一区在线观看| 香港日本韩国三级网站| 亚洲成人最新网站| 国内精品小视频| 欧美电影h版| 国产日韩欧美精品一区| 99久久精品免费看国产四区 | 虎白女粉嫩尤物福利视频| 婷婷综合在线观看| 在线国产福利网站| 国产精品美女www爽爽爽| 中文字幕超清在线免费观看| 成人资源在线| 国产日韩欧美成人| 欧美色网在线| 精品日韩在线观看| 成人欧美一区| 亚洲日本护士毛茸茸| 99蜜桃臀久久久欧美精品网站| 国产99久久久国产精品潘金网站| 久久国产精品久久精品国产| 午夜国产精品视频| 日本一区二区三区免费看| 亚洲黄色免费| 精品伊人久久大线蕉色首页| 欧美综合视频| 亚洲国产一区二区三区在线播| 99久久99久久免费精品蜜臀| 午夜精品电影在线观看| 国产探花一区| 日产精品一线二线三线芒果| 成人一区在线观看| 超清福利视频| 最新欧美精品一区二区三区| 成人永久免费网站| 日本高清成人免费播放| 国产人成在线视频| 亚洲第一精品福利| 影音先锋成人资源网站| 中文在线一区二区| 伊人影院在线视频| 米奇777在线欧美播放| 久久精品国产96久久久香蕉 | 色就色 综合激情| 欧美r级在线| 日韩一区二区在线视频| 亚洲成人免费| 日韩一本精品| 国产精品三级视频| 国产网红女主播精品视频| 欧美激情欧美激情在线五月| 男女精品网站| 欧美日韩一级大片网址| 日韩福利在线观看| 国产精品高潮在线| 亚洲成人在线| 高清国产一区| 亚洲一区免费在线观看| 精品欧美日韩精品| 51蜜桃传媒精品一区二区| 亚洲超丰满肉感bbw| 川上优av中文字幕一区二区| 亚洲一级片在线看| 中文字幕影音在线| www插插插无码视频网站| 91高清视频免费| 九九热精品视频| 久久精品亚洲精品国产欧美 | 日韩伦理一区| 欧美成人蜜桃| 精品成人在线观看| 国产欧美日韩视频在线观看| 狠狠色丁香久久婷婷综| 国产一线二线在线观看 | 超薄肉色丝袜足j调教99| 成人欧美一区二区三区在线播放| 国产a久久麻豆| 欧美老女人另类| 凹凸国产熟女精品视频| 欧美大奶子在线| 日韩欧美大尺度| 国产一区二区三区日韩精品| 成人亚洲在线观看| 国外视频精品毛片| 久久综合九色欧美综合狠狠| a级日韩大片| 免费a在线看| av网站免费在线| 成年人黄色在线观看| 国产综合久久久久| 亚洲精品永久免费| 婷婷丁香激情综合| 激情欧美一区二区三区在线观看| 视频国产一区| 国产亚洲亚洲国产一二区| 妞干网在线观看| 成人毛片视频网站| 欧美精品国产精品日韩精品| 亚洲男人天堂2024| 91视频在线看| 中文字幕日韩一区二区不卡 | av片在线观看网站| 欧美挠脚心网站| 成年人视频在线观看免费| 国产成人综合一区| 久久99久久精品国产| 色女孩综合影院| 国产午夜精品在线观看| 亚洲优女在线| 中文字幕欧美人与畜| 欧美最猛性xxxxx亚洲精品| 久久精品国产久精国产一老狼| 制服视频三区第一页精品| 亚洲一二三四久久| 欧美视频中文字幕| 欧美一a一片一级一片| 成人在线观看你懂的| 国产不卡一区二区在线观看| 成人国产在线激情| 欧美精品一区二区三区国产精品 | 国产福利电影在线| 日本三级韩国三级欧美三级| 亚洲色精品三区二区一区| 黄色特一级视频| 精品少妇在线视频| 波多野结衣在线| 色yeye免费人成网站在线观看| 黄色免费在线观看网站| 中文字幕在线视频网站| 日韩免费大片| 午夜性色一区二区三区免费视频| 天堂在线中文资源| 99久久婷婷国产综合精品 | 亚洲天堂成人网| 欧美日韩亚洲国产一区| 在线观看国产成人av片| 深夜福利成人| 在线成人性视频| 久久国产欧美精品| 国产一区二区香蕉| 午夜精品久久久久久久白皮肤 | 在线视频国内自拍亚洲视频| 久久久精品午夜少妇| 精品国产导航| 天天干天天爽天天射| 中文字幕在线亚洲三区| 欧洲成人免费视频| 欧洲精品一区二区| 国产精品久久久久久妇女6080| 网曝91综合精品门事件在线| 动漫一区在线| 日韩精品系列| 大j8黑人w巨大888a片| 成年人网站大全| 色吊丝在线永久观看最新版本| 99热一区二区| 韩日毛片在线观看| 成人综合一区| 2017欧美狠狠色|