Redis第五章之原生集群特点

本文深入探讨Redis原生集群的特点,包括虚拟槽分区的设计、节点间通信规则,以及集群功能在数据操作和复制等方面的限制。理解这些特性有助于开发者优化集群应用和避免常见问题。

Redis 第五章之原生集群特点

Redis数据分区

Redis Cluser采用虚拟槽分区,所有的键根据哈希函数映射到0~16383整数槽内,计算公式:slot=CRC16(key)&16383。每一个节点负责维护一部分槽以及槽所映射的键值数据。

在这里插入图片描述

Redis虚拟槽分区的特点:

  1. 解耦数据和节点之间的关系,简化了节点扩容和收缩难度。
  2. 节点自身维护槽的映射关系,不需要客户端或者代理服务维护槽分区元数据。
  3. 支持节点、槽、键之间的映射查询,用于数据路由、在线伸缩等场景。

集群通信

  1. 集群中的每个节点都会单独开辟一个TCP通道,用于节点之间彼此通信,通信端口号在基础端口上加10000。
  2. 每个节点在固定周期内通过特定规则选择几个节点发送ping消息。
  3. 接收到ping消息的节点用pong消息作为响应。

集群功能限制

Redis集群相对单机在功能上存在一些限制,需要开发人员提前了解,在使用时做好规避。

  1. key批量操作支持有限。如mset、mget、lua脚本目前只支持具有相同slot值的key执行批量操作。对于映射为不同slot值的key由于执行mget、mget等操作可能存在于多个节点上因此不被支持。
  2. key事务操作支持有限。同理只支持多key在同一节点上的事务操作,当多个key分布在不同的节点上时无法使用事务功能。
  3. key作为数据分区的最小粒度,因此不能将一个大的键值对象如hash、list等映射到不同的节点。
  4. 不支持多数据库空间。单机下的Redis可以支持16个数据库,集群模式下只能使用一个数据库空间,即db0。
  5. 复制结构只支持一层,从节点只能复制主节点,不支持嵌套树状复制结构。(就从节点下再来个从节点)
  6. lua脚本会缓存在大多数节点下,但是在集群模式下每个节点都可以调用。
### 安装 RabbitMQ Server 3.8.32 on CentOS 7CentOS 7安装特定版本的 RabbitMQ Server(如 3.8.32)可以通过下载官方提供的 `.rpm` 包并使用 `yum` 或 `dnf` 进行安装。以下是详细的步骤: 1. **添加 Erlang Solutions 仓库** RabbitMQ 依赖于 Erlang,因此需要先安装合适的 Erlang 版本。可以使用 Erlang Solutions 提供的仓库来安装 Erlang。 ```bash curl -fsSL https://packages.erlang-solutions.com/rpm/centos/erlang_solutions.asc | sudo rpm --import - echo "deb https://packages.erlang-solutions.com/rpm/centos-7-x86_64/ stable main" | sudo tee /etc/yum.repos.d/erlang-solutions.repo ``` 2. **安装 Erlang** 安装适用于 RabbitMQ 的 Erlang 版本。RabbitMQ 3.8.x 需要 Erlang 21.x 到 23.x 之间的版本。 ```bash sudo yum install -y esl-erlang ``` 3. **下载 RabbitMQ 3.8.32 RPM 包** 可以从 [RabbitMQ 官方网站](https://www.rabbitmq.com/releases/rabbitmq-server/) 下载特定版本的 `.rpm` 包。 ```bash wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.32/rabbitmq-server-3.8.32-1.el7.noarch.rpm ``` 4. **安装 RabbitMQ Server** 使用 `yum` 或 `rpm` 命令安装下载的 `.rpm` 包。 ```bash sudo yum install -y rabbitmq-server-3.8.32-1.el7.noarch.rpm ``` 5. **启动 RabbitMQ 服务** 安装完成后,启动 RabbitMQ 服务并设置为开机自启。 ```bash sudo systemctl enable rabbitmq-server sudo systemctl start rabbitmq-server ``` 6. **启用管理插件** 如果需要使用 Web 管理界面,可以启用管理插件。 ```bash sudo rabbitmq-plugins enable rabbitmq_management ``` 7. **创建管理员用户** 创建一个具有管理权限的用户,并为其分配权限。 ```bash sudo rabbitmqctl add_user admin your_password sudo rabbitmqctl set_user_tags admin administrator sudo rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" ``` 8. **配置防火墙** 如果系统启用了防火墙(如 `firewalld`),需要开放 RabbitMQ 的端口(默认为 5672,管理界面为 15672)。 ```bash sudo firewall-cmd --permanent --add-port=5672/tcp sudo firewall-cmd --permanent --add-port=15672/tcp sudo firewall-cmd --reload ``` 9. **验证安装** 可以通过以下命令检查 RabbitMQ 的状态和集群信息。 ```bash sudo systemctl status rabbitmq-server sudo rabbitmqctl cluster_status ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醒狮运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值