12.redis cluster 测试

一.
redis cluster 提供多个master,数据分布式存储在多个master上,每个master都带着slave,自动实现读写分离;
每个master如果故障,那么会自动将slave切换成master,高可用


你在redis cluster上写入数据时,其实你可以将请求发到任意一个master上执行,但是master会计算这个key的CRC16值,
然后对16384个hashslot取模,找到key对应的hashslot,找到hashslot对应的master,如果对应的master就在本地,那么自己就会处理掉
但如果计算出的hashslot对应的master不在本地,客户端就会返回一个move error,告诉你应该去哪个master执行这条写入的命令


什么叫做多master的写入,就是每条数据只能存在于一个master上,不同的master负责存储不同的数据,分布式的数据存储
100w条数据,5个master,每个master就负责存储20w条数据,分布式数据存储
大型的java系统架构,还专注在大数据系统架构,分布式,分布式存储,hadoop hdfs,分布式资源调度,hadoop yarn,分布式计算,hadoop mapreduce/hive
分布式的nosql数据库,hbase,分布式的协调,zookeeper,分布式通用计算引擎,spark,分布式的实时计算引擎,storm
如果你要处理海量数据,就涉及到了一个名词,叫做大数据,只要涉及到大数据,那么其实就会涉及到分布式




2、实验不同master各自的slave读取 -> 读写分离


在这个redis cluster中,如果你要在slave读取数据,那么需要带上readonly指令,get mykey1


redis-cli -c启动,就会自动进行各种底层的重定向的操作


实验redis cluster的读写分离的时候,会发现有一定的限制性,默认情况下,redis cluster的核心的理念,主要是用slave做高可用的,
每个master挂一两个slave,主要是做数据的热备,还有master故障时的主备切换,实现高可用的


redis cluster默认是不支持slave节点读或者写的,跟我们手动基于replication搭建的主从架构不一样的
slave node,readonly,get,这个时候才能在slave node进行读取


redis cluster,主从架构是出来,读写分离,复杂了点,也可以做,jedis客户端,对redis cluster的读写分离支持不太好的
默认的话就是读和写都到master上去执行的,如果你要让最流行的jedis做redis cluster的读写分离的访问,那可能还得自己修改
一点jedis的源码,成本比较高,要不然你就是自己基于jedis,封装一下,自己做一个redis cluster的读写分离的访问api

核心的思路,就是说,redis cluster的时候,就没有所谓的读写分离的概念了,读写分离,是为了什么,主要是因为要建立
一主多从的架构,才能横向任意扩展slave node去支撑更大的读吞吐量

redis cluster的架构下,实际上本身master就是可以任意扩展的,你如果要支撑更大的读吞吐量,或者写吞吐量,或者数据量,
都可以直接对master进行横向扩展就可以了,也可以实现支撑更高的读吞吐的效果





redis -h ip地址 -p 端口 -a 密码      计算key出的hashslot对应的master不在本地,客户端就会返回一个move error,告诉你应该去哪个master执行这条写入的命令
redis -h ip地址 -p 端口 -a 密码 -c   自动进行各种底层的重定向的操作




下面是实验结果


[root@cache01 init.d]# redis-trib.rb create  --replicas 1 139.199.10.125:6379 139.199.10.125:7001 139.199.10.125:7002 139.199.10.125:7003 139.199.10.125:7004 139.199.10.125:7005 139.199.10.125:7006 
>>> Creating cluster
>>> Performing hash slots allocation on 7 nodes...
Using 3 masters:
139.199.10.125:6379
139.199.10.125:7001
139.199.10.125:7002
Adding replica 139.199.10.125:7003 to 139.199.10.125:6379
Adding replica 139.199.10.125:7004 to 139.199.10.125:7001
Adding replica 139.199.10.125:7005 to 139.199.10.125:7002
Adding replica 139.199.10.125:7006 to 139.199.10.125:6379
M: 6e7f57400567548f666873772fac5c79cb3b2130 139.199.10.125:6379
   slots:0-5460 (5461 slots) master
M: 2b10a7032cdc18e406dcd927f9d9ff60da077922 139.199.10.125:7001
   slots:5461-10922 (5462 slots) master
M: 54d8cc248ac74be0cf821c13b7032ac18c7b275b 139.199.10.125:7002
   slots:10923-16383 (5461 slots) master
S: 7798eee419eb0c03c49332d020fab6144974eed7 139.199.10.125:7003
   replicates 6e7f57400567548f666873772fac5c79cb3b2130
S: e42b8538399f9c461ab02f4db2d36595a2ceec94 139.199.10.125:7004
   replicates 2b10a7032cdc18e406dcd927f9d9ff60da077922
S: 64a8a049f4898d39c1321bd26e674066d97d58c3 139.199.10.125:7005
   replicates 54d8cc248ac74be0cf821c13b7032ac18c7b275b
S: 83d32c59688619f5e1c0b75f066d2b06d7c449d4 139.199.10.125:7006
   replicates 6e7f57400567548f666873772fac5c79cb3b2130
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join......
>>> Performing Cluster Check (using node 139.199.10.125:6379)
M: 6e7f57400567548f666873772fac5c79cb3b2130 139.199.10.125:6379
   slots:0-5460 (5461 slots) master
   2 additional replica(s)
M: 54d8cc248ac74be0cf821c13b7032ac18c7b275b 139.199.10.125:7002
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 64a8a049f4898d39c1321bd26e674066d97d58c3 139.199.10.125:7005
   slots: (0 slots) slave
   replicates 54d8cc248ac74be0cf821c13b7032ac18c7b275b
S: e42b8538399f9c461ab02f4db2d36595a2ceec94 139.199.10.125:7004
   slots: (0 slots) slave
   replicates 2b10a7032cdc18e406dcd927f9d9ff60da077922
M: 2b10a7032cdc18e406dcd927f9d9ff60da077922 139.199.10.125:7001
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 7798eee419eb0c03c49332d020fab6144974eed7 139.199.10.125:7003
   slots: (0 slots) slave
   replicates 6e7f57400567548f666873772fac5c79cb3b2130
S: 83d32c59688619f5e1c0b75f066d2b06d7c449d4 139.199.10.125:7006
   slots: (0 slots) slave
   replicates 6e7f57400567548f666873772fac5c79cb3b2130
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值