Redis系列学习笔记21 集群
2016-05-24 19:08
591 查看
集群
Redis 的分布式数据库实现Redis 集群是一个由多个 Redis 服务器组成的分布式网络服务器群,集群中的各个服务器被称为节点(node),这些节点会相互连接并进行通信。
分布式的 Redis 集群没有中心节点,所以用户不必担心某个节点会成为整个集群的性能瓶颈。
Redis 集群的每个节点都有两种角色可选,一个是主节点(master node),另一个是从节点(slave node):其中主节点用于储存数据,而从节点则是某个主节点的复制品。
集群使用分片来扩展数据库的容量,并将命令请求的负载交给不同的节点来分担。
集群将整个数据库分为 16384 个槽(slot),所有键都属于这 16384 个槽的其中一个, 计算键 key属于哪个槽的公式为 slot_number = crc16(key) % 16384 ,其中 crc16 为 16 位的循环冗余校验和函数。
集群中的每个主节点都可以处理 0 个至 16384 个槽,当 16384 个槽都有某个节点在负责处理时,集群进入上线状态,并开始处理客户端发送的数据命令请求。
对于一个被指派了槽的主节点来说,这个主节点只会处理属于指派给自己的槽的命令请求。如果一个节点接收到了和自己处理的槽无关的命令请求,那么节点会向客户端返回一个转向错误(redirection error),告诉客户端,哪个节点才是负责处理这条命令的,之后客户端需要根据错误中包含的地址和端口号重新向正确的节点发送命令请求。
集群搭建
设置和建立一个集群的方法搭建一个 Redis 集群需要执行以下步骤:
创建多个节点。
为每个节点指派槽,并将多个节点连接起来,组成一个集群。
当集群数据库的 16384 个槽都有节点在处理时,集群进入上线状态。
为了让 Redis 服务器以集群模式运行,我们需要在启动服务器时,打开服务器的集群模式选项:
cluster-enabled yes
另外,如果有多个节点运行在同一台机器里面,那么我们还需要为每个节点指定不同的端口号:
port 7000
我们可以将这两个配置值写入到 redis.conf 文件里面,然后执行以下命令来启动一个节点:
$ redis-server redis.conf
为了创建一个包含三个主节点和三个从节点的集群,我们需要执行以下命令:
$ ./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
其中,create 方法表示我们要创建一个集群,而之后的 –replicas 1 则表示让 redis-trib.rb 为集群中的每个主节点设置一个从节点,再之后输入的是各个节点的 IP 地址和端口号。
访问集群
使用集群客户端向集群发送命令请求twemproxy | 集群 |
---|---|
运作模式 | 代理模式,代理本身可能成为性能瓶颈,随着负载的增加需要添加更多 twemproxy来分担请求负载,但每个 twemproxy 本身也会消耗一定的资源。 |
分片 | 基本上是按照池中的服务器数量 N 来分片,每个服务器平均占整个数据库的 1/N。 |
复制和高可用 | 需要配合 Redis 的复制特性以及 Redis Sentinel 才能实现复制和高可用。 |
相关文章推荐
- redis安装问题小结
- 使用 Redis 和 Python 构建一个共享单车的应用程序
- Redis偶发连接失败案例实战记录
- Redis中实现查找某个值的范围
- win 7 安装redis服务【笔记】
- redis的hGetAll函数的性能问题(记Redis那坑人的HGETALL)
- Redis和Memcached的区别详解
- 分割超大Redis数据库例子
- Redis总结笔记(一):安装和常用命令
- Redis sort 排序命令详解
- 用Redis实现微博关注关系
- Redis实现信息已读未读状态提示
- redis中修改配置文件中的端口号 密码方法
- 在Ruby on Rails上使用Redis Store的方法
- Redis和Memcache的区别总结
- 在Node.js应用中使用Redis的方法简介
- Redis服务器的启动过程分析
- web 应用中常用的各种 cache详解
- 利用yum安装Redis的方法详解
- 从MySQL到Redis的简单数据库迁移方法