redis 分布式

1、redis主從復制的原理
2、哨兵機制的原理
3、分布式方案對比

為什么需要集群

1、性能
2、擴展
3、可用性
可用性、數(shù)據(jù)安全、性能都可以通過搭建多個 Reids 服務實現(xiàn)。其中有一個是主節(jié) 點(master),可以有多個從節(jié)點(slave)。主從之間通過數(shù)據(jù)同步,存儲完全相同的數(shù) 據(jù)。如果主節(jié)點發(fā)生故障,則把某個從節(jié)點改成主節(jié)點,訪問新的主節(jié)點。

主從復制

配置

在每個slave的redis.conf增加

slaveof 192.168.8.203 6379

或者在啟動服務時通過參數(shù)指定 master 節(jié)點:

./redis-server --slaveof 192.168.8.203 6379

或在客戶端直接執(zhí)行 slaveof xx xx,使該 Redis 實例成為從節(jié)點。

啟動后,查看集群狀態(tài):

redis> info replication

從節(jié)點不能寫入數(shù)據(jù),只能從master節(jié)點同步數(shù)據(jù)。get成功,set失敗。
主節(jié)點寫入后,slave會自動從master同步數(shù)據(jù)
斷開復制

slaveof no one

主從復制原理

連接階段
1、slavenode啟動,在本地保存master node 的信息,host和ip
2、slave node 有個定時任務,每隔一秒鐘檢查是否有新的master node要連接和復制,如果發(fā)現(xiàn),就跟masternode建立socket網絡連接。如果連接成功,從節(jié)點為該socket建立一個專門復制工作的文件處理器,負責后續(xù)的復制工作。

數(shù)據(jù)同步階段
master nodde 第一次執(zhí)行全量復制,bgsave命令在本地創(chuàng)建一份rdb快照,發(fā)給slavenode。slave node 清除自己的舊數(shù)據(jù),然后用master的rdb來加載數(shù)據(jù)。

生成rdb文件時,master會把所有的寫命令緩存在內存里,在slavenode保存了rdb以后,再把新的寫命令復制給slavenode。

命令傳播階段
master node 持續(xù)將寫命令異步復制給slave node

如果有一個節(jié)點一段時間斷開連接了,有一個偏移量來記錄上一次復制到哪里了。

sentinel 哨兵

為redis提供高可用。

Sentinel 默認以每秒鐘 1 次的頻率向 Redis 服務節(jié)點發(fā)送 PING 命令。如果在 down-after-milliseconds 內都沒有收到有效回復,Sentinel 會將該服務器標記為下線 (主觀下線)。
這個時候 Sentinel 節(jié)點會繼續(xù)詢問其他的 Sentinel 節(jié)點,確認這個節(jié)點是否下線, 如果多數(shù) Sentinel 節(jié)點都認為 master 下線,master 才真正確認被下線(客觀下線), 這個時候就需要重新選舉 master。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容