redis-codis ( redis集群方案之一 )

1,为什么会出现codis

  • 单机内存太大则rdb文件就大,主从同步全量的时候耗时太长.
  • 单机内存太大则都使用一个机器的CPU,海量数据的处理肯定不够用
  • 分布式可以利用多个cpu的优势.而且可以存储海量的数据.
  • 在大数据高并发场景下,单个redis实例往往会无法应对
  • 其次在CPU利用率中上,单个redis实例只能利用单核,数据量太大,压力就会特别大

2、什么是codis

  1. codis是redis集群解决方案之一,codis是GO语言开发的代理中间件

  2. 当客户端向codis发送指令时,codis负责将指令转发给后面的redis实例来执行,并将返回结果转发给客户端

3、codis部署方案

  1. 单个codis代理支撑的QPS比较有限,通过启动多个codis代理可以显著增加整体QPS

  2. 多codis还能起到容灾功能,挂掉一个codis代理还有很多codis代理可以继续服务
    在这里插入图片描述

4、codis分片的原理

  1. codis负责将特定key转发到特定redis实例,codis默认将所有key划分为1024个槽位

  2. 首先会对客户端传来的key进行crc32计算hash值,然后将hash后的整数值对1024进行取模,这个余数就是对应的key槽位

  3. 每个槽位都会唯一映射到后面的多个redis实例之一,codis会在内存中维护槽位和redis实例的映射关系

  4. 这样有了上面key对应的槽位,那么它应该转发到那个redis实例就很明确了

  5. 槽位数量默认是1024,如果集群中节点较多,建议将这个数值大一些,比如2048,4096

5、不同codis槽位如何同步

  1. 如果codis槽位值存在内存中,那么不同的codis实例间的槽位关系得不到同步

  2. 所以codis还需要一个分布式配置存储的数据库专门来持久化槽位关系

  3. codis将槽位关系存储在zookeeper中,并且提供一个dashboard可以来观察和修改槽位关系
    在这里插入图片描述

参考博客:https://www.cnblogs.com/wuwuyong/p/11774679.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hsw Come on

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值