中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis高可用技術解決方案有哪些

發布時間:2021-11-15 10:35:53 來源:億速云 閱讀:124 作者:小新 欄目:編程語言

小編給大家分享一下Redis高可用技術解決方案有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

本文主要針對Redis常見的幾種使用方式及其優缺點展開分析。

一、常見使用方式

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

Redis單副本;

Redis多副本(主從);

Redis Sentinel(哨兵);

Redis Cluster;

Redis自研。

二、各種使用方式的優缺點

1、Redis單副本

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

Redis高可用技術解決方案有哪些

優點:

架構簡單,部署方便;

高性價比:緩存使用時無需備用節點(單實例可用性可以用supervisor或crontab保證),當然為了滿足業務的高可用性,也可以犧牲一個備用節點,但同時刻只有一個實例對外提供服務;

高性能。

缺點:

不保證數據的可靠性;

在緩存使用,進程重啟后,數據丟失,即使有備用的節點解決高可用性,但是仍然不能解決緩存預熱問題,因此不適用于數據可靠性要求高的業務;

高性能受限于單核CPU的處理能力(Redis是單線程機制),CPU為主要瓶頸,所以適合操作命令簡單,排序、計算較少的場景。也可以考慮用Memcached替代。

2、Redis多副本(主從)

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

Redis高可用技術解決方案有哪些

優點:

高可靠性:一方面,采用雙機主備架構,能夠在主庫出現故障時自動進行主備切換,從庫提升為主庫提供服務,保證服務平穩運行;另一方面,開啟數據持久化功能和配置合理的備份策略,能有效的解決數據誤操作和數據異常丟失的問題;

讀寫分離策略:從節點可以擴展主庫節點的讀能力,有效應對大并發量的讀操作。

缺點:

故障恢復復雜,如果沒有RedisHA系統(需要開發),當主庫節點出現故障時,需要手動將一個從節點晉升為主節點,同時需要通知業務方變更配置,并且需要讓其它從庫節點去復制新主庫節點,整個過程需要人為干預,比較繁瑣;

主庫的寫能力受到單機的限制,可以考慮分片;

主庫的存儲能力受到單機的限制,可以考慮Pika;

原生復制的弊端在早期的版本中也會比較突出,如:Redis復制中斷后,Slave會發起psync,此時如果同步不成功,則會進行全量同步,主庫執行全量備份的同時可能會造成毫秒或秒級的卡頓;又由于COW機制,導致極端情況下的主庫內存溢出,程序異常退出或宕機;主庫節點生成備份文件導致服務器磁盤IO和CPU(壓縮)資源消耗;發送數GB大小的備份文件導致服務器出口帶寬暴增,阻塞請求,建議升級到最新版本。

3、Redis Sentinel(哨兵)

Redis Sentinel是社區版本推出的原生高可用解決方案,其部署架構主要包括兩部分:Redis Sentinel集群和Redis數據集群。

其中Redis Sentinel集群是由若干Sentinel節點組成的分布式集群,可以實現故障發現、故障自動轉移、配置中心和客戶端通知。Redis Sentinel的節點數量要滿足2n+1(n>=1)的奇數個。

Redis高可用技術解決方案有哪些

Redis高可用技術解決方案有哪些

優點:

Redis Sentinel集群部署簡單;

能夠解決Redis主從模式下的高可用切換問題;

很方便實現Redis數據節點的線形擴展,輕松突破Redis自身單線程瓶頸,可極大滿足Redis大容量或高性能的業務需求;

可以實現一套Sentinel監控一組Redis數據節點或多組數據節點。

缺點:

部署相對Redis主從模式要復雜一些,原理理解更繁瑣;

資源浪費,Redis數據節點中slave節點作為備份節點不提供服務;

Redis Sentinel主要是針對Redis數據節點中的主節點的高可用切換,對Redis的數據節點做失敗判定分為主觀下線和客觀下線兩種,對于Redis的從節點有對節點做主觀下線操作,并不執行故障轉移。

不能解決讀寫分離問題,實現起來相對復雜。

建議:

如果監控同一業務,可以選擇一套Sentinel集群監控多組Redis數據節點的方案,反之選擇一套Sentinel監控一組Redis數據節點的方案。

sentinel monitor 配置中的建議設置成Sentinel節點的一半加1,當Sentinel部署在多個IDC的時候,單個IDC部署的Sentinel數量不建議超過(Sentinel數量 – quorum)。

合理設置參數,防止誤切,控制切換靈敏度控制:

