精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Redis 三種集群模式,你還傻傻分不清嗎?

存儲 Redis
沒有什么分布式問題是加一個節點不能解決的,如果有就再加一個。Redis 作為一種高性能的內存數據庫,普遍用于目前主流的分布式架構系統中。為了提高系統的容錯率,使用多實例的 Redis 也是必不可免的,但同樣復雜度也相比單實例高出很多。本文主要會介紹 Redis 在多機數據庫下的三種實現。

 前言

Redis 作為一種高性能的內存數據庫,普遍用于目前主流的分布式架構系統中。為了提高系統的容錯率,使用多實例的 Redis 也是必不可免的,但同樣復雜度也相比單實例高出很多。本文主要會介紹 Redis 在多機數據庫下的三種實現。

主從模式

Redis 的主從模式指的就是主從復制。

用戶可以通過 SLAVEOF 命令或者配置的方式,讓一個服務器去復制另一個服務器即成為它的從服務器。

主從模式架構

 

 

 

 

Redis 如何實現主從模式?

Redis 的從服務器在向主服務器發起同步時,一般會使用 SYNC 或 PSYNC 命令。

初次同步

當從服務器收到 SLAVEOF 命令后,會向其主服務器執行同步操作,進入主從復制流程。

  1. 從服務器向主服務器發起SYNC 或 PSYNC 命令
  2. 主服務器執行 BGSAVE命令,生成 RDB 文件,并使用緩存區記錄從現在開始的所有寫命令
  3. RDB 文件生成完成后,主服務器會將其發送給從服務器
  4. 從服務器載入 RDB 文件,將自己的數據庫狀態同步更新為主服務器執行 BGSAVE命令時的狀態。
  5. 主服務器將緩沖區的所有寫命令發送給從服務器,從服務將執行這些寫命令,數據庫狀態同步為主服務器最新狀態。

 

 

 

 

SYNC 與 PSYNC 的區別

當主從同步完成后,如果此時從服務器宕機了一段時間,重新上線后勢必要重新同步一下主服務器,SYNC與 PSYNC命令的區別就在于斷線后重復制階段處理的方式不同。

  • SYNC

從服務器重新向主服務器發起 SYNC命令,主服務器將所有數據再次重新生成 RDB 快照發給從服務器開始同步

  • PSYNC

從服務器重新向主服務器發起 PSYNC命令。主服務器根據雙方數據的偏差量判斷是否是需要完整重同步還是僅將斷線期間執行過的寫命令發給從服務器。

明顯可以發先 PSYNC 相比 SYNC 效率好很多,要知道同步所有數據是一個非常費資源(磁盤 IO,網絡)的操作,而如果只是因為短暫網絡不穩定就同步所有資源是非常不值的。因此 Redis 在 2.8 版本后都開始使用 PSYNC 進行復制

PSYNC 如何實現部分重同步?

實現部分重同步主要靠三部分

1. 記錄復制偏移量

主服務器與從服務器都會維護一個復制偏移量。

  • 當主服務器向從服務器發送 N 個字節的數據后,會將自己的復制偏移量 +N。
  • 當從服務器收到主服務器 N 個字節大小數據后,也會將自己的復制偏移量 +N。

當主從雙方數據是同步時,這個偏移量是相等的。而一旦有個從服務器斷線一段時間而少收到了部分數據。那么此時主從雙方的服務器偏移量是不相等的,而他們的差值就是少傳輸的字節數量。如果少傳輸的數據量不是很大,沒有超過主服務器的復制積壓緩沖區大小,那么將會直接將緩沖區內容發送給從服務器避免完全重同步。反之還是需要完全重同步的。

2. 復制積壓緩沖區

復制積壓緩沖區是由主服務器維護的一個先進先出的字節隊列,默認大小是 1mb。每當向從服務器發送寫命令時,都會將這些數據存入這個隊列。每個字節都會記錄自己的復制偏移量。從服務器在重連時會將自己的復制偏移量發送給主服務器,如果該復制偏移量之后的數據存在于復制積壓緩沖區中,則僅需要將之后的數據發送給從服務器即可。

3. 記錄服務器 ID

