最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

redis客戶端實(shí)現(xiàn)高可用讀寫分離的方式詳解

 更新時(shí)間:2021年07月04日 15:30:35   作者:mushishi  
基于sentienl 獲取和動(dòng)態(tài)感知 master、slaves節(jié)點(diǎn)信息的變化,我們的讀寫分離客戶端就能具備高可用+動(dòng)態(tài)擴(kuò)容感知能力了,接下來(lái)通過(guò)本文給大家分享redis客戶端實(shí)現(xiàn)高可用讀寫分離的方式,感興趣的朋友一起看看吧

背景

(1) redis單機(jī)的讀寫性能輕松上大幾萬(wàn),不過(guò)線上環(huán)境不會(huì)只部署光禿禿的一個(gè)節(jié)點(diǎn),還是會(huì)配合 sentinel 再部署一個(gè) slave作為高可用節(jié)點(diǎn)的;
但是standby的slave節(jié)點(diǎn)是不對(duì)外提供服務(wù)端的,一定程度上造成了浪費(fèi)資源

(2) 當(dāng)業(yè)務(wù)不斷發(fā)展,原來(lái)單節(jié)點(diǎn)緩存的數(shù)據(jù)(如,商品信息緩存、配置信息等)的查詢qps不斷升高(寫qps增長(zhǎng)不多),突破十幾萬(wàn)、幾十萬(wàn)的的時(shí)候,此時(shí)一個(gè)節(jié)點(diǎn)就扛不住了,我們就需要增加幾個(gè)redis slaves節(jié)點(diǎn)來(lái)分擔(dān)這些查詢的壓力 也就是讀寫分離

但是,常用的 redis 客戶端jedis并不支持讀寫分離能力

實(shí)現(xiàn)方式

(1) 從配置中心獲取 master 和 slaves 的連接信息,分別初始化好一個(gè)連接master的寫連接池和一組slave的讀連接池
(2) 將命令進(jìn)行分類:執(zhí)行寫命令則從 master的連接池取連接然后執(zhí)行,如果是讀命令則從slave的連接池中取出連接執(zhí)行
可能有多個(gè)slave節(jié)點(diǎn),可以按照一定的策略進(jìn)行負(fù)載均衡(權(quán)重、隨機(jī)、輪詢...etc) 從其中一個(gè) slave節(jié)點(diǎn)的連接池獲取連接

大概長(zhǎng)這樣:

高可用版本

前面的實(shí)現(xiàn)方式正常情況下是可以的

但是:
(1) 如果運(yùn)行期間 master掛了怎么辦? 如何自動(dòng) failover 切換?
(2) 如果流量突增,需要?jiǎng)討B(tài)擴(kuò)容一個(gè)或多個(gè) slave節(jié)點(diǎn),如何動(dòng)態(tài)生效?

那就不能從配置文件取master和slaves的 ip+port 了,得從redis ha的組件去動(dòng)態(tài)獲取 當(dāng)前master 和可用slave列表的節(jié)點(diǎn)信息 => sentinel

1.初始化

向 sentinel 發(fā)送命令獲取master和slaves的節(jié)點(diǎn)信息

//獲取當(dāng)前masterName標(biāo)識(shí)的當(dāng)前master節(jié)點(diǎn)信息,哨兵可監(jiān)控多個(gè) mater ha,所以要用<masterName>區(qū)分
SENTINEL get-master-addr-by-name <masterName>
//獲取可用的slaves列表信息
SENTINEL slaves <masterName>

拿到連接后,繼續(xù)用開(kāi)頭的方式去創(chuàng)建連接池就行了

2. 動(dòng)態(tài)failover、擴(kuò)容

初始化完畢后,在運(yùn)行期間master節(jié)點(diǎn),和slaves還是可能變化的, 如
(1) master故障、網(wǎng)絡(luò)分區(qū),sentinel 提升一個(gè)slave為新的master
(2) 新增slave節(jié)點(diǎn)應(yīng)對(duì)突增流量

我們?nèi)绾文懿恢貑⒖蛻舳说那闆r下,動(dòng)態(tài)切換?

sentinel 在進(jìn)行master切換、slave變更等操作的時(shí)候都會(huì)向?qū)?yīng)的 channel 發(fā)布事件,我們可以基于這些事件感知到相應(yīng)的變化
參考: https://redis.io/topics/sentinel

2.1 failover切換 master

當(dāng) sentinel 進(jìn)行master failover切換的時(shí)候,它會(huì)向channel: switch-master 發(fā)送通知,我們?cè)诳蛻舳擞嗛嗊@個(gè)channel,收到事件后,重新進(jìn)行初始化的步驟即可

2.2 擴(kuò)容slave

