成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官:你的 Redis 怎么做讀寫分離的?

開發 前端 Redis
前幾天,一個讀者去面試,面試官就問了他關于Redis讀寫分離是怎么做的?本來腦子里也有不少知識要講,不過猛的被面試官一問給當場干懵逼了........。

 [[410354]]

前幾天,一個讀者去面試,面試官就問了他關于Redis讀寫分離是怎么做的?本來腦子里也有不少知識要講,不過猛的被面試官一問給當場干懵逼了........。

這不,昨天晚上他在微信上問我,所以,今天給大家分享一下這方面的知識點。

背景

Redis 不管主從版還是集群規格,replica作為備庫不對外提供服務,只有在發生HA的時候,replica提升為master后才承擔讀寫流量。 這種架構讀寫請求都在master上完成,一致性較高,但性能受到master數量的限制 。經常有用戶數據較少,但因為流量或者并發太高而不得不升級到更大的集群規格。

為滿足讀多寫少的業務場景,最大化節約用戶成本,云數據庫Redis版推出了讀寫分離規格,為用戶提供透明、高可用、高性能、高靈活的讀寫分離服務

架構

Redis集群模式有redis-proxy、master、replica、HA等幾個角色。在讀寫分離實例中,新增read-only replica角色來承擔讀流量,replica作為熱備不提供服務,架構上保持對現有集群規格的兼容性。redis-proxy按權重將讀寫請求轉發到master或者某個read-only replica上;HA負責監控DB節點的健康狀態,異常時發起主從切換或重搭read-only replica,并更新路由。

一般來說,根據master和read-only replica的數據同步方式,可以分為兩種架構:星型復制和鏈式復制。

星型復制

星型復制就是將所有的read-only replica直接和master保持同步,每個read-only replica之間相互獨立,任何一個節點異常不影響到其他節點,同時因為復制鏈比較短,read-only replica上的復制延遲比較小。

 

 

 

 

Redis是單進程單線程模型,主從之間的數據復制也在主線程中處理,read-only replica數量越多,數據同步對master的CPU消耗就越嚴重,集群的寫入性能會隨著read-only replica的增加而降低。此外,星型架構會讓master的出口帶寬隨著read-only replica的增加而成倍增長。Master上較高的CPU和網絡負載會抵消掉星型復制延遲較低的優勢,因此,星型復制架構會帶來比較嚴重的擴展問題,整個集群的性能會受限于master。

鏈式復制

鏈式復制將所有的read-only replica組織成一個復制鏈,如下圖所示,master只需要將數據同步給replica和復制鏈上的第一個read-only replica。

鏈式復制解決了星型復制的擴展問題,理論上可以無限增加read-only replica的數量,隨著節點的增加整個集群的性能也可以基本上呈線性增長。

 

 

 

 

鏈式復制的架構下,復制鏈越長,復制鏈末端的read-only replica和master之間的同步延遲就越大,考慮到讀寫分離主要使用在對一致性要求不高的場景下,這個缺點一般可以接受。但是如果復制鏈中的某個節點異常,會導致下游的所有節點數據都會大幅滯后。更加嚴重的是這可能帶來全量同步,并且全量同步將一直傳遞到復制鏈的末端,這會對服務帶來一定的影響。為了解決這個問題,讀寫分離的Redis都使用阿里云優化后的binlog復制版本,最大程度的降低全量同步的概率。

更多關于Redis技術棧的學習,可以關注民工哥技術之路公眾號,在Redis專欄中查看相關的技術文章、面試題及答案,非常詳細,持續更新中。

Redis讀寫分離優勢

透明兼容

讀寫分離和普通集群規格一樣,都使用了redis-proxy做請求轉發,多分片令使用存在一定的限制,但從主從升級單分片讀寫分離,或者從集群升級到多分片的讀寫分離集群可以做到完全兼容。

用戶和redis-proxy建立連接,redis-proxy會識別出客戶端連接發送過來的請求是讀還是寫,然后按照權重作負載均衡,將請求轉發到后端不同的DB節點中,寫請求轉發給master,讀操作轉發給read-only replica(master默認也提供讀,可以通過權重控制)。

