大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

面試題首頁 > Redis面試題

Redis集群面試題

001怎么實現Redis的高可用?

我們在項目中使用Redis,肯定不會是單點部署Redis服務的。因為,單點部署一旦宕機,就不可用了。為了實現高可用,通常的做法是,將數據庫復制多個副本以部署在不同的服務器上,其中一臺掛了也可以繼續提供服務。Redis 實現高可用有三種部署模式:主從模式,哨兵模式,集群模式。

002Redis主從復制的原理?

主從模式中Redis部署了多臺機器,有負責讀寫操作主節點和只負責讀操作從節點,從節點的數據來自主節點,實現原理就是主從復制機制。主從復制包括全量復制,增量復制兩種。一般當slave第一次啟動連接master,或者認為是第一次連接,就采用全量復制,全量復制流程如下:


1.slave發送sync命令到master。
2.master接收到SYNC命令后,執行bgsave命令,生成RDB全量文件。
3.master使用緩沖區,記錄RDB快照生成期間的所有寫命令。
4.master執行完bgsave后,向所有slave發送RDB快照文件。
5.slave收到RDB快照文件后,載入、解析收到的快照。
6.master使用緩沖區,記錄RDB同步期間生成的所有寫的命令。
7.master快照發送完畢后,開始向slave發送緩沖區中的寫命令;
8.salve接受命令請求,并執行來自master緩沖區的寫命令
redis2.8版本之后,已經使用psync來替代sync,因為sync命令非常消耗系統資源,psync的效率更高。

slave與master全量同步之后,master上的數據,如果再次發生更新,就會觸發增量復制。
當master節點發生數據增減時,就會觸發replicationFeedSalves()函數,接下來在 Master節點上調用的每一個命令會使用replicationFeedSlaves()來同步到Slave節點。執行此函數之前呢,master節點會判斷用戶執行的命令是否有數據更新,如果有數據更新的話,并且slave節點不為空,就會執行此函數。這個函數作用就是:把用戶執行的命令發送到所有的slave節點,讓slave節點執行。流程如下:

003什么是哨兵機制?

Redis的哨兵(sentinel) 系統用于管理多個 Redis 服務器,該系統執行以下三個任務:
1)監控(Monitoring): 哨兵(sentinel) 會不斷地檢查你的Master和Slave是否運作正常。
2)提醒(Notification):當被監控的某個 Redis出現問題時, 哨兵(sentinel) 可以通過 API 向管理員或者其他應用程序發送通知。
3)自動故障遷移(Automatic failover):當一個Master不能正常工作時,哨兵(sentinel) 會開始一次自動故障遷移操作,它會將失效Master的其中一個Slave升級為新的Master, 并讓失效Master的其他Slave改為復制新的Master; 當客戶端試圖連接失效的Master時,集群也會向客戶端返回新Master的地址,使得集群可以使用Master代替失效Master。

004哨兵機制的作用?

監控主數據庫和從數據庫是否正常運行。
主數據庫出現故障時,可以自動將從數據庫轉換為主數據庫,實現自動切換。

005哨兵機制(sentinel)的高可用是如何實現?

當主節點出現故障時,由Redis Sentinel自動完成故障發現和轉移,并通知應用方,實現高可用性。
其實整個過程只需要一個哨兵節點來完成,首先使用Raft算法(選舉算法)實現選舉機制,選出一個哨兵節點來完成轉移和通知

006哨兵核心點?

1)哨兵集群至少要 3 個節點,來確保自己的健壯性
2)redis主從 + sentinel的架構,是不會保證數據的零丟失的,它是為了保證redis集群的高可用.

007Redis哨兵主備切換的時候會有數據丟失問題嗎?

會有,主要考慮下面兩種情況。
1)主從異步復制導致的數據丟失:redis master 和slave 數據復制是異步的,這樣就有可能會出現部分數據還沒有復制到slave中,master就掛掉了,那么這部分的數據就會丟失了
2)腦裂導致的數據丟失:腦裂其實就是網絡分區導致的現象,比如,我們的master機器網絡突然不正常了發生了網絡分區,和其他的slave機器不能正常通信了,其實master并沒有掛還活著好好的呢,但是哨兵可不是吃閑飯的啊,它會認為master掛掉了啊,那么問題來了,client可能還在繼續寫master的呀,還沒來得及更新到新的master呢,那這部分數據就會丟失。

008slave 到master 選舉算法?

如果一個master被認為宕機了,而且majority多數哨兵都允許了主備切換,那么某個哨兵就會執行主備切換操作,此時首先要選舉一個slave來,主要通過下面幾個步驟
1)slave跟master斷開連接的時長(斷開時間越短優先級越高)
2)slave優先級(在配置文件中的配置,slave priority越低,優先級就越高。)
3)復制offset(哪個slave復制了越多的數據,offset越靠后,優先級就越高。)
4)run id(如果上面兩個條件都相同,那么選擇一個run id比較小的那個slave)

009介紹下Redis Cluster?

redis從3.0開始支持集群功能。redis集群采用無中心節點方式實現,無需proxy代理,客戶端直接與redis集群的每個節點連接,根據同樣的hash算法計算出key對應的slot,然后直接在slot對應的redis節點上執行命令。在redis看來,響應時間是最苛刻的條件,增加一層帶來的開銷是redis不能接受的。因此,redis實現了客戶端對節點的直接訪問,為了去中心化,節點之間通過gossip協議交換互相的狀態,以及探測新加入的節點信息。redis集群支持動態加入節點,動態遷移slot,以及自動故障轉移。

目錄

返回頂部
主站蜘蛛池模板: 日本午夜色 | 色综合天天综合网国产人 | 亚洲视频在线观看 | 网友自拍视频悠悠在线 | 亚洲第一伊人 | 成年人福利网站 | 成年视频免费 | 国产欧美精品一区二区 | 亚洲三级视频在线 | 欧美成人一区二区三区在线电影 | 色拍拍欧美视频在线看 | 97精品伊人| 免费黄色a | 四虎永久在线精品2022 | 天天干夜干 | 日本高清中文字幕一区二区三区 | 999久久久国产精品 999久久久精品视频在线观看 | 婷婷天天| 国产色在线视频 | 9999在线视频 | 亚洲视频免费观看 | 欧美特黄a级高清免费大片 欧美特黄a级猛片a级 | 91热久久免费频精品99欧美 | 欧美一级欧美一级毛片 | 漂亮女大学一级毛片 | 色视频一区| 国产欧美在线观看一区二区 | 亚洲精品综合在线 | 免费观看呢日本天堂视频 | 天天综合天天综合色在线 | 青青国产成人久久91网 | 欧美日韩精品一区二区三区四区 | 四虎影视免费永久在线观看 | 成人一区视频 | 亚洲精品久久久成人 | 激情亚州| 特黄aa级毛片免费视频播放 | 久久精品国产这里是免费 | 久久专区| 亚洲综合婷婷 | 欧美在线视频免费 |