日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis 单机模式,主从模式,哨兵模式(sentinel),集群模式(cluster),第三方模式优缺点分析

發(fā)布時間:2024/9/20 数据库 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis 单机模式,主从模式,哨兵模式(sentinel),集群模式(cluster),第三方模式优缺点分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Redis 的幾種常見使用方式包括:

  • 單機模式
  • 主從模式
  • 哨兵模式(sentinel)
  • 集群模式(cluster)
  • 第三方模式

單機模式

Redis 單副本,采用單個 Redis 節(jié)點部署架構,沒有備用節(jié)點實時同步數(shù)據(jù),不提供數(shù)據(jù)持久化和備份策略,適用于數(shù)據(jù)可靠性要求不高的純緩存業(yè)務場景。

優(yōu)點:

  • 架構簡單,部署方便。
  • 高性價比:緩存使用時無需備用節(jié)點(單實例可用性可以用 supervisor 或 crontab 保證),當然為了滿足業(yè)務的高可用性,也可以犧牲一個備用節(jié)點,但同時刻只有一個實例對外提供服務。
  • 高性能。
  • 缺點:

  • 不保證數(shù)據(jù)的可靠性。
  • 在緩存使用,進程重啟后,數(shù)據(jù)丟失,即使有備用的節(jié)點解決高可用性,但是仍然不能解決緩存預熱問題,因此不適用于數(shù)據(jù)可靠性要求高的業(yè)務。
  • 高性能受限于單核 CPU 的處理能力(Redis 是單線程機制),CPU 為主要瓶頸,所以適合操作命令簡單,排序、計算較少的場景。也可以考慮用 Memcached 替代。
  • 主從模式

    Redis 采用主從(可以多從)部署結構,相較于單副本而言最大的特點就是主從實例間數(shù)據(jù)實時同步,并且提供數(shù)據(jù)持久化和備份策略。主從實例部署在不同的物理服務器上,根據(jù)公司的基礎環(huán)境配置,可以實現(xiàn)同時對外提供服務和讀寫分離策略。

    優(yōu)點:

  • 高可靠性:一方面,采用雙機主備架構,能夠在主庫出現(xiàn)故障時自動進行主備切換,從庫提升為主庫提供服務,保證服務平穩(wěn)運行;另一方面,開啟數(shù)據(jù)持久化功能和配置合理的備份策略,能有效的解決數(shù)據(jù)誤操作和數(shù)據(jù)異常丟失的問題。
  • 讀寫分離策略:從節(jié)點可以擴展主庫節(jié)點的讀能力,有效應對大并發(fā)量的讀操作。
  • 缺點:

  • 故障恢復復雜,如果沒有 RedisHA 系統(tǒng)(需要開發(fā)),當主庫節(jié)點出現(xiàn)故障時,需要手動將一個從節(jié)點晉升為主節(jié)點,同時需要通知業(yè)務方變更配置,并且需要讓其它從庫節(jié)點去復制新主庫節(jié)點,整個過程需要人為干預,比較繁瑣。
  • 主庫的寫能力受到單機的限制,可以考慮分片。
  • 主庫的存儲能力受到單機的限制,可以考慮 Pika。
  • 原生復制的弊端在早期的版本中也會比較突出,如:Redis 復制中斷后,Slave 會發(fā)起 psync,此時如果同步不成功,則會進行全量同步,主庫執(zhí)行全量備份的同時可能會造成毫秒或秒級的卡頓;又由于 COW 機制,導致極端情況下的主庫內(nèi)存溢出,程序異常退出或宕機;主庫節(jié)點生成備份文件導致服務器磁盤 IO 和 CPU(壓縮)資源消耗;發(fā)送數(shù) GB 大小的備份文件導致服務器出口帶寬暴增,阻塞請求,建議升級到最新版本。
  • 哨兵模式

    Redis Sentinel 是 2.8 版本后推出的原生高可用解決方案,其部署架構主要包括兩部分:Redis Sentinel 集群和 Redis 數(shù)據(jù)集群。其中 Redis Sentinel 集群是由若干 Sentinel 節(jié)點組成的分布式集群,可以實現(xiàn)故障發(fā)現(xiàn)、故障自動轉移、配置中心和客戶端通知。Redis Sentinel 的節(jié)點數(shù)量要滿足 2n+1(n>=1)的奇數(shù)個。

    優(yōu)點:

  • Redis Sentinel 集群部署簡單。
  • 能夠解決 Redis 主從模式下的高可用切換問題。
  • 很方便實現(xiàn) Redis 數(shù)據(jù)節(jié)點的線形擴展,輕松突破 Redis 自身單線程瓶頸,可極大滿足 Redis 大容量或高性能的業(yè)務需求。
  • 可以實現(xiàn)一套 Sentinel 監(jiān)控一組 Redis 數(shù)據(jù)節(jié)點或多組數(shù)據(jù)節(jié)點。
  • 缺點:

  • 部署相對 Redis 主從模式要復雜一些,原理理解更繁瑣。
  • 資源浪費,Redis 數(shù)據(jù)節(jié)點中 slave 節(jié)點作為備份節(jié)點不提供服務。
  • Redis Sentinel 主要是針對 Redis 數(shù)據(jù)節(jié)點中的主節(jié)點的高可用切換,對 Redis 的數(shù)據(jù)節(jié)點做失敗判定分為主觀下線和客觀下線兩種,對于 Redis 的從節(jié)點有對節(jié)點做主觀下線操作,并不執(zhí)行故障轉移。
  • 不能解決讀寫分離問題,實現(xiàn)起來相對復雜。
  • 集群模式

    Redis Cluster 是 3.0 版后推出的 Redis 分布式集群解決方案,主要解決 Redis 分布式方面的需求,比如,當遇到單機內(nèi)存,并發(fā)和流量等瓶頸的時候,Redis Cluster 能起到很好的負載均衡的目的。Redis Cluster 集群節(jié)點最小配置 6 個節(jié)點以上(3 主 3 從),其中主節(jié)點提供讀寫操作,從節(jié)點作為備用節(jié)點,不提供請求,只作為故障轉移使用。Redis Cluster 采用虛擬槽分區(qū),所有的鍵根據(jù)哈希函數(shù)映射到 0~16383 個整數(shù)槽內(nèi),每個節(jié)點負責維護一部分槽以及槽所印映射的鍵值數(shù)據(jù)。

    優(yōu)點:

  • 無中心架構。
  • 數(shù)據(jù)按照 slot 存儲分布在多個節(jié)點,節(jié)點間數(shù)據(jù)共享,可動態(tài)調(diào)整數(shù)據(jù)分布。
  • 可擴展性:可線性擴展到 1000 多個節(jié)點,節(jié)點可動態(tài)添加或刪除。
  • 高可用性:部分節(jié)點不可用時,集群仍可用。通過增加 Slave 做 standby 數(shù)據(jù)副本,能夠實現(xiàn)故障自動 failover,節(jié)點之間通過 gossip 協(xié)議交換狀態(tài)信息,用投票機制完成 Slave 到 Master 的角色提升。
  • 降低運維成本,提高系統(tǒng)的擴展性和可用性。
  • 缺點:

  • Client 實現(xiàn)復雜,驅動要求實現(xiàn) Smart Client,緩存 slots mapping 信息并及時更新,提高了開發(fā)難度,客戶端的不成熟影響業(yè)務的穩(wěn)定性。目前僅 JedisCluster 相對成熟,異常處理部分還不完善,比如常見的“max redirect exception”。
  • 節(jié)點會因為某些原因發(fā)生阻塞(阻塞時間大于 clutser-node-timeout),被判斷下線,這種 failover 是沒有必要的。
  • 數(shù)據(jù)通過異步復制,不保證數(shù)據(jù)的強一致性。
  • 多個業(yè)務使用同一套集群時,無法根據(jù)統(tǒng)計區(qū)分冷熱數(shù)據(jù),資源隔離性較差,容易出現(xiàn)相互影響的情況。
  • Slave 在集群中充當“冷備”,不能緩解讀壓力,當然可以通過 SDK 的合理設計來提高 Slave 資源的利用率。
  • Key 批量操作限制,如使用 mset、mget 目前只支持具有相同 slot 值的 Key 執(zhí)行批量操作。對于映射為不同 slot 值的 Key 由于 Keys 不支持跨 slot 查詢,所以執(zhí)行 mset、mget、sunion 等操作支持不友好。
  • Key 事務操作支持有限,只支持多 key 在同一節(jié)點上的事務操作,當多個 Key 分布于不同的節(jié)點上時無法使用事務功能。
  • Key 作為數(shù)據(jù)分區(qū)的最小粒度,不能將一個很大的鍵值對象如 hash、list 等映射到不同的節(jié)點。
  • 不支持多數(shù)據(jù)庫空間,單機下的 redis 可以支持到 16 個數(shù)據(jù)庫,集群模式下只能使用 1 個數(shù)據(jù)庫空間,即 db 0。
  • 復制結構只支持一層,從節(jié)點只能復制主節(jié)點,不支持嵌套樹狀復制結構。
  • 避免產(chǎn)生 hot-key,導致主庫節(jié)點成為系統(tǒng)的短板。
  • 避免產(chǎn)生 big-key,導致網(wǎng)卡撐爆、慢查詢等。
  • 重試時間應該大于 cluster-node-time 時間。
  • Redis Cluster 不建議使用 pipeline 和 multi-keys 操作,減少 max redirect 產(chǎn)生的場景。
  • 優(yōu)點多,缺點也多啊,事物都有雙面性。

    第三方模式

    第三方模式比較少,已知的有 codis,但是好像有段時間沒更新了。

    來源:https://www.cnblogs.com/leffss/p/11993646.html

    總結

    以上是生活随笔為你收集整理的Redis 单机模式,主从模式,哨兵模式(sentinel),集群模式(cluster),第三方模式优缺点分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。