为什么搭建集群?

  • 自动把数据划分到各个节点
  • 单个节点故障时可继续工作

集群中每个节点一般需要两个端口

  • 10000 Redis Cluster 节点对节点的Communication channel,用于节点通信
  • 6379 普通的server client

Redis Cluster一般与Docker配合使用.Docker 提供port mapping技术,可以让一个程序实际运行的端口与暴露在外的端口不同,也就是可让一个端口运行多个程序。

Redis Cluster 的数据分片(sharding翻译过来是这个吧)

  • 算法:一个Redis Cluster有16384个key slot(槽),对于一个给定的key我们按一定方式对16384取模
  • 每个node负责一部分的key slot. 如现在集群里有三个节点A,B,C。 给A分配0~5500的key slot,B分配5500~11000,C分配11001~16384的key slot。 一个命令若涉及多个key,那么这些key都属于一个slot

master-slave模型

  • 为了保证集群的available,cluster为每一个master node 创建了一个slave node.如现在有三个node A,B,C,在创建它们的同时又创建了A1,B1,C1作为备份。A挂了就用A1,A1挂了那就没办法了。

Redis Cluster的一致性

  • redis提供wait命令,实现同步写,但在复杂情况下仍可能出现写丢失。
  • node timeout ,这个时间过后mastrer被它的replicas替代。这个参数很重要

本文固定链接:

Redis 集群搭建

http://www.js-code.com/node-js/node-js_39379.html

80%的人都看过