a. quorum

b. down-after-milliseconds 30000

c. failover-timeout 180000

d. maxclient

e. timeout

部署的各個節點服務器時間盡量要同步,否則日志的時序性會混亂。

Redis建議使用pipeline和multi-keys操作,減少RTT次數,提高請求效率。

自行搞定配置中心(zookeeper),方便客戶端對實例的鏈接訪問。

4、Redis Cluster

Redis Cluster是社區版推出的Redis分布式集群解決方案,主要解決Redis分布式方面的需求,比如,當遇到單機內存,并發和流量等瓶頸的時候,Redis Cluster能起到很好的負載均衡的目的。

Redis Cluster集群節點最小配置6個節點以上(3主3從),其中主節點提供讀寫操作,從節點作為備用節點,不提供請求,只作為故障轉移使用。

Redis Cluster采用虛擬槽分區,所有的鍵根據哈希函數映射到0~16383個整數槽內,每個節點負責維護一部分槽以及槽所印映射的鍵值數據。

Redis高可用技術解決方案有哪些

優點:

無中心架構;

數據按照slot存儲分布在多個節點,節點間數據共享,可動態調整數據分布;

可擴展性:可線性擴展到1000多個節點,節點可動態添加或刪除;

高可用性:部分節點不可用時,集群仍可用。通過增加Slave做standby數據副本,能夠實現故障自動failover,節點之間通過gossip協議交換狀態信息,用投票機制完成Slave到Master的角色提升;

降低運維成本,提高系統的擴展性和可用性。

缺點:

Client實現復雜,驅動要求實現Smart Client,緩存slots mapping信息并及時更新,提高了開發難度,客戶端的不成熟影響業務的穩定性。目前僅JedisCluster相對成熟,異常處理部分還不完善,比如常見的“max redirect exception”。

節點會因為某些原因發生阻塞(阻塞時間大于clutser-node-timeout),被判斷下線,這種failover是沒有必要的。

數據通過異步復制,不保證數據的強一致性。

多個業務使用同一套集群時,無法根據統計區分冷熱數據,資源隔離性較差,容易出現相互影響的情況。

Slave在集群中充當“冷備”,不能緩解讀壓力,當然可以通過SDK的合理設計來提高Slave資源的利用率。

Key批量操作限制,如使用mset、mget目前只支持具有相同slot值的Key執行批量操作。對于映射為不同slot值的Key由于Keys不支持跨slot查詢,所以執行mset、mget、sunion等操作支持不友好。

Key事務操作支持有限,只支持多key在同一節點上的事務操作,當多個Key分布于不同的節點上時無法使用事務功能。

Key作為數據分區的最小粒度,不能將一個很大的鍵值對象如hash、list等映射到不同的節點。

不支持多數據庫空間,單機下的redis可以支持到16個數據庫,集群模式下只能使用1個數據庫空間,即db 0。

復制結構只支持一層,從節點只能復制主節點,不支持嵌套樹狀復制結構。

避免產生hot-key,導致主庫節點成為系統的短板。

避免產生big-key,導致網卡撐爆、慢查詢等。

重試時間應該大于cluster-node-time時間。

Redis Cluster不建議使用pipeline和multi-keys操作,減少max redirect產生的場景。

5、Redis自研

Redis自研的高可用解決方案,主要體現在配置中心、故障探測和failover的處理機制上,通常需要根據企業業務的實際線上環境來定制化。

Redis高可用技術解決方案有哪些

Redis高可用技術解決方案有哪些

優點:

高可靠性、高可用性;

自主可控性高;

貼切業務實際需求,可縮性好,兼容性好。

缺點:

實現復雜,開發成本高;

需要建立配套的周邊設施,如監控,域名服務,存儲元數據信息的數據庫等;

維護成本高。

以上是“Redis高可用技術解決方案有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

福泉市| 宁波市| 武平县| 油尖旺区| 多伦县| 洮南市| 宜春市| 乌拉特前旗| 广水市| 清水河县| 甘谷县| 霍山县| 景东| 淮阳县| 洛扎县| 通城县| 千阳县| 普兰店市| 衡阳市| 安多县| 睢宁县| 鱼台县| 迁安市| 辽阳县| 彰武县| 牙克石市| 磐石市| 文水县| 平和县| 龙岩市| 襄汾县| 镇坪县| 定结县| 沾化县| 古交市| 五台县| 榆林市| 新蔡县| 特克斯县| 邻水| 文安县|