去中心化模式特点

之前介绍的主从模式和哨兵模式都只有一个master主节点,如果写操作并发比较大时,这两个模式就会堵塞。这时就可以使用集群化模式,也称之为去中心化模式,其特点是多master和多slave。

去中心化的原理为:Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 会先对 key 使用 crc16 算法算出一个结果,然后将结果对 16384 求余,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点上。当你往Redis Cluster中加入一个Key时,会根据 crc16(key) mod 16384计算这个 key 应该分布到哪个 hash slot 中,一个hash slot 中会有很多key和value。你可以理解成分区,使用单节点时的redis时只有一个表,所有的key都放在这个表里,当改用Redis Cluster以后会自动为你生成16384个分区表,写入数据时会根据上面的算法来决定你的 key 应该存在哪个分区。

搭建去中心化模式

准备工作


此次使用同一主机的不同端口来模拟多个服务进程,分别使用7001、7002、7003、7004、7005、7006六个端口来搭建去中心化模式。

首先修改配置文件中的以下内容。

# 设置远程连接IP改为任意
bind 0.0.0.0 -::1
# 服务进程端口
port 7001
# 使用守护线程方式启动
daemonize yes
# 开启 aof 持久化
appendonly yes
# 日志文件名称
appendfilename "appendonly7001.aof"
# 日志文件夹名称
appenddirname "appendonlydir7001"
# 开启集群模式
cluster-enabled yes
# 集群配置文件
cluster-config-file nodes-7001.conf
# 集群超时时间
cluster-node-timeout 5000

并为其他五个端口生成配置文件。

开始搭建

启动所有配置文件,并查看进程状况。

使用redis-cli --cluster命令为端口配置主从关系及哈希槽。

# 1为每个主节点的从节点个数
redis-cli --cluster create --cluster-replicas 1 192.168.112.66:7001 192.168.112.66:7002 192.168.112.66:7003 192.168.112.66:7004 192.168.112.66:7005 192.168.112.66:7006

运行完成后可以查看各个服务的主从关系。

测试

登入服务测试搭建结果。

# -c为使用集群化模式 -p为链接端口号 -h为服务器IP(本地可以省略)redis-cli -c -p 7001

写入数据时,redis会先对 key 使用 crc16 算法算出一个结果,然后将结果对 16384 求余,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点上,然后根据数值选择对应的主服务器进行写操作。

模拟其中一个主节点(此处例举为7003端口)宕机。

使用命令重新查看集群状态。

# 检查当前集群状态 链接的IP地址以及服务端口
redis-cli --cluster check 192.168.112.66:7001


可以看到7003的从节点7004已经替代选举为主节点,说明集群模式集成了哨兵模式,可以对从节点进行选举。

Redis集群——去中心化模式相关推荐

  1. redis集群的几种模式

    redis集群的几种模式 主从模式 哨兵模式 Cluster集群模式(推荐) 三种模式都有搭建成功,相比之下,个人还是推荐Cluster集群 主从模式 主从模式(Master-Slave Replic ...

  2. 独立站 “ 去中心化 ” 模式崛起,席卷跨境企业转型浪潮

    一:独立站趋势 今年以来,受疫情全球蔓延.地缘政治等因素的影响,逆全球化趋势明显,外贸行业面临巨大挑战.大量企业面临订单下降.物流通道不畅.资金紧张.供应链阻断等压力. 而从需求端来看:去中心化的社交 ...

  3. redis集群之主从复制+哨兵模式

    文章目录 一.redis集群之主从复制 1.1.集群介绍 1.2.搭建过程 1.3.验证 二.redis集群之哨兵模式 2.1.部署过程 1.搭建主从复制集群 2.设置哨兵模式的配置文件 3.启动哨兵 ...

  4. redis集群的三种模式

    通过持久化功能,Redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,因为持久化会把内存中数据保存到硬盘上,重启会从硬盘上加载数据.但是由于数据是存储在一台服务器上的,如果这台服务器出 ...

  5. 搭建高可用的redis集群,避免standalone模式带给你的苦难

    现在项目上用redis的话,很少说不用集群的情况,毕竟如果生产上只有一台redis会有极大的风险,比如机器挂掉,或者内存爆掉,就比如我们生产环境 曾今也遭遇到这种情况,导致redis内存不够挂掉的情况 ...

  6. redis集群的发布订阅模式

    项目开发过程中,遇到需要发消息的情况,是不是脑海里不自主的浮现kafka.rabbitmq等常用的消息队列?但如果消息非常简单,并且用量也不大,消息队列就会有点大材小用了吧,忽然想起了redis 也有 ...

  7. Tea.xyz: 一个去中心化模式的激励开源社区,Homebrew 作者建立

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! tea 是统一包装的基础设施.来自 brew 的创建者,tea 是一个独立的.适用于所有平台的二进制文件,使整个开 ...

  8. 获国际架构顶会ATC2021最佳论文!Fuxi2.0去中心化的调度架构详解

    简介: 近日,在国际体系架构顶会USENIX ATC2021上,阿里云飞天伏羲团队与香港中文大学合作的一篇论文<Scaling Large Production Clusters with Pa ...

  9. redis集群之哨兵模式【原】

    redis集群之哨兵(sentinel)模式 哨兵模式理想状态 需要>=3个redis服务,>=3个redis哨兵,每个redis服务搭配一个哨兵. 本例以3个redis服务为例: 一开始 ...

最新文章

  1. down redis集群_硬核干货!Redis 分布式集群部署实战
  2. java关于23种设计模式的有趣见解
  3. OpenGL 几何着色器Geometry Shader
  4. php mysql source_详解MySQL数据库中有关source命令
  5. junit junit_使用junit做其他事情
  6. windows2012同步linux时间,Windows server2012时间同步NTP配置
  7. 拉勾发布互联网人薪资报告 2021开年薪资环比增长7%
  8. 面向对象之自动生成助记码
  9. 因使用盗版软件赔偿 869 万元 :CIO被开除、罚 15 万元
  10. 教你如何在微信浏览器下载APP
  11. 计算机出现蓝屏怎么恢复,重启电脑后出现蓝屏怎么办
  12. android highcharts柱状图实例,Highcharts 基本柱形图
  13. Logstash:使用 dissect 导入 CSV 格式文档
  14. vue中鼠标悬停显示提示信息
  15. mysql数据迁移与同步常用解决方案总结
  16. springboot项目之部署阿里云服务器--简版
  17. python怎么多行输入_python如何输入多行
  18. git提示please tell me who you are
  19. 计算机中各种进制之间的相互转换过程
  20. 金融业信贷风控算法5-时间序列模型概述

热门文章

  1. 爬虫爬取京东产品数据
  2. ORC工具(使用阿里云统一文字识别接口实现)
  3. 高德地图不显示定位点
  4. python 少儿不宜图片识别(基于肤色数量)
  5. C++学习笔记——第三天运算符和表达式
  6. 表达式计算器 java代码_Java实现简单的表达式计算器功能示例
  7. 巧用STM32串口DMA的normal和circular模式,达到并行执行效果
  8. 立创EDA学习笔记(3)——PCB绘制
  9. 多搜- 多个网站一起搜(舆情监控版)
  10. 【计算机基础】03-Word知识