首页 / REDIS / Redis cluster
Redis cluster
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Redis cluster,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2127字,纯文字阅读大概需要4分钟。
内容图文
![Redis cluster](/upload/InfoBanner/zyjiaocheng/1093/c0f1ebaef5d74ec2ab24fb6f6621f5c4.jpg)
redis cluster 数据分片 master slave hash slot redis cluster vs replication + sentinal hash slot 简化 节点新增或移除时的数据迁移 手工分配slot CLUSTER ADDSLOTS 0 1 2 3 4 ... 5000 每个节点会记录哪些槽指派给了自己,哪些槽指派给了其他节点。 客户端向节点发送命令,节点要计算这个键属于哪个槽。 如果是自己负责的槽,那么直接执行命令,如果不是,向客户端返回MOVED,指引转向正确的节点。 slave 高可用 热备 主备切换 redis cluster默认不支持slave节点读写 redis cluster节点间采取gossip协议进行通信 元数据存储 集中式 vs 分布式 (gossip) 集中式 优点 元数据的更新和读取,时效性好,一旦元数据出现了变更,立即就更新到集中式的存储中,其他节点读取的时候立即就可以感知到 缺点 所有的元数据的跟新压力全部集中在一个地方,可能会导致元数据的存储有压力 gossip 优点 元数据分散,降低了压力; 缺点 元数据更新有延时,可能导致集群的一些操作会有一些滞后 每个节点都有一个专门用于节点间通信的端口,提供服务的端口号+10000 每隔一段时间都会往另外几个节点发送ping消息,其他节点收到ping之后返回pong 交换的信息 故障信息,节点的增加和移除,hash slot信息,等 gossip协议包含多种消息,包括ping,pong,meet,fail 等 meet: 某个节点发送meet给新加入的节点,让新节点加入集群中 redis-trib.rb add-node 每个节点发送ping给其他的节点, 交换数据,进行元数据的更新 某个节点判断另一个节点fail之后,就发送fail给其他节点 ping很频繁,并携带一些元数据,可能会加重网络负担 每个节点每秒会执行10次ping,每次会选择5个最久没有通信的其他节点 如果发现某个节点通信延时达到了cluster_node_timeout / 2,那么立即发送ping,避免数据交换延时过长 每次ping,带上自己的信息,还要带上1/10其他节点的信息 至少包含3个其他节点的信息,最多包含总节点-2个其他节点的信息 查看key对应的slot cluster keyslot mykey redis-cli -c参数 自动重定向 接收到moved之后,自动重定向到对应的节点执行命令 根据key计算CRC16 ,然后对16384取模 用hash tag 手动指定key对应的slot set mykey1:{100} set mykey2:{100} 重定向消耗网络IO smart jedis 本地维护一份hashslot -> node 映射表,缓存 ,避免 moved重定向 JedisCluster 初始化时随机选择一个node,初始化hashslot -> node映射表 为每个节点创建一个JedisPool连接池 本地计算key的hashslot,在本地映射表找到对应的节点 返回moved 时会更新本地 映射表 定位节点 重试超过5次 JedisClusterMaxRedirectionException 如果hash slot正在迁移,返回ask重定向给jedis 收到ask不会更新hashslot本地缓存 高可用性与主备切换 1 判断节点宕机 如果一个节点认为另外一个节点宕机,那么就是pfail,主观宕机 如果多个节点都认为另外一个节点宕机了,那么就是fail,客观宕机,跟哨兵类似,sdown,odown 在cluster-node-timeout内,某个节点一直没有返回pong,那么就被认为pfail 如果一个节点认为某个节点pfail了,那么会在gossip ping消息中,ping给其他节点,如果超过半数的节点都认为pfail了,那么就会变成fail 2 从节点过滤 对宕机的master node,slave node中,选择一个切换成master node 检查每个slave node与master node断开连接的时间,如果超过了cluster-node-timeout * cluster-slave-validity-factor,那么就没有资格切换成master 3 从节点选举 哨兵:对所有从节点进行排序,slave priority,offset,run id 每个从节点,都根据自己对master复制数据的offset,来设置一个选举时间,offset越大(复制数据越多)的从节点,选举时间越靠前,优先进行选举 所有的master node开始slave选举投票,给要进行选举的slave进行投票,如果大部分master node(N/2 + 1)都投票给了某个从节点,那么选举通过,从节点可以切换成master
原文:https://www.cnblogs.com/daomeidan/p/12624103.html
内容总结
以上是互联网集市为您收集整理的Redis cluster全部内容,希望文章能够帮你解决Redis cluster所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。