當執行主從同步時,主服務器會將自己的服務器 ID (一般是自動生成的 UUID ) 發送給從服務器。從服務器在斷線恢復后會判斷該 ID 是否為當前連接的主服務器。如果是同一個 ID 則代表主服務器沒變嘗試部分重同步。如果不是同一個 ID 代表主服務有變動,則會與主服務器完全重同步。

具體流程圖如下:

 

 

 

 

Redis 哨兵模式 (Sentinel)

Redis 主從模式雖然能做到很好的數據備份,但是他并不是高可用的。一旦主服務器點宕機后,只能通過人工去切換主服務器。因此 Redis 的哨兵模式也就是為了解決主從模式的高可用方案。

哨兵模式引入了一個 Sentinel 系統去監視主服務器及其所屬的所有從服務器。一旦發現有主服務器宕機后,會自動選舉其中的一個從服務器升級為新主服務器以達到故障轉義的目的。

同樣的 Sentinel 系統也需要達到高可用,所以一般也是集群,互相之間也會監控。而 Sentinel 其實本身也是一個以特殊模式允許 Redis 服務器。

 

 

 

 

實現原理

1.Sentinel 與主從服務器建立連接

  • Sentinel 服務器啟動之后便會創建于主服務器的 命令連接 ,并訂閱主服務器的 sentinel:hello 頻道以創建 訂閱連接
  • Sentinel 默認會每 10 秒向主服務器發送 INFO 命令,主服務器則會返回主服務器本身的信息,以及其所有從服務器的信息。
  • 根據返回的信息,Sentinel 服務器如果發現有新的從服務器上線后也會像連接主服務器時一樣,向從服務器同時創建命令連接與訂閱連接。

2.判定主服務器是否下線

每一個 Sentinel 服務器每秒會向其連接的所有實例包括主服務器,從服務器,其他 Sentinel 服務器)發送 PING命令,根據是否回復 PONG 命令來判斷實例是否下線。

判定主觀下線

如果實例在收到 PING命令的 down-after-milliseconds 毫秒內(根據配置),未有有效回復。則該實例將會被發起 PING命令的 Sentinel 認定為主觀下線。

判定客觀下線

當一臺主服務器被某個 Sentinel 服務器判定為客觀下線時,為了確保該主服務器是真的下線, Sentinel 會向 Sentinel 集群中的其他的服務器確認,如果判定主服務器下線的 Sentinel 服務器達到一定數量時(一般是 N/2+1),那么該主服務器將會被判定為客觀下線,需要進行故障轉移。

3.選舉領頭 Sentinel

當有主服務器被判定客觀下線后,Sentinel 集群會選舉出一個領頭 Sentinel 服務器來對下線的主服務器進行故障轉移操作。整個選舉其實是基于 RAFT 一致性算法而實現的,大致的思路如下:

  • 每個發現主服務器下線的 Sentinel 都會要求其他 Sentinel 將自己設置為局部領頭 Sentinel。
  • 接收到的 Sentinel 可以同意或者拒絕
  • 如果有一個 Sentinel 得到了半數以上 Sentinel 的支持則在此次選舉中成為領頭 Sentinel。
  • 如果給定時間內沒有選舉出領頭 Sentinel,那么會再一段時間后重新開始選舉,直到選舉出領頭 Sentinel。

4.選舉新的主服務器

領頭服務器會從從服務中挑選出一個最合適的作為新的主服務器。挑選的規則是:

  • 選擇健康狀態的從節點,排除掉斷線的,最近沒有回復過 INFO命令的從服務器。
  • 選擇優先級配置高的從服務器
  • 選擇復制偏移量大的服務器(表示數據最全)

挑選出新的主服務器后,領頭服務器將會向新主服務器發送 SLAVEOF no one命令將他真正升級為主服務器,并且修改其他從服務器的復制目標,將舊的主服務器設為從服務器,以此來達到故障轉移。

Redis Cluster

Redis 哨兵模式實現了高可用,讀寫分離,但是其主節點仍然只有一個,即寫入操作都是在主節點中,這也成為了性能的瓶頸。

因此 Redis 在 3.0 后加入了 Cluster 模式,它采用去無心節點方式實現,集群將會通過分片方式保存數據庫中的鍵值對

節點

