验证Redision是可以自动拓扑刷新的

1、先查看当前集群节点状态

192.168.1.56(192.168.1.56:6579)>cluster nodes
"db73aebc13f801f3e7682f3020dda9a2de78a2de 192.168.1.56:6679@16679 master - 0 1657246502566 94 connected 10923-16383
42a9149f798f415ef1b240075600d9897805ada1 192.168.1.56:6680@16680 slave 58318a93a1f87019af06fa96ab9692e182c9184d 0 1657246502000 88 connected
6b8eec08fdf24c9a72a55fcbe4a9405458b703e8 192.168.1.56:6480@16480 slave db73aebc13f801f3e7682f3020dda9a2de78a2de 0 1657246502364 94 connected
58318a93a1f87019af06fa96ab9692e182c9184d 192.168.1.56:6579@16579 myself,master - 0 1657246501000 88 connected 5461-10922
e18554b6ad8a8d78e41e8e2c225d8aaba6c8ea5c 192.168.1.56:6580@16580 slave bd77823c2ebe3fdeea7ce9f58fa0a814024492ec 0 1657246502566 93 connected
bd77823c2ebe3fdeea7ce9f58fa0a814024492ec 192.168.1.56:6479@16479 master - 0 1657246501358 93 connected 0-5460

翻译一下,就是:
192.168.1.56:6679 主节点
192.168.1.56:6680 从节点,对应的主是192.168.1.56:6579
192.168.1.56:6480 从节点,对应的主是192.168.1.56:6679
192.168.1.56:6579 主节点
192.168.1.56:6580 从节点,对应的主是192.168.1.56:6479
192.168.1.56:6479 主节点

2、创建Redis压测接口

@GetMapping("/test/redis")
    public String test() throws InterruptedException {
        //模拟业务处理耗时
        Thread.sleep(10);
        if(!RedisUtils.hasKey("test")){
            RedisUtils.setStrWithTime("test","test",100);
        }
        return RedisUtils.getStr("test");
    }

3、现在使用Jmeter压测Redis集群,正常。
4、现在手动down掉 192.168.1.56:6479 节点

docker stop redis_m6479

5、查看当前集群状态

"db73aebc13f801f3e7682f3020dda9a2de78a2de 192.168.1.56:6679@16679 master - 0 1657251138156 94 connected 10923-16383
42a9149f798f415ef1b240075600d9897805ada1 192.168.1.56:6680@16680 slave 58318a93a1f87019af06fa96ab9692e182c9184d 0 1657251140169 88 connected
6b8eec08fdf24c9a72a55fcbe4a9405458b703e8 192.168.1.56:6480@16480 slave db73aebc13f801f3e7682f3020dda9a2de78a2de 0 1657251140571 94 connected
58318a93a1f87019af06fa96ab9692e182c9184d 192.168.1.56:6579@16579 myself,master - 0 1657251140000 88 connected 5461-10922
e18554b6ad8a8d78e41e8e2c225d8aaba6c8ea5c 192.168.1.56:6580@16580 master - 0 1657251140000 95 connected 0-5460
bd77823c2ebe3fdeea7ce9f58fa0a814024492ec 192.168.1.56:6479@16479 master,fail - 1657251082816 1657251080501

发现192.168.1.56:6479 显示fail,192.168.1.56:6580自动故障切换为主节点。
同时 Redission自动感知拓扑刷新,控制台打印如下日志:

2022-07-08 11:33:15,748 | INFO | o.r.c.MasterSlaveEntry - master 192.168.1.56/192.168.1.56:6479 used as slave 
2022-07-08 11:33:15,748 | INFO | o.r.c.ClusterConnectionManager - slave redis://192.168.1.56:6580 removed for slot ranges: [[0-5460]] 
2022-07-08 11:33:16,078 | INFO | o.r.c.p.MasterPubSubConnectionPool - 1 connections initialized for 192.168.1.56/192.168.1.56:6580 
2022-07-08 11:33:16,862 | INFO | o.r.c.ClusterConnectionManager - 192.168.1.56/192.168.1.56:6479 master and related slaves: [addr=redis://192.168.1.56:6580] removed 
2022-07-08 11:33:16,862 | INFO | o.r.c.p.MasterConnectionPool - 24 connections initialized for 192.168.1.56/192.168.1.56:6580 
2022-07-08 11:33:17,051 | INFO | o.r.c.p.PubSubConnectionPool - 1 connections initialized for 192.168.1.56/192.168.1.56:6580 
2022-07-08 11:33:17,741 | INFO | o.r.c.ClusterConnectionManager - master: redis://192.168.1.56:6580 added for slot ranges: [[0-5460]] 
2022-07-08 11:33:17,741 | INFO | o.r.c.p.SlaveConnectionPool - 24 connections initialized for 192.168.1.56/192.168.1.56:6580 

再次压测Redis集群,集群正常。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis集群拓扑动态刷新是指在Redis集群中,当节点的拓扑结构发生变化时,如新增或删除节点,需要对集群进行重新配置和刷新。这样可以确保集群的高可用性和数据一致性。 在Redis集群中,使用了Gossip协议来实现节点之间的信息传播和拓扑结构的动态刷新。当一个节点发现有新的节点加入或者有节点离开时,它会将这个信息通过Gossip协议广播给其他节点,其他节点也会相应地更新自己的拓扑结构。 具体的拓扑动态刷新过程如下: 1. 新增节点:当有新的节点加入Redis集群时,它会向集群中的任意一个已知节点发送加入请求。已知节点会将这个请求广播给其他节点,其他节点会将新节点添加到自己的拓扑结构中,并进行数据迁移以保证数据的均衡分布。 2. 删除节点:当有节点离开Redis集群时,它会向集群中的任意一个已知节点发送离开请求。已知节点会将这个请求广播给其他节点,其他节点会将离开的节点从自己的拓扑结构中移除,并进行数据迁移以保证数据的均衡分布。 3. 拓扑结构刷新:当有节点加入或离开Redis集群时,所有的节点都会更新自己的拓扑结构,并将最新的拓扑结构信息广播给其他节点。这样每个节点都能够及时了解到集群的最新状态。 通过以上的拓扑动态刷新机制,Redis集群能够实现高可用性和数据一致性。当有节点加入或离开时,集群会自动进行数据迁移和拓扑结构的更新,保证数据的可靠性和高效性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值