大战熟女丰满人妻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,以及自動故障轉移。

目錄

返回頂部
主站蜘蛛池模板: 网站一级片 | 免费一级毛片无毒不卡 | 奇米影视网 | 日韩精品一区二区三区中文精品 | 不卡免费视频 | 国产区精品一区二区不卡中文 | 亚洲综合激情九月婷婷 | 亚洲成人在线免费视频 | 成人毛片免费网站 | 日韩日b | 一级欧美一级日韩毛片99 | 欧美精品午夜毛片免费看 | 久夜色精品国产一区二区三区 | 欧美啪啪毛片一区二区 | 国产乱码亚洲精品一区二区 | 国产一级免费视频 | 国产精品激情综合久久 | 狠狠色成人综合首页 | 国产成人精品.一二区 | 亚洲在线欧美 | 鲁丝丝国产一区二区 | 国产一级做a爱免费视频 | 无套嗨操 | 杨幂国产精品福利在线观看 | 深夜福利在线免费观看 | 思99热精品久久只有精品 | 日韩欧美中文字幕在线观看 | aaaaaa国产毛片孕妇版 | 国产尤物福利视频一区二区 | 成人精品视频一区二区三区 | 色www精品视频在线观看 | 777福利| 毛片a级放荡的护士hd | 亚洲精品国产第一区第二区国 | 狠色狠色狠狠色综合久久 | 天天干夜夜夜操 | 四虎影视免费在线 | 伊人色播 | 日日夜夜操操 | 国产精品久久久久久久久久98 | 日韩国产欧美一区二区三区 |