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

SpringBoot結(jié)合Redis哨兵模式的實(shí)現(xiàn)示例

 更新時(shí)間:2020年04月22日 14:10:37   作者:小小學(xué)生愛(ài)讀書(shū)  
這篇文章主要介紹了SpringBoot結(jié)合Redis哨兵模式的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

Redis哨兵模式

Redis Sentinel介紹

Redis Sentinel是Redis高可用的實(shí)現(xiàn)方案。Sentinel是一個(gè)管理多個(gè)Redis實(shí)例的工具,它可以實(shí)現(xiàn)對(duì)Redis的監(jiān)控、通知、自動(dòng)故障轉(zhuǎn)移。

Redis Sentinel主要功能

Redis 的 Sentinel 系統(tǒng)用于管理多個(gè) Redis 服務(wù)器(instance), 該系統(tǒng)執(zhí)行以下三個(gè)任務(wù):

  • 監(jiān)控(Monitoring):Sentinel 會(huì)不斷地檢查你的主服務(wù)器和從服務(wù)器是否運(yùn)作正常。
  • 提醒(Notification):當(dāng)被監(jiān)控的某個(gè) Redis 服務(wù)器出現(xiàn)問(wèn)題時(shí), Sentinel 可以通過(guò) API 向管理員或者其他應(yīng)用程序發(fā)送通知。
  • 自動(dòng)故障遷移(Automatic failover):當(dāng)一個(gè)主服務(wù)器不能正常工作時(shí), Sentinel 會(huì)開(kāi)始一次自動(dòng)故障遷移操作, 它會(huì)將失效主服務(wù)器的其中一個(gè)從服務(wù)器升級(jí)為新的主服務(wù)器, 并讓失效主服務(wù)器的其他從服務(wù)器改為復(fù)制新的主服務(wù)器; 當(dāng)客戶端試圖連接失效的主服務(wù)器時(shí), 集群也會(huì)向客戶端返回新主服務(wù)器的地址, 使得集群可以使用新主服務(wù)器代替失效服務(wù)器。

Redis Sentinel部署

Redis集群配置

Redis集群?jiǎn)?dòng)

復(fù)制3個(gè)reids.conf配置文件

cp redis.conf /home/redis/redis6379.conf
cp redis.conf /home/redis/redis6380.conf
cp redis.conf /home/redis/redis6381.conf

修改reids.conf配置文件,以6379配置為例

vim redis6379.conf
#啟用后臺(tái)啟動(dòng)
daemonize yes
#pidfile位置
pidfile "/home/redis/6379/redis6379.pid"
#端口
port 6379
#日志文件位置
logfile "/home/redis/6379/log6379.log"
#rdb備份文件名稱
dbfilename "dump6379.rdb"
#rdb備份文件路徑
dir "/home/redis/rdb/"

修改redis-slave配置文件,修改和master如上配置,6380、6381配置文件,新增如下

slaveof 192.168.126.200 6379

先啟動(dòng)master服務(wù),在啟動(dòng)slave服務(wù)

master節(jié)點(diǎn)服務(wù)
./redis-cli -p 6379
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.126.200,port=6380,state=online,offset=975350,lag=1
slave1:ip=192.168.126.200,port=6381,state=online,offset=975350,lag=1
master_repl_offset:975495
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:975494

slave節(jié)點(diǎn)服務(wù)
./redis-cli -p 6380
# Replication
role:slave
master_host:192.168.126.200
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:989499
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

sentinel集群配置

編寫(xiě)sentinel配置文件,master配置

touch sentinel1.conf

vim sentinel1.conf
#Sentinel節(jié)點(diǎn)的端口
port 26379
dir "/home/redis/sentinel"
daemonize yes
logfile "sentinel-26379.log"

#當(dāng)前Sentinel節(jié)點(diǎn)監(jiān)控 127.0.0.1:6379 這個(gè)主節(jié)點(diǎn)
#代表判斷主節(jié)點(diǎn)失敗至少需要2個(gè)Sentinel節(jié)點(diǎn)節(jié)點(diǎn)同意
#mymaster是主節(jié)點(diǎn)的別名
sentinel monitor mymaster 192.168.126.200 6380 2

