Redis 集群教程(一)
文章目录
Redis 集群教程
本文依据官方教程(http://redis.io/topics/cluster-tutorial)翻译并夹杂个人理解撰写而成,如有翻译或理解错误还请指正。
本文不涉及对分布式系统概念的复杂理解,而只是Redis集群的简单介绍,同时从用户的角度来描述Redis集群的如何部署,测试和使用。如果你打算运行一个更严格的Redis集群,强烈建议你阅读更正式的规范(http://redis.io/topics/cluster-spec)。
Redis集群的最新版本是阿尔法版,如果你发现任何问题请给邮件列表发邮件或者在github上留言。
Redis集群
Redis的集群运行方式是将数据自动分片至多个不同节点上,在此模式上用命令处理多个键值将不受支持,因为这将导致数据在不同节点间的移动,使得Redis不能提供原有的高性能和可预测性。但是集群在分区的过程中仍可以保持一定程度的可用性,也就是说在部分节点故障或无法连接时,集群仍可以正常运行。
数据分片
Redis集群采用的不是一致性hash,而是将所有key值通过一定的运算放在一个叫做hash slot的容器里。而这个运算就是模除,每个集群拥有16384个hash slot,将key值模除16384即得出该key所在的hash slot。
集群中的每个节点都存储着hash slot的一个子集,例如你的一个集群有三个节点,则:
节点A包含的hash slot 从0到5500;
节点B包含的hash solt从55501到11000;
节点C包含的hash solt 从11001到16384。
这将使集群增加和删除节点变得很容易,比如我想新添一个节点D,我只需从A,B,C节点移动一些hash slot 到D节点即可,同样如果我想删除节点A,只要把A节点上的hash solt移交到B和C节点,当A节点的所有hash solt都移动完后我就可以把A节点彻底拿掉了。除了上面的两种操作还有更改节点hash solt的比例的操作,因为这些操作都是所谓的热操作,所以在进行这些操作时集群都是可以正常运行,无需任何宕机时间的。
主从模式
为了保持集群的可用性,当某些节点宕机或者失去连接时,集群采用了主从模式,在这种模式中每个节点都实现了1对N的复制。还拿上面的例子来说明,如果B节点宕机,集群将不能正常服务,因为从5501到11000之间的hash slot将不能访问。如果我们的集群是主从复制模式的,集群由节点A,B,C作为主节点而节点A1,B1,C1作为从节点,当节点B宕机时,由于节点B1复制于节点B,集群选择节点B1作为新的主节点来代替节点B,这样集群就可以继续正常运行了。尽管如此,如果节点B和节点B1同时宕机,集群将不能正常运行。
(未完待续…)
创建并使用集群
创建
玩转集群
测试应用
重新分片
故障转移
添加节点
移除几点
文章作者 古道
上次更新 2013-12-26