一個 Redis 集群中會由多個節點組成,每個節點都是互相連接的,會保存自己與其他節點的信息。節點之間通過 gossip 協議交換互相的狀態,以及保新加入的節點信息。

 

 

 

 

數據的 Sharding

Redis Cluster 的整個數據庫將會被分為 16384 個哈希槽,數據庫中的每個鍵都屬于這 16384 個槽中的其中一個,集群中的每個節點可以處 0 個或者最多 16384 個槽。

設置槽指派

通過命令 CLUSTER ADDSLOTS [slot...] 命令我們可以將一個或多個槽指派給某個節點。

如 127.0.0.1:7777> CLUSTER ADDSLOTS 1 2 3 4 5 命令就是將 1,2,3,4,5 號插槽指派給本地端口號為 7777 的節點負責。

設置后節點將會將槽指派的信息發送給其他集群,讓其他集群更新信息。

計算鍵屬于哪個槽

 

  1. def slot_number(key): 
  2.     return CRC16(key) & 16383 

計算哈希槽位置其實使用的是 CRC16 算法對鍵值進行計算后再對 16383 取模得到最終所屬插槽。

也可以使用 CLUSTER KEYSLOT 進行查看。

Sharding 流程

  1. 當客戶端發起對鍵值對的操作指令后,將任意分配給其中某個節點
  2. 節點計算出該鍵值所屬插槽
  3. 判斷當前節點是否為該鍵所屬插槽
  4. 如果是的話直接執行操作命令
  5. 如果不是的話,向客戶端返回 moved 錯誤,moved 錯誤中將帶著正確的節點地址與端口,客戶端收到后可以直接轉向至正確節點

 

 

 

 

Redis Cluster 的高可用

Redis 的每個節點都可以分為主節點與對應從節點。主節點負責處理槽,從節點負責復制某個主節點,并在主節點下線時,代替下線的主節點。

 

 

 

 

如何實現故障轉移

其實與哨兵模式類似,Redis 的每個節點都會定期向其他節點發送 Ping 消息,以此來檢測對方是否在線。當一個節點檢測到另一個節點下線后,會將其設置為疑似下線。如果一個機器中,有半數以上的節點將某個主節點設為疑似下線,則該節點將會被標記為已下線狀態,并開始執行故障轉移。

  1. 通過 raft 算法從下線主節點的從節點中選出新的主節點
  2. 被選中的從節點執行 SLAVEOF no one 命令,成為新的主節點
  3. 新的主節點撤銷掉已下線主節點的槽指派,并將這些槽指給自己
  4. 新的主節點向集群中廣播自己由從節點變為主節點
  5. 新的主節點開始接受和負責自己處理槽的有關命令請求

總結

本文主要介紹了 Redis 三種集群模式,總結一下

主從模式 可以實現讀寫分離,數據備份。但是并不是「高可用」的

哨兵模式 可以看做是主從模式的「高可用」版本,其引入了 Sentinel 對整個 Redis 服務集群進行監控。但是由于只有一個主節點,因此仍然有寫入瓶頸。

Cluster 模式 不僅提供了高可用的手段,同時數據是分片保存在各個節點中的,可以支持高并發的寫入與讀取。當然實現也是其中最復雜的。

責任編輯:華軒 來源: 企鵝杏仁技術站
相關推薦

2019-06-18 09:45:19

正向代理反向代理IT

2022-04-15 11:47:47

LVSNginx負載均衡

2021-08-04 09:00:55

閉包Go調用

2018-12-17 12:30:05

Kubernetes存儲存儲卷

2022-05-05 13:54:37

SPI機制APISPI

2021-01-13 08:10:26

接口IEnumeratorIEnumerable

2021-01-22 08:37:02

二進制Binary SemaReentrant L

2021-10-06 23:31:45

HibernateJPASpring Data

2021-05-09 21:57:08

數據倉庫Olap

2021-03-23 10:45:23

CookieSession前端

2021-03-10 08:56:37

Zookeeper

2021-07-27 07:31:16

JavaArrayList數組

2022-05-15 21:52:04

typeTypeScriptinterface

2021-08-02 12:50:45

sessiontokenJava

2024-02-29 09:08:56

Encoding算法加密

2020-11-11 07:32:18