當(dāng)新的 slave 節(jié)點(diǎn)加入, sentinel 感知到則會(huì)向channel: +slave 發(fā)布事件,我們監(jiān)聽(tīng)到后,重新獲取slaves節(jié)點(diǎn)信息重建slaves的連接池就可以了(這邊不涉及master的變化)

總結(jié)

基于 sentienl 獲取和動(dòng)態(tài)感知 master、slaves節(jié)點(diǎn)信息的變化,我們的讀寫分離客戶端就能具備高可用+動(dòng)態(tài)擴(kuò)容感知能力了;

到此這篇關(guān)于redis客戶端實(shí)現(xiàn)高可用讀寫分離的文章就介紹到這了,更多相關(guān)redis讀寫分離內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 阿里云官方Redis開(kāi)發(fā)規(guī)范總結(jié)

    阿里云官方Redis開(kāi)發(fā)規(guī)范總結(jié)

    本文主要介紹了阿里云官方Redis開(kāi)發(fā)規(guī)范總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Redis獲取某個(gè)前綴的key腳本實(shí)例

    Redis獲取某個(gè)前綴的key腳本實(shí)例

    這篇文章主要給大家介紹了關(guān)于Redis獲取某個(gè)前綴的key腳本的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • Redis集群模式和常用數(shù)據(jù)結(jié)構(gòu)詳解

    Redis集群模式和常用數(shù)據(jù)結(jié)構(gòu)詳解

    Redis集群模式下的運(yùn)維指令主要用于集群的搭建、管理、監(jiān)控和維護(hù),講解了一些常用的Redis集群運(yùn)維指令,本文重點(diǎn)介紹了Redis集群模式和常用數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考下
    2024-03-03
  • 在Centos?8.0中安裝Redis服務(wù)器的教程詳解

    在Centos?8.0中安裝Redis服務(wù)器的教程詳解

    由于考慮到linux服務(wù)器的性能,所以經(jīng)常需要把一些中間件安裝在linux服務(wù)上,今天通過(guò)本文給大家介紹下在Centos?8.0中安裝Redis服務(wù)器的詳細(xì)過(guò)程,感興趣的朋友一起看看吧
    2022-03-03
  • Redis緩存-序列化對(duì)象存儲(chǔ)亂碼問(wèn)題的解決

    Redis緩存-序列化對(duì)象存儲(chǔ)亂碼問(wèn)題的解決

    這篇文章主要介紹了Redis緩存-序列化對(duì)象存儲(chǔ)亂碼問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Springboot整合Redis與數(shù)據(jù)持久化

    Springboot整合Redis與數(shù)據(jù)持久化

    這篇文章主要介紹了Springboot整合Redis與Redis數(shù)據(jù)持久化的操作,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Redis中LRU算法和LFU算法的區(qū)別小結(jié)

    Redis中LRU算法和LFU算法的區(qū)別小結(jié)

    在Redis中,LRU算法和LFU算法是兩種常用的緩存淘汰算法,它們可以幫助我們優(yōu)化緩存性能,本文主要介紹了Redis中LRU算法和LFU算法的區(qū)別,感興趣的可以了解一下
    2023-12-12
  • Redis簡(jiǎn)易延時(shí)隊(duì)列的實(shí)現(xiàn)示例

    Redis簡(jiǎn)易延時(shí)隊(duì)列的實(shí)現(xiàn)示例

    在實(shí)際的業(yè)務(wù)場(chǎng)景中,經(jīng)常會(huì)遇到需要延時(shí)處理的業(yè)務(wù),本文就來(lái)介紹有下Redis簡(jiǎn)易延時(shí)隊(duì)列的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • redis 存儲(chǔ)對(duì)象的方法對(duì)比分析

    redis 存儲(chǔ)對(duì)象的方法對(duì)比分析

    這篇文章主要介紹了redis 存儲(chǔ)對(duì)象的方法對(duì)比分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 詳解Redis 分布式鎖遇到的序列化問(wèn)題

    詳解Redis 分布式鎖遇到的序列化問(wèn)題

    這篇文章主要介紹了Redis 分布式鎖遇到的序列化問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評(píng)論

岑溪市| 景德镇市| 都江堰市| 长岭县| 积石山| 高阳县| 崇阳县| 工布江达县| 博客| 扎赉特旗| 仁布县| 屏边| 黑水县| 武义县| 从江县| 图木舒克市| 乐昌市| 和田市| 炉霍县| 赤壁市| 扎兰屯市| 芮城县| 阿图什市| 岗巴县| 蒙阴县| 乌拉特中旗| 曲阜市| 双牌县| 竹北市| 利津县| 霍城县| 壶关县| 新沂市| 东兴市| 锦屏县| 舒兰市| 兴宁市| 绍兴市| 永城市| 福清市| 河池市|