用戶只需要購買讀寫分離規格的實例,直接使用任何客戶端即可直接使用,業務不用做任何修改就可以開始享受讀寫分離服務帶來的巨大性能提升,接入成本幾乎為0。

高可用

高可用模塊(HA)監控所有DB節點的健康狀態,為整個實例的可用性保駕護航。master宕機時自動切換到新主。如果某個read-only replica宕機,HA也能及時感知,然后重搭一個新的read-only replica,下線宕機節點。

除HA之外,redis-proxy也能實時感知每個read-only replica的狀態。在某個read-only replica異常期間,redis-proxy會自動降低這個節點的權重,如果發現某個read-only replica連續失敗超過一定次數以后,會暫時屏蔽異常節點,直到異常消失以后才會恢復其正常權重。

redis-proxy和HA一起做到盡量減少業務對后端異常的感知,提高服務可用性。

高性能

對于讀多寫少的業務場景,直接使用集群版本往往不是最合適的方案 ,現在讀寫分離提供了更多的選擇,業務可以根據場景選擇最適合的規格,充分利用每一個read-only replica的資源。

目前單shard對外售賣1 master + 1/3/5 read-only replica多種規格(如果有更大的需求可以提工單反饋),提供60萬QPS和192 MB/s的服務能力,在完全兼容所有命令的情況下突破單機的資源限制。后續將去掉規格限制,讓用戶根據業務流量隨時自由的增加或減少read-only replica數量。

 

 

 

 

Redis主從異步復制,從read-only replica中可能讀到舊的數據,使用讀寫分離需要業務可以容忍一定程度的數據不一致,后續將會給客戶更靈活的配置和更大的自由,例如配置可以容忍的最大延遲時間。

 

 

責任編輯:張燕妮 來源: 民工哥技術之路
相關推薦

2025-02-26 12:19:52

2015-08-13 10:29:12

面試面試官

2021-04-20 10:20:27

Dubbo網絡通信通信協議

2021-01-14 05:23:32

高并發消息中間件

2021-09-01 07:21:41

面試官開發讀寫鎖

2023-10-28 09:13:32

系統面試官架構

2024-11-26 08:09:58

2021-09-01 09:44:16

Redis持久化配置

2022-10-08 00:08:00

apiESFacebook

2021-08-04 08:33:25

React服務端渲染

2024-05-11 15:11:44

系統軟件部署

2015-08-24 09:00:36

面試面試官

2021-11-25 10:18:42

RESTfulJava互聯網

2021-08-09 07:47:40

Git面試版本

2025-01-13 09:24:32

2024-08-12 17:36:54

2023-01-15 17:57:12

緩存技術kafka磁盤

2022-07-18 13:59:43

Redis單線程進程

2022-07-04 08:06:14

Go語言互斥鎖

2020-11-06 07:11:40

內存虛擬Redis
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品国产欧美一区二区 | 亚洲精品乱码久久久久久9色 | 国产夜恋视频在线观看 | 国产一区二区在线免费 | 一区二区在线免费观看视频 | 久久综合久久久 | 国产aⅴ精品| 91免费观看| 久久ww| 久久综合九九 | 看a网站 | 久久国产视频播放 | 中文字幕在线欧美 | 在线免费观看成年人视频 | 成人免费视频一区 | 99精品亚洲国产精品久久不卡 | 欧美日韩一区二区在线观看 | 99在线观看视频 | 国产日韩一区二区三区 | 国产精品美女久久久久 | 91综合网| 欧美一级片在线观看 | а_天堂中文最新版地址 | 特级毛片www| 一区二区三区在线 | 欧 | 国产99热| 亚洲视频二 | 成人欧美一区二区三区白人 | 九九亚洲| 一区二区三区免费观看 | 一级在线免费观看 | 99国产精品久久久久老师 | 91婷婷韩国欧美一区二区 | 国产精品精品3d动漫 | 五月激情六月婷婷 | 亚洲日本欧美日韩高观看 | 一区二区三区中文字幕 | 91精品国产综合久久婷婷香蕉 | 91精品国产91久久久久久吃药 | 成人在线观看免费视频 | 99在线播放 |