Redis分布式技术

11 篇文章 0 订阅
1 篇文章 0 订阅

Redis的主从复制

  • 在redis.conf配置文件中找到 # replicaof <masterip> <masterport>  打开并配置从属于哪个主节点
  • 启动后可以使用 slaveof host port指定从属于哪个主节点
  • 查看主从的关系 info replication

  • 只有主节点能写入数据,从节点只能读数据
  • slaveof no one 从主节点中脱离

redis主从复制的不足

  • 没有解决高可用问题
  • 需手动切换主从

高可用思路

  • 服务端:自动切换主从
  • 客户端:自动发现路由
  • Sentinel哨兵:是一个特殊的Redis服务监控master/slave并且相互监控(raft算法先到先得,少数服从多数)

 master选举因素

  • 如果与哨兵连接断开的比较久,超过了某个阈值,就失去了选举权。
  • 如果拥有选举权,那就看谁的优先级高,这个在配置文件里可以设置(replica-priority 100),数值越小优先级越高
  • 如果优先级相同,就看谁从master中复制的数据最多(复制偏移量最大),选最多的那个。
  • 如果复制数量也相同,就选择进程id最小的那个。

Sentinel不足

  • 主从切换的过程中会丢失数据,因为只有一个master
  • 只能单点写,没有解决水平扩容的问题(分片)

一致性哈希:

  • 分布于get set

  •  虚拟节点

https://gper.club/articles/7e7e7f7ff3g5bgcdg60(转载,redis单机部署以及redis集群部署权限归咕泡学院所有)。

Redis Cluster架构

  • key分片:对slot(16383)进行分组。

Redis Cluster故障转移

  • slave发现自己的master变为FAIL
  • 将自己记录的集群currentEpoch加1,并广播FAILOVER_AUTH_REQUEST信息。
  • 其他节点收到该信息,只有master响应,判断请求者的合法性,并发送FAILOVER_AUTH_ACK,对每一个epoc只发送一次ack
  • 尝试failover的slave收集FAILOVER_AUTH_ACK
  • 超过半数后变成新的master
  • 广播Pong通知其他集群节点。

Redis Cluster特点

  • 无中心架构
  • 数据按照slot存储分布在多个节点,节点间数据共享,可动态调整数据分布。
  • 可扩展性,可线性扩展到1000个节点(官方推荐不超过1000个),节点可动态添加或删除。
  • 高可用性,部分节点不可用时,集群扔可用。通过添加Slave做standby数据副本,能够实现故障自动failover,节点之间通过gossip协议交换状态信息,用投票机制完成slave到master的角色提升。
  • 降低运维成本,提高系统的扩展性和可用性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值