加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

深入浅出百亿请求高可用Redis(codis)分布式集群揭秘

发布时间:2019-04-21 05:45:34 所属栏目:教程 来源:jackiej
导读:副标题#e# 一、背景 随着直播元年开启,越来越多的直播产品如春笋般出现,在拉动营收的过程中,产品竭尽全力思考着各种活动来刺激用户的消费欲望,而这类活动的基础形式就是榜单,在2016年我们基于cmem及扫描流水表的方式来实现榜单排名,2017开始,我们对

主要是在迁移动作执行前,所有的请求都能够感知到路由的变化,所以有了一阶段的处理流程,此处实现是通过并行发送给所有的proxy,proxy会对相应的slot加写锁,所以的请求在队列中排队,直到所有的proxy都通知dashboard之后,proxy的锁才放开,此时请求的延时会有轻微增高,但由于是并行响应,影响时间很短,视图会轻微抖动。

迁移动作

主要由dashboard按批次触发直到所有的key都迁移ok,迁移的过程,slot上的key可能存在2种情况,一种在新的redis实例上A,一种在旧的redis实例上B,所以对于有迁移状态的slot,所有向这个slot发送的命令都通过在redis中定制的命令SLOTSMGRT-EXEC-WRAPPER来处理,该命令是基于3.2的分支新增的,该命令主要做这几个事情,1)判断key是否存在,如果存在,但不在迁移批次,则直接对key调用真实方法,如果存在,但在迁移批次,则允许读操作,不允许写操作,2)如果key不存大,则key可能已经被迁移到新实例,也可能key不存在,则通知proxy前往新的实例进行操作

迁移性能

Codis的迁移其实之前2.x版本的迁移性能并不高,3.x之前性能提升了非常之大,千万级别的zset结构迁移只需要10多秒,而在原来的模式需要50多秒,具体原因在于

深入浅出百亿请求高可用Redis(codis)分布式集群揭秘

迁移性能数据

6.2 迁移异常处理

另外,看到这里,不知道大家有没有什么问题,不过这里我准备了一些问题,来看看codis是如何来处理的,特别在网络环境复杂,不稳定的情况下怎么操作。

问题一,把大key拆分成小批次进行迁移,如果批次迁移失败,超时,怎么做?

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读