欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Redis哨兵模式高可用解決方案

 更新時間:2022年03月01日 10:03:42   作者:Java知識圖譜  
Redis高可用有兩種模式:哨兵模式和集群模式,本文基于哨兵模式搭建一主兩從三哨兵Redis高可用服務,感興趣的可以了解一下

一、序言

Redis高可用有兩種模式:哨兵模式集群模式,本文基于哨兵模式搭建一主兩從三哨兵Redis高可用服務。

1、目標與收獲

一主兩從三哨兵Redis服務,基本能夠滿足中小型項目的高可用要求,使用Supervisor監(jiān)控并管理Redis實例。通過本文將完成如下目標:

  • 哨兵模式服務規(guī)劃與搭建

哨兵模式服務相比于單機版服務更加可靠,適合讀寫分離、數(shù)據(jù)量不是很大、要求可靠穩(wěn)定性的場景。

  • 客戶端整合與讀寫分離

通過Spring框架對哨兵模式進行連接,完成生產環(huán)境的常見操作。

2、端口規(guī)劃

端口規(guī)劃是完成本方案的第一步。

二、單機模擬

單機模擬是指在單臺物理機或者虛擬機上模擬操作,最大化還原本方案中間過程,適用于學習或者開發(fā)階段使用。

為了簡化操作,Redis服務做如下約定:數(shù)據(jù)不持久化到磁盤;服務實例以前臺進程方式運行;節(jié)點的配置文件以默認配置文件為模版;無密碼驗證。

(一)服務規(guī)劃

1、Redis實例

服務在第一次啟動時明確知道第幾個節(jié)點是master節(jié)點,當服務在長期運行并發(fā)生主從切換時,無法顯示知道第幾個節(jié)點是master節(jié)點,需要通過命令行間接查詢。

節(jié)點主機端口角色額外配置
node01127.0.0.16380第一次啟動時作為master服務 
node02127.0.0.16381第一次啟動時作為slave服務replicaof 127.0.0.1 6380
node03127.0.0.16382第一次啟動時作為slave服務replicaof 127.0.0.1 6380

額外配置指第一次啟動Redis服務實例時,節(jié)點配置文件中新增配置。

2、哨兵服務

哨兵服務節(jié)點之間沒有主從的區(qū)別,所有節(jié)點處于平等地位。當主服務異常時,哨兵服務之間會喚醒投票策略,從Redis實例從節(jié)點選擇主服務的候選人。

節(jié)點主機端口額外配置
node01127.0.0.126380sentinel monitor mymaster 127.0.0.1 6380 2
node02127.0.0.126381sentinel monitor mymaster 127.0.0.1 6380 2
node03127.0.0.126382sentinel monitor mymaster 127.0.0.1 6380 2

(二)服務配置

1、Redis實例

節(jié)點的初始配置文件以默認配置文件為模版。

node01、node02初始化配置文件之后,顯示指明節(jié)點間的主從關系,增加如下配置:

replicaof 127.0.0.1 6380

2、哨兵服務

節(jié)點的初始配置文件以默認配置文件為模版。

node01、node02、node03初始化配置文件后,增加如下配置:

sentinel monitor mymaster 127.0.0.1 6381 2

(三)服務管理

測試或者學習時,建議采用前臺進程管理服務,便于模擬單點故障、查看日志觀察主從切換。

生產條件下建議使用Supervisor管理服務,不僅易于管理而且能夠實現(xiàn)服務異常終止后自動重啟。高可用場景下使用的是三臺物理機。

1、Redis實例

/usr/local/redis/bin/redis-server /usr/local/redis/conf/ms/redis80.conf --port 6380 --save '' --daemonize no 
/usr/local/redis/bin/redis-server /usr/local/redis/conf/ms/redis81.conf --port 6381 --save '' --daemonize no
/usr/local/redis/bin/redis-server /usr/local/redis/conf/ms/redis82.conf --port 6382 --save '' --daemonize no

2、哨兵服務

/usr/local/redis/bin/redis-sentinel /usr/local/redis/conf/ms/sentinel280.conf --port 26380 --daemonize no
/usr/local/redis/bin/redis-sentinel /usr/local/redis/conf/ms/sentinel281.conf --port 26381 --daemonize no
/usr/local/redis/bin/redis-sentinel /usr/local/redis/conf/ms/sentinel282.conf --port 26382 --daemonize no

三、客戶端整合

客戶端實現(xiàn)是指基于SpringBoot的整合分為兩步實現(xiàn):一是完成作為基礎的整合;二是結合生產需要補充新特性。

(一)基礎整合

基礎整合的內容是以Java客戶端連接高可用哨兵模式Redis服務,實現(xiàn)單節(jié)點故障服務正常運行的要求。

