10 Redis的集群:主从复制、CAP、PAXOS、cluster分片集群02

按照业务拆分

在这里插入图片描述

分片 sharding

  • 哈希取模 modula
    在这里插入图片描述
    在这里插入图片描述

  • 随机分配 random
    在这里插入图片描述

  • 一致性哈希 kemata
    在这里插入图片描述

代理

  • 没有使用代理
    在这里插入图片描述

  • 使用代理
    在这里插入图片描述

  • 对代理做负载均衡和高可用

在这里插入图片描述

代理实现

twemproxy 代理

https://github.com/twitter/twemproxy

  • 下载
    在这里插入图片描述

  • 安装

$ git clone https://github.com/twitter/twemproxy.git
$ yum install automake libtool -y
$ cd twemproxy
$ autoreconf -fvi
$ ./configure --enable-debug=full
$ make
$ src/nutcracker -h
  • 配置
# 查看初始化文件
$ cd /home/twemproxy/twemproxy/scripts
$ vim nutcracker.init

# 初始化文件中,找到这句,初始化文件应该放到 /etc/rc.d/init.d目录下
# Source function library.
. /etc/rc.d/init.d/functions

# 然后,我们把初始化文件拷贝到相应目录,并改一下名字,授予可执行权限
$ cp nutcracker.init /etc/init.d/twemproxy
$ chmod +x twemproxy

# 再看初始化文件中这句,配置文件路径
OPTIONS="-d -c /etc/nutcracker/nutcracker.yml"

# 然后,我们在相应位置创建目录,并把配置文件拷贝过去
$ cd /etc
$ mkdir nutcracker
$ cd /home/twemproxy/twemproxy/conf/
$ cp ./* /etc/nutcracker/

# 可执行程序拷贝到 /usr/bin/
cp nutcracker /usr/bin/

修改配置文件

alpha:
  listen: 127.0.0.1:22121
  hash: fnv1a_64
  distribution: ketama
  auto_eject_hosts: true
  redis: true
  server_retry_timeout: 2000
  server_failure_limit: 1
  servers:
   - 127.0.0.1:6379:1
   - 127.0.0.1:6380:1
  • 启动2台redis
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 启动代理
    在这里插入图片描述
  • 连接代理
    打开一个客户端,直接连6379
    在这里插入图片描述
    打开一个客户端,直接连6380
    在这里插入图片描述
    打开一个客户端,连接代理22121,并set一些值
    在这里插入图片描述
    查看6379
    在这里插入图片描述
    查看6380
    在这里插入图片描述
    再set一些值试一下
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

predixy 代理

  • 下载
$ cd /home
$ mkdir predixy
$ cd predixy
$ wget https://github.com/joyieldInc/predixy/releases/download/1.0.5/predixy-1.0.5-bin-amd64-linux.tar.gz

在这里插入图片描述

  • 解压缩
    在这里插入图片描述
  • 修改配置文件
# 打开配置文件
$ vim predixy.conf

# 修改绑定主机
Bind 127.0.0.1:7617

# 导入哨兵的配置
Include sentinel.conf

# 打开哨兵的配置文件
$ vim sentinel.conf

# 配置文件复制例子
# 光标停在#SentinelServerPool {
# shift+:
# .,$y		# .当前位置  ,到  $最后一行  y复制
# 光标停在最后,按p   # 复制23行

在这里插入图片描述

# 光标停在#SentinelServerPool {
# shift+:
# .,$s/#//		# .当前位置  ,到  $最后一行  s查找并替换  /#  把#替换  //空

在这里插入图片描述
修改配置
在这里插入图片描述

  • 准备3台哨兵
    主机名要与sentinel.conf中的Group名字一致,对应ooxx、xxoo这两套主从
    在这里插入图片描述
    启动3台哨兵
    在这里插入图片描述
  • 准备2套主从
    在这里插入图片描述
  • 启动2套主从
    启动主36379
    在这里插入图片描述
    启动从36380
    在这里插入图片描述
    启动主46379
    在这里插入图片描述
    启动从46380
    在这里插入图片描述
  • 启动代理
    在这里插入图片描述
  • 测试
    连接代理,set一些值
    在这里插入图片描述
    连接主36379看一下
    在这里插入图片描述
    连接从36380看一下
    在这里插入图片描述
    连接主46379看一下
    在这里插入图片描述
    连接从46380看一下
    在这里插入图片描述
  • 人为指定落到同一个点
    在这里插入图片描述
    在这里插入图片描述

redis自带的cluster

脚本方式

在这里插入图片描述
在这里插入图片描述
启动

./create-cluster start

在这里插入图片描述
分赃(分配槽位)
在这里插入图片描述
客户端连接(路由请求模式)
在这里插入图片描述
随便连一个,比如:30001,然后set k1,报错,怎么回事?
这种模式,连30001,提示要移动到30003上去操作。
在这里插入图片描述
去到30003执行,成功
在这里插入图片描述
在30003上执行,set k2,又报错,提示要移动到30001上去执行
在这里插入图片描述
去30001执行,成功
在这里插入图片描述
再在30001执行,set k3 成功;再执行set k4,报错,要求去到30002执行
在这里插入图片描述
在30002执行,成功。在30002执行set k5,报错,要求去到30003执行
在这里插入图片描述
取到30003执行,成功。如此往复。。。
在这里插入图片描述
普通客户端就是报错模式,使用它的客户端应该是:

redis-cli -c -p 30001

在这里插入图片描述
事务
在这里插入图片描述
关闭、清理
在这里插入图片描述

命令方式
redis-cli --cluster create 127.0.0.1:30001 127.0.0.1:30002 127.0.0.1:30003 127.0.0.1:30004 127.0.0.1:30005 127.0.0.1:30006 --cluster-replicas 1

在这里插入图片描述


上一篇《09 Redis的集群:主从复制、CAP、PAXOS、cluster分片集群01》
下一篇《11 Redis开发:spring.data.redis、连接、序列化、high/low api》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值