MySQL InnoDB 存儲

2020-10-30 08:20:04

SD卡TF卡存儲

2021-02-14 22:33:23

Java字符字段

2018-05-22 16:24:20

HashMapJavaJDK

2020-03-03 17:35:09

Full GCMinor
點贊
收藏

51CTO技術棧公眾號

妖精视频一区二区| 国产中文一区二区三区| 2020国产精品自拍| 久久精品99国产精品酒店日本| 久久精品国产一区二区三区日韩| 四虎永久免费在线| 国产极品久久久久久久久波多结野 | 热久久久久久久| 亚洲精品ady| 91传媒免费视频| 国产伦一区二区| 日韩国产一区二区| 欧美综合亚洲图片综合区| 精品高清视频| 日韩精品人妻中文字幕| 日韩中文字幕在线一区| 亚洲欧美日韩一区二区| 成人福利视频在线观看| 99热6这里只有精品| 岛国精品在线| 国产精品乱人伦| 国产精品综合网站| 国产大屁股喷水视频在线观看| 136福利精品导航| 亚洲综合av网| 国产精品日韩高清| 日本中文字幕免费| 亚洲成人日韩| 欧美xxx久久| 久久99久久久久久| 香蕉av在线播放| 男人天堂欧美日韩| 伊人伊成久久人综合网小说| av污在线观看| 国产婷婷视频在线| 99久久www免费| 9191久久久久久久久久久| 中文字幕成人一区| 99在线小视频| 亚洲精品裸体| 一本色道久久88综合亚洲精品ⅰ| 亚洲图片欧美另类| 都市激情综合| 国产精品不卡在线| eeuss一区二区三区| 亚洲欧美精品一区二区三区| 欧美精品一区二区久久| 91精品国产综合久久婷婷香蕉| 无码人妻丰满熟妇区毛片| 在线观看av黄网站永久| 国产成人亚洲精品青草天美| 91精品国产91久久久久久久久| 欧美性猛交xxxx乱| 久久三级中文| 狠狠综合久久av一区二区小说| 四虎永久国产精品| 亚洲黄色a级片| 视频精品一区二区| 欧美激情精品久久久| 成年人在线观看av| 精品一区二区三区免费看| 在线播放中文字幕一区| 尤物av无码色av无码| av片在线看| 成人动漫一区二区在线| 国产欧美精品在线播放| 中文字幕免费观看视频| 亚洲承认在线| 久久精品99无色码中文字幕| 天天操夜夜操av| 亚洲8888| 精品国精品自拍自在线| 国产高清成人久久| 精品国产亚洲一区二区三区| 欧美一级艳片视频免费观看| 黑人糟蹋人妻hd中文字幕| 最新国产露脸在线观看| 国产欧美精品一区| 精品久久久三级| 蜜桃视频在线免费| 不卡的av在线播放| 欧美一区二区在线| 午夜激情小视频| 久久奇米777| 一本一道久久a久久精品综合| 青青久在线视频免费观看| 粉嫩欧美一区二区三区高清影视| 国产区亚洲区欧美区| 日韩欧美在线观看免费| 在线成人av| 国产精品久久久精品| 六月丁香激情综合| 麻豆精品视频在线| 国产精品日韩av| 亚洲大尺度在线观看| 免费视频一区| 欧美中文在线观看| 欧美日韩综合在线观看| 亚洲精品看片| 国产综合久久久久| 天堂网在线资源| 99视频精品全部免费在线| 99在线热播| 精品资源在线看| 久久久国产午夜精品 | 超碰福利在线观看| 国产一区二区三区香蕉| 久久一区二区三区欧美亚洲| 色呦呦视频在线| 中文字幕乱码一区二区免费| 日韩欧美精品久久| 在线毛片网站| 欧美性xxxx18| 99免费视频观看| 日韩中文在线播放| 亚洲精品不卡在线| 91插插插插插插| 美女网站一区二区| 亚洲aa中文字幕| 亚洲国产精品国自产拍久久| 久久久午夜电影| 91丨porny丨探花| 性爽视频在线| 精品污污网站免费看| 自拍偷拍一区二区三区四区| 在线播放成人| 日韩精品一区二| 成人免费看片载| 日韩欧美一区免费| 国产精品jizz在线观看麻豆| 中文字幕在线2018| 久久婷婷国产综合国色天香| 国产日本在线播放| 亚洲国产欧美国产第一区| 精品国产一区二区三区四区在线观看 | 欧美日韩一二三四| 青草热久免费精品视频| 熟妇高潮一区二区三区| 亚洲国产中文字幕| 春日野结衣av| 欧美日韩国产网站| 亚洲人成网在线播放| 日韩在线观看免| 久久99精品视频| 精品不卡在线| 乱人伦视频在线| 欧美日韩亚洲高清一区二区| 成人免费无遮挡无码黄漫视频| 国产午夜久久| 成人久久久久久| 成人高清免费在线| 欧美性猛交xxxx免费看| 最新在线黄色网址| 亚洲xxx拳头交| 成人h猎奇视频网站| 精品国产白色丝袜高跟鞋| 欧美精品一级二级三级| 午夜精品福利在线视频| 成人性生交大片免费看视频在线| 五月天国产一区| 激情小说亚洲| 亚洲精品v欧美精品v日韩精品| 自拍偷拍欧美亚洲| 国产一区二区三区四| 欧美性视频在线播放| 夜鲁夜鲁夜鲁视频在线播放| 亚洲精品永久免费精品| 久久久全国免费视频| 青青草国产精品97视觉盛宴| 亚洲mv在线看| 精品一区91| 欧美亚洲伦理www| 精品人妻少妇嫩草av无码专区| 亚洲一区二区三区免费视频| 特级西西人体wwwww| 国产精品www994| 国产欧美精品日韩精品| 成人日批视频| 日韩精品免费在线观看| 久久久久久久9999| 91在线观看高清| 国产成人一区二区三区别| 日韩av黄色| 有码中文亚洲精品| av中文字幕免费在线观看| 亚洲电影激情视频网站| 国偷自产av一区二区三区麻豆| 日本欧美国产| 国产精品吹潮在线观看| 成人在线直播| 亚洲女同精品视频| 丁香社区五月天| 91美女蜜桃在线| 国产黄视频在线| 欧美wwwww| 国产综合视频在线观看| av在线中出| 亚洲国产精品久久久久秋霞不卡| 啪啪小视频网站| 欧美激情综合在线| 成人免费看片载| 久久电影网站中文字幕| 国产午夜福利100集发布| 久久国产影院| 久热这里只精品99re8久| 国产一区二区三区黄网站| 北条麻妃久久精品| 欧美精品a∨在线观看不卡| 欧美变态口味重另类| 中文字幕视频在线播放| 欧美视频免费在线观看| 久久免费精彩视频| 亚洲色图第一区| 中文字幕伦理片| 中文字幕乱码中文乱码51精品| 亚洲黄色在线观看| 国产美女永久免费| 欧美视频一区二区三区在线观看| 日本一级免费视频| 日韩成人av在线资源| 欧美成人一区在线| 国产日韩在线观看一区| 色综合久久66| 婷婷综合在线视频| 国产一区二区电影| 国产免费999| 亚洲国产精品综合久久久| 日韩av一区二区三区在线| 日韩mv欧美mv国产网站| 精品国产一区二区三区免费 | 粉嫩老牛aⅴ一区二区三区| 国产极品国产极品| 综合亚洲深深色噜噜狠狠网站| 亚洲一二三av| 在线成人h网| 国产乱子伦精品视频| 中文字幕日韩欧美精品高清在线| 国产精品美女xx| 91精品导航| 成人av免费看| www.丝袜精品| 国产精品一区久久| 456成人影院在线观看| 国产精品扒开腿做爽爽爽的视频| 欧美一区 二区 三区| 久久久国产成人精品| 快射视频在线观看| 欧美成人精品一区二区| av免费在线免费| 欧美精品久久久久a| 国产高清在线| 精品99999| 亚洲熟妇无码久久精品| 午夜影视日本亚洲欧洲精品| 国产美女网站视频| 国产精品嫩草99a| 国产天堂av在线| 久久综合视频网| 五月婷婷综合在线观看| 香蕉久久国产| 国产精品免费一区| 国产成+人+综合+亚洲欧美| 国产精品久久久久不卡| 国产一区二区色噜噜| 国产人妖伪娘一区91| 三级欧美日韩| 国产亚洲精品自在久久| 午夜不卡影院| 日韩免费在线免费观看| 在线观看一区二区三区三州| 精品国产一级毛片| 亚洲精品国产一区| 久久久久观看| 91精品在线一区| 欧美男体视频| 国产精品永久在线| 国产欧美88| 国产三区二区一区久久| 国产一区二区区别| 国模精品娜娜一二三区| 91精品视频在线看| 成人高潮aa毛片免费| 亚洲精品美女久久 | 亚洲国产美女精品久久久久∴| 亚洲色欧美另类| 久久精品视频在线播放| 都市激情国产精品| 欧美另类老女人| 免费黄色网址在线观看| 这里只有精品视频| 人成免费电影一二三区在线观看| 在线中文字幕日韩| av美女在线观看| 国产精品视频专区| 久久久久久久久久久久久久久久久久久久| 青青成人在线| 国产综合婷婷| 久久国产精品国产精品| av高清久久久| 日韩一级片av| 亚洲精品ww久久久久久p站| 久久99久久99精品免费看小说| 亚洲国产综合色| 国产又大又长又粗| 69堂精品视频| 日夜干在线视频| 九色精品美女在线| 国产69精品久久久久9999人| 国产亚洲精品美女久久久m| 自拍偷拍欧美专区| 中文av一区二区三区| 91麻豆成人久久精品二区三区| 久久国产波多野结衣| 欧美性高清videossexo| 色久视频在线播放| 国产69精品99久久久久久宅男| av午夜在线观看| 亚洲精品欧美日韩| 日韩精品水蜜桃| 可以免费观看av毛片| fc2成人免费人成在线观看播放 | 91九色在线视频| heyzo久久| 玩弄japan白嫩少妇hd| 菠萝蜜视频在线观看一区| 国产亚洲精品久久久久久打不开| 欧美日韩国产高清一区二区| 国产日韩免费视频| 亚洲最大中文字幕| 三级成人黄色影院| 精品在线观看一区二区| av不卡在线| 天天操天天爱天天爽| 久久久久久久久久久久久女国产乱| 久久久久久久伊人| 色噜噜狠狠成人中文综合 | 中文字幕在线官网| 精品免费日产一区一区三区免费| 国内成人在线| 在线观看亚洲免费视频| 亚洲综合成人网| 刘亦菲久久免费一区二区| 亚洲免费伊人电影在线观看av| 欧美日韩经典丝袜| 国产精品福利在线| 精品精品久久| 超碰在线97免费| 国产精品你懂的在线欣赏| 亚洲最大成人在线视频| 日韩一区av在线| 99久久999| 777久久精品一区二区三区无码| 国产成人高清在线| 青青草原在线免费观看视频| 在线一区二区三区四区五区 | 美女av一区二区三区| 欧美高清hd| 国产人妻777人伦精品hd| 91免费观看视频在线| 日韩黄色一级视频| 精品国产自在精品国产浪潮| 日本亚州欧洲精品不卡| 国产美女主播在线| 久久综合色8888| 中国老头性行为xxxx| 久久精品国产v日韩v亚洲| 视频精品一区| 国产高清精品在线观看| 国产精品久久久久久久久免费相片| www.av网站| 欧美尤物巨大精品爽| 色999国产精品| www.欧美com| 欧美性生交xxxxx久久久| 亚洲s色大片| 国内精品久久国产| 日韩成人精品在线| 毛茸茸多毛bbb毛多视频| 在线观看免费一区| 天堂av最新在线| 91色琪琪电影亚洲精品久久| 一区二区视频欧美| 一级在线观看视频| 精品国产99国产精品| 三级成人在线| 欧美另类视频在线| 国产视频一区欧美| 三级黄色免费观看| 亚洲黄色在线看| 精品国产一区二区三区2021| 国产免费一区二区三区视频| 国产精品初高中害羞小美女文| 五月天久久久久久| 成人激情视频在线| 免费在线亚洲欧美| 欧美激情一区二区视频| 亚洲性xxxx| 成人在线观看免费播放| 欧美亚洲黄色片| 一区在线观看视频|