在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文解析Redis讀寫分離技術

西西 ? 來源:Java小寒 ? 作者:今日頭條 ? 2020-03-01 15:00 ? 次閱讀

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

背景

云數據庫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。

緩存成神路:Redis讀寫分離難以理解?一文解析Redis讀寫分離技術

鏈式復制

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

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

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

緩存成神路:Redis讀寫分離難以理解?一文解析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讀寫分離難以理解?一文解析Redis讀寫分離技術

后續

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Redis
    +關注

    關注

    0

    文章

    376

    瀏覽量

    10884
收藏 人收藏

    評論

    相關推薦

    Python如何使用MySQL 8.2讀寫分離

    如您所知,MySQL 8.2 發布了最令人期待的功能之讀寫分離。
    的頭像 發表于 11-22 09:39 ?527次閱讀
    Python如何使用MySQL 8.2<b class='flag-5'>讀寫</b><b class='flag-5'>分離</b>?

    【2018開年知識盛會】15位大咖直播分享,全方位解析NoSQL數據庫

    集群及讀寫分離規格等,并且架構全面支持Memcache協議,產品專家將深度解讀云數據庫Redis在游戲等行業中的應用,技術專家將深度解讀讀寫
    發表于 01-15 14:53

    企業打開Redis的正確方式,來自阿里云云數據庫團隊的解讀

    的送禮物、討論評論等大部分數據操作都適合非關系型數據庫,而僅有充值等少量場景需要關系性數據庫,因此重度依賴Redis數據庫,相應地則有“穩定性高于切、低內存高QPS、連接數較大”的技術要求。相應
    發表于 02-07 14:06

    Mycat的讀寫分離實現

    Mycat基于主從復制實現讀寫分離
    發表于 04-17 06:36

    labview讀寫操作REDIS

    本帖最后由 SevenLi8408 于 2022-9-15 08:07 編輯 分享個好用的非關系型緩存數據庫的使用方法。REDIS桌面管理軟件https://github.com
    發表于 08-15 10:32

    ddr3的讀寫分離方法有哪些?

    DDR3是目前DDR的主流產品,DDR3的讀寫分離作為DDR最基本也是最常用的部分,本文主要闡述DDR3讀寫分離的方法。最開始的DDR, 芯片采用的是TSOP封裝,管腳露在芯片兩側的,
    的頭像 發表于 11-06 13:44 ?8869次閱讀
    ddr3的<b class='flag-5'>讀寫</b><b class='flag-5'>分離</b>方法有哪些?

    揭秘阿里云Redis全球多活產品

    ,實現了string、counter、hash、set、zset、hyperloglog、geo幾種數據類型的最終致性.功能豐富多活支持Redis標準版,集群版和讀寫分離版。在多活同
    發表于 08-30 14:40 ?240次閱讀

    理解 Redis 的核心原理與技術

    Redis 基礎數據結構 1. String Redis 里的字符串是動態字符串,會根據實際情況動態調整。類似于 Go 里面的切片-slice,如果長度不夠則自動擴容。至于如何擴容,方法大致如下
    的頭像 發表于 05-28 10:49 ?1584次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>理解 <b class='flag-5'>Redis</b> 的核心原理與<b class='flag-5'>技術</b>

    讀寫分離的兩種實現方式

    1. 引言 讀寫分離要做的事情就是對于條SQL該選擇哪個數據庫去執行,至于誰來做選擇數據庫這件事兒,無非兩個,要么中間件幫我們做,要么程序自己做。因此,般來講,
    的頭像 發表于 09-29 14:51 ?1.3w次閱讀

    讀懂Redis

    我們通常使用 Redis 的方式是,發送命令,命令排隊,Redis 執行,然后返回結果,這個過程稱為Round trip time(簡稱RTT, 往返時間)。
    的頭像 發表于 11-01 09:15 ?1053次閱讀

    Redis的主從、哨兵、Redis Cluster集群

    主從。 1.1 Redsi主從概念 Redis主從模式,就是部署多臺Redis服務器,有主庫和從庫,它們之間通過主從復制,以保證數據副本的致。 主從庫之間采用的是 讀寫
    的頭像 發表于 06-12 14:58 ?849次閱讀
    <b class='flag-5'>Redis</b>的主從、哨兵、<b class='flag-5'>Redis</b> Cluster集群

    闡述DDR3讀寫分離的方法

    DDR3是2007年推出的,預計2022年DDR3的市場份額將降至8%或以下。但原理都是樣的,DDR3的讀寫分離作為DDR最基本也是最常用的部分,本文主要闡述DDR3讀寫
    的頭像 發表于 10-18 16:03 ?1093次閱讀
    闡述DDR3<b class='flag-5'>讀寫</b><b class='flag-5'>分離</b>的方法

    讀寫分離解決什么問題

    讀寫分離種數據庫架構設計策略,主要解決數據庫在高并發場景下的讀寫性能瓶頸問題。在這種架構中,數據庫的讀操作和寫操作被分離到不同的服務器上
    的頭像 發表于 07-12 09:47 ?515次閱讀

    讀寫分離怎么保證數據同步

    讀寫分離種常見的數據庫架構設計,用于提高數據庫的并發處理能力。在讀寫分離架構中,數據庫的讀操作和寫操作被
    的頭像 發表于 07-12 09:49 ?1072次閱讀

    配置MySQL主從復制和讀寫分離

    配置MySQL主從復制和讀寫分離
    的頭像 發表于 10-23 11:44 ?479次閱讀
    配置MySQL主從復制和<b class='flag-5'>讀寫</b><b class='flag-5'>分離</b>
    主站蜘蛛池模板: 六月婷婷网| 午夜看片网址| 久青草视频在线| 男人天堂网在线观看| 女生张开腿让男人桶| 浓厚な接吻と肉体の交在线观看| 欧美videos 另类| 来吧成人综合网| 国产三级在线观看播放| 丁香花在线观看免费观看| 国产美女动态免费视频| 91噜噜噜| 天天艹夜夜| 草草影院www色极品欧美| 欧美人与牲动交xxxx| 又粗又大的机巴好爽欧美| 久久99热久久精品| 午夜免费看片| 人人射人人| 国产在线一卡| 午夜精品久久久久久久| 免费午夜在线视频| 午夜cao| 亚洲精品美女久久久aaa| 在线色视频网站| 色婷婷狠狠| 国产专区青青草原亚洲| 夜夜夜夜曰天天天天拍国产| 人人看操| yiren22亚洲综合高清一区| 扒开双腿猛进湿润18p| 色视频国产| 国产三级香港三级人妇| 天天操人人干| 黄色欧美网站| 一级做a爱片久久毛片| 欧洲成品大片在线播放| 成人精品亚洲| 久久刺激| 欧美视频一区二区三区在线观看| 五月伊人婷婷|