#每個(gè)Sentinel節(jié)點(diǎn)都要定期PING命令來(lái)判斷Redis數(shù)據(jù)節(jié)點(diǎn)和其余Sentinel節(jié)點(diǎn)是否可達(dá),如果超過(guò)30000毫秒且沒(méi)有回復(fù),則判定不可達(dá)
sentinel down-after-milliseconds mymaster 30000

#當(dāng)Sentinel節(jié)點(diǎn)集合對(duì)主節(jié)點(diǎn)故障判定達(dá)成一致時(shí),Sentinel領(lǐng)導(dǎo)者節(jié)點(diǎn)會(huì)做故障轉(zhuǎn)移操作,選出新的主節(jié)點(diǎn),原來(lái)的從節(jié)點(diǎn)會(huì)向新的主節(jié)點(diǎn)發(fā)起復(fù)制操作,限制每次向>新的主節(jié)點(diǎn)發(fā)起復(fù)制操作的從節(jié)點(diǎn)個(gè)數(shù)為1
sentinel leader-epoch mymaster 1

#故障轉(zhuǎn)移超時(shí)時(shí)間為180000毫秒
sentinel failover-timeout mymaster 180000

#同理創(chuàng)建修改sentinel2.conf、sentinel3.conf配置文件

啟動(dòng)3臺(tái)sentinel服務(wù)

./redis-sentinel /home/redis/sentinel1.conf
./redis-sentinel /home/redis/sentinel2.conf
./redis-sentinel /home/redis/sentinel3.conf

SpringBoot結(jié)合Redis哨兵模式

創(chuàng)建SpringBoot項(xiàng)目,添加依賴

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
 <groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
</dependency>
<!--redis連接池-->
<dependency>
 <groupId>org.apache.commons</groupId>
 <artifactId>commons-pool2</artifactId>
</dependency>

核心配置文件application.yml

server:
 port: 80

spring:
 redis:
 lettuce:
  pool:
  # 連接池最大連接數(shù)(使用負(fù)值表示沒(méi)有限制) 默認(rèn)為8
  max-active: 8
  # 連接池中的最大空閑連接 默認(rèn)為8
  max-idle: 8
  # 連接池最大阻塞等待時(shí)間(使用負(fù)值表示沒(méi)有限制) 默認(rèn)為-1
  max-wait: -1ms
  # 連接池中的最小空閑連接 默認(rèn)為 0
  min-idle: 0
 sentinel:
  # 主節(jié)點(diǎn)的別名
  master: mymaster
  # sentinel服務(wù)的ip和端口
  nodes: 192.168.126.200:26379,192.168.126.200:26380,192.168.126.200:26381

程序調(diào)用

@RestController
@RequestMapping("/redis")
public class RedisController {

 // 使用SpringBoot封裝的RestTemplate對(duì)象
 @Autowired
 RedisTemplate<String, String> redisTemplate;

 @RequestMapping("/get")
 public String get(String key) {
  String value = redisTemplate.opsForValue().get(key);
  return value;
 }

 @RequestMapping("/set")
 public String set(String key, String value) {
  redisTemplate.opsForValue().set(key, value);
  return "success";
 }
}

模擬故障

手動(dòng)shutdown redis的master服務(wù)后,后臺(tái)會(huì)嘗試重連,當(dāng)超過(guò)最大等待時(shí)間,無(wú)法連接后,sentinel會(huì)重新選舉出一個(gè)新的master,程序獲取到新的master節(jié)點(diǎn),提供讀寫(xiě)服務(wù)