1、全局配置文件

全局配置文件添加的配置信息有:master參數(shù)為哨兵服務名,此處為默認值;nodes參數(shù)為哨兵服務列表(不是Redis實例服務列表);database參數(shù)為數(shù)據(jù)庫。

spring:
  redis:
    database: 0
    sentinel:
      nodes: 192.168.181.171:26380,192.168.181.171:26381,192.168.181.171:26382
      master: mymaster

2、集成配置

集成進SpringBoot體系,最核心的是創(chuàng)建LettuceConnectionFactory連接工廠,通過Redis連接工廠,能夠順利繼承進Spring體系下其他框架。

@Configuration
public class RedisSentinelConfig {
    @Autowired
    private RedisProperties redisProperties;
    
    @Bean
    public RedisConnectionFactory lettuceConnectionFactory() {
        RedisProperties.Sentinel sentinel = redisProperties.getSentinel();
        HashSet<String> nodes = new HashSet<>(sentinel.getNodes());
        String master = sentinel.getMaster();
        RedisSentinelConfiguration config = new RedisSentinelConfiguration(master, nodes);
        config.setDatabase(redisProperties.getDatabase());
        return new LettuceConnectionFactory(config);
    }
}

(二)讀寫分離

基礎整合僅僅是實現(xiàn)了高可用Redis服務的流程,生產環(huán)境下仍需要增加其他配置:修改自定義連接數(shù)據(jù)庫序號;授權連接;連接池配置;讀寫分離。

在高可用前提下,衍生出讀寫分離的特性,主庫完成寫請求;從庫完成讀請求(從庫不允許寫)。

@Bean
public LettuceClientConfigurationBuilderCustomizer lettuceClientCustomizer() {
    // 配置讀寫分離
    return builder -> builder.readFrom(ReadFrom.REPLICA);
}

 到此這篇關于淺談Redis哨兵模式高可用解決方案的文章就介紹到這了,更多相關Redis哨兵模式高可用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Redis精確去重計數(shù)方法(咆哮位圖)

    Redis精確去重計數(shù)方法(咆哮位圖)

    這篇文章主要給大家介紹了關于Redis精確去重計數(shù)方法(咆哮位圖)的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Redis具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • Redis報錯:Could not create server TCP listening socket 127.0.0.1:6379: bind:解決方法

    Redis報錯:Could not create server TCP 

    這篇文章主要介紹了Redis報錯:Could not create server TCP listening socket 127.0.0.1:6379: bind:解決方法,是安裝與啟動Redis過程中比較常見的問題,需要的朋友可以參考下
    2023-06-06
  • redis持久化AOF和RDB的區(qū)別及解決各個場景問題示例

    redis持久化AOF和RDB的區(qū)別及解決各個場景問題示例

    這篇文章主要為大家介紹了redis持久化AOF和RDB的區(qū)別及解決各個場景問題示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • Linux服務器使用Redis作為數(shù)據(jù)緩存并用log4j2進行日志記錄的過程分享

    Linux服務器使用Redis作為數(shù)據(jù)緩存并用log4j2進行日志記錄的過程分享

    這篇文章主要介紹了Linux服務器使用Redis作為數(shù)據(jù)緩存并用log4j2日志記錄,關于SpringBoot項目配置Redis與log4j2是查詢官方文檔,本文中的Redis配置類、Redis工具類以及l(fā)og4j2.xml配置文件來自網絡,查證源自何處比較麻煩,所以在此感謝所有人的分享
    2023-09-09
  • Redis緩存IO模型的演進教程示例精講

    Redis緩存IO模型的演進教程示例精講

    這篇文章主要為大家介紹了Redis線程IO模型演進的教程示例精講,有需要朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2021-11-11
  • 詳解redis集群選舉機制

    詳解redis集群選舉機制

    這篇文章主要介紹了詳解redis集群選舉機制,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • Redis中LRU算法和LFU算法的區(qū)別小結

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

    在Redis中,LRU算法和LFU算法是兩種常用的緩存淘汰算法,它們可以幫助我們優(yōu)化緩存性能,本文主要介紹了Redis中LRU算法和LFU算法的區(qū)別,感興趣的可以了解一下
    2023-12-12
  • redis慢查詢日志的訪問和管理方式

    redis慢查詢日志的訪問和管理方式

    這篇文章主要介紹了redis慢查詢日志的訪問和管理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • redis 交集、并集、差集的具體使用

    redis 交集、并集、差集的具體使用

    這篇文章主要介紹了redis 交集、并集、差集的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • redis使用zset實現(xiàn)延時隊列的示例代碼

    redis使用zset實現(xiàn)延時隊列的示例代碼

    本文主要介紹了redis使用zset實現(xiàn)延時隊列的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06

最新評論