10_Redis分布式

一、Redis的分布式
        
        概念
            分布式数据库把这个数据库分区规则映射到多个节点,即把数据划分到多个节点上,每个
        节点负责整体数据的一个子集
        
        比如库有900条用户数据,有3个redis节点,将900条分成3分,分别存入到3个redis节点
        
        分区规则
            常见的分区股则哈希分区和顺序分区,redis 集群使用了哈希分区,顺分区暂用不到,
        RedisCluster 采用了哈希分区的“虚拟槽分区”方式(哈希分区节点取余,一致性哈希
        分区和虚拟槽分区)
         
        虚拟分区
            槽:slot
                
            RedisCluster采用此分区,所有的键根据哈希函数(CRC16383)映射到0-16383槽内,共
            16384个槽位,每个节点维护部分槽及槽映射的键值数据
            哈希函数:Hash()=CRC16[KEY]&16383
        
        RedisCluster 的缺陷
        a.键的批量操作支持有限,比如mset,mget,如果多个键映射在不同的槽,就不支持了
          mset name james age 19
        b.键事务支持有限,当多个键分布在不同节点是无法使用事务,同一节点是支持事务
        c.键是数据分区的最小粒度,不能将一个很大的键值映射到不同的节点
        d.不支持多数据库,只有0,select 0
        e.复制结构只支持单层结构,不支持树形结构
        
        下载链接 https://pan.baidu.com/s/1kWsf3Rh 密码:n3pc
        从这个链接下载 ruby-2.3.1.tar.gz 和redis.3.3.0.gem 
        tar -zxvf ruby-2.3.1.tar.gz
        a.cd ruby-2.3.1
        b../configure-prefix=/usr/local/ruby
        c.make&nake install //过程大概5-10分钟
        d.然后gem install -l  redis-3.3.0.gem //若没有gem需要安装yum install gem -y
        e.准备好6个节点配置文件redis6379.conf...redis6391.conf 加上bind 192.168.42.111
        f (注意不要设置requirepass,不然./redis-trib访问不了),将/usr/local/bin/clusterconf/data的
            config-file删除
        g.依次启动6个节点:./redis-server clusterconf/redis6379.conf    
        h.如果之前redis有数据存在,flushall清空:(不需要cluster meet)
        i../redis-trib.rb create -replicas 1  192.168.42.111:6379 192.168.42.111:6380
        192.168.42.111:6381 192.168.42.111:6389 192.168.42.111:6390 192.168.42.111:6391
        
        以6379 为例
        port 6379   //节点端口
        cluster-enabled yes    //开启集群模式
        cluster-node-timeout 15000 //节点超时时间
        cluster-config-file    /usr/local/bin/clustercon/data/nodes-6379.conf  //集群内部配置文件
        
        其它节点的配置和这个一致,改端口即可
        
        分别启动6个节点
        ./redis-server clusterconf/redis6379.conf &
        ./redis-server clusterconf/redis6380.conf &
        ./redis-server clusterconf/redis6381.conf &
        ./redis-server clusterconf/redis6389.conf &
        ./redis-server clusterconf/redis6390.conf &
        ./redis-server clusterconf/redis6391.conf &
    
    
    Gossip协议的主要职责就是信息交换,信息交换的载体就是节点之间彼此发送的Gossip消息,常用
    的Gossip消息有ping消息、pong消息、meet消息、fail消息
    
    meet消息:用于通知新节点加入,消息发送者通知接受者加入到当前集群,meet消息通信完后,接收
              节点会加入到集群中,并进行周期性ping pong交换
    ping消息:集群内交换频繁的消息,集群内每个节点每秒向其他发ping的消息,用于检测节点是在线
              和状态信息,ping消息发送封装自身节点和其他节点的状态数据
    pong消息: 当接收ping meet消息时,作为响应消息返回给发送方,用来确认正常通信,pong消息也封闭
              了自身状态数据
    fail消息: 当前判定集群内的另一节点下线时,会向集群内广播一个fail消息

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值