到此這篇關(guān)于SpringBoot結(jié)合Redis哨兵模式的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)SpringBoot結(jié)合Redis哨兵模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • log4j2 項(xiàng)目日志組件的實(shí)例代碼

    log4j2 項(xiàng)目日志組件的實(shí)例代碼

    下面小編就為大家分享一篇log4j2 項(xiàng)目日志組件的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Spring零基礎(chǔ)入門(mén)IOC

    Spring零基礎(chǔ)入門(mén)IOC

    IoC就是比方說(shuō)有一個(gè)類,我們想要調(diào)用類里面的方法(不是靜態(tài)方法),就要?jiǎng)?chuàng)建該類的對(duì)象,使用對(duì)象調(diào)用方法來(lái)實(shí)現(xiàn)。但對(duì)于Spring來(lái)說(shuō),Spring創(chuàng)建對(duì)象的過(guò)程,不是在代碼里面實(shí)現(xiàn)的,而是交給Spring來(lái)進(jìn)行配置實(shí)現(xiàn)的
    2022-08-08
  • Java利用自定義注解、反射實(shí)現(xiàn)簡(jiǎn)單BaseDao實(shí)例

    Java利用自定義注解、反射實(shí)現(xiàn)簡(jiǎn)單BaseDao實(shí)例

    下面小編就為大家?guī)?lái)一篇Java利用自定義注解、反射實(shí)現(xiàn)簡(jiǎn)單BaseDao實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • IDEA報(bào)錯(cuò):無(wú)效的源發(fā)行版解決方案

    IDEA報(bào)錯(cuò):無(wú)效的源發(fā)行版解決方案

    很多小伙伴在刷新maven的時(shí)候總會(huì)報(bào) Error:java:無(wú)效的源發(fā)行版,下面這篇文章主要給大家介紹了關(guān)于IDEA報(bào)錯(cuò):無(wú)效的源發(fā)行版的解決方案,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • IntelliJ IDEA將導(dǎo)入的項(xiàng)目轉(zhuǎn)成maven項(xiàng)目

    IntelliJ IDEA將導(dǎo)入的項(xiàng)目轉(zhuǎn)成maven項(xiàng)目

    這篇文章主要介紹了IntelliJ IDEA將導(dǎo)入的項(xiàng)目轉(zhuǎn)成maven項(xiàng)目,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 提示:Decompiled.class file,bytecode version如何解決

    提示:Decompiled.class file,bytecode version如何解決

    在處理Decompiled.classfile和bytecodeversion問(wèn)題時(shí),通過(guò)修改Maven配置文件,添加阿里云鏡像并去掉默認(rèn)鏡像,解決了下載源的問(wèn)題,同時(shí),檢查并修改了依賴版本,確保了問(wèn)題的解決
    2024-12-12
  • Java HashTable的原理與實(shí)現(xiàn)

    Java HashTable的原理與實(shí)現(xiàn)

    Java中的HashTable是一種線程安全的哈希表實(shí)現(xiàn),它可以高效地存儲(chǔ)和快速查找數(shù)據(jù),本文將介紹Java中的HashTable的實(shí)現(xiàn)原理、常用方法和測(cè)試用例,需要的小伙伴可以參考一下
    2023-09-09
  • springBoot整合RocketMQ及坑的示例代碼

    springBoot整合RocketMQ及坑的示例代碼

    這篇文章主要介紹了springBoot整合RocketMQ及坑的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • 基于java中反射的總結(jié)分析

    基于java中反射的總結(jié)分析

    所謂反射,就是根據(jù)一個(gè)已經(jīng)實(shí)例化了的對(duì)象來(lái)還原類的完整信息
    至少對(duì)我而言,我認(rèn)為它帶給我的好處是,讓我從下往上的又了解了一遍面向?qū)ο?/P>

    2013-05-05
  • SpringBoot中RabbitMQ集群的搭建詳解

    SpringBoot中RabbitMQ集群的搭建詳解

    單個(gè)的?RabbitMQ?肯定無(wú)法實(shí)現(xiàn)高可用,要想高可用,還得上集群。這篇文章主要介紹了SpringBoot中RabbitMQ集群的兩種模式的搭建:普通集群搭建和鏡像集群搭建,需要的朋友可以參考一下
    2021-12-12

最新評(píng)論

临颍县| 封开县| 剑川县| 蛟河市| 平阴县| 五原县| 宝坻区| 静乐县| 赫章县| 湘潭市| 沙田区| 永川市| 铁力市| 保靖县| 伊吾县| 榆林市| 繁峙县| 巴东县| 宜川县| 凤山市| 阳朔县| 香格里拉县| 都安| 保康县| 巴南区| 梧州市| 威信县| 新营市| 崇礼县| 平江县| 若尔盖县| 体育| 永清县| 大安市| 房产| 双峰县| 黄龙县| 新宁县| 临沭县| 子长县| 余姚市|