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

目錄

返回頂部
主站蜘蛛池模板: 91精品国产91久久 | 久久精品亚洲精品国产欧美 | 在线视频综合视频免费观看 | 啪啪网站免费 | 婷婷激情网站 | 天啪天天久久天天综合啪 | 久久91精品国产91久久跳舞 | 成人久久在线 | 福利网站在线观看 | 国产精品永久免费视频观看 | 日本精品在线观看视频 | 欧美成人老熟妇暴潮毛片 | 99re这里有免费视频精品 | 久久在线一区 | 国产精品不卡 | 五月天激情亚洲婷婷在线 | 4hu最新网址 | 亚洲 日本 欧美 中文幕 | 国产国拍亚洲精品午夜不卡17 | 亚洲欧美日韩国产一区图片 | 午夜国产精品久久久久 | 91精品国产乱码在线观看 | 色综合网址 | 久久国产精品国产精品 | 国产一级精品毛片 | 一区在线观看 | 亚洲香蕉久久一区二区三区四区 | 天天干天天玩 | 日日狠狠太爽爽 | 久久这里只有精品99 | 中文字幕一二三区乱码老 | 欧美日本一道免费一区三区 | 国产成人精品高清在线 | 国产精品高清全国免费观看 | 亚洲天堂久久精品 | 久久亚洲国产欧洲精品一 | 热久久99影院 | 9热在线精品视频观看 | ww亚洲ww亚在线观看 | 国产精品98视频全部国产 | 国产在线精品观看 |