Codis架构

作者: 滩主 | 来源:发表于2018-11-09 11:10 被阅读0次

介绍

Redis丰富的数据结构、超高的性能和简单的协议,使其非常适合作为数据库的上游缓存层,不过受限于单点的内存容量,Codis是一个分布式redis解决方案

Redis

image.png

Codis/Redis协议

image.png

集群架构

codis采用一层无状态的proxy层,将分布式逻辑写在proxy上,底层的存储引擎还是Redis,数据的分布状态存储于zookeeper(etcd)中


image.png

读写分离

Redis本身的replication模型是主从异步复制,在master上写成功后,在slave上是否能读到这个数据是没有保证的,而让业务方处理一致性的问题还是蛮麻烦的。而且Redis单点的性能还是蛮高的,不像mysql之类的真正的数据库,没有必要为了提升一点点读QPS而让业务方困惑

数据迁移

codis-config 管理工具中, 每次迁移任务的最小单位是 slot
如: 将slot id 为 [0-511] 的slot的数据, 迁移到 server group 2上, –delay 参数表示每迁移一个 key 后 sleep 的毫秒数, 默认是 0, 用于限速.

$ ../bin/codis-config slot migrate 0 511 2 --delay=10

我们在 Codis/Redis 中添加了一些指令, 实现基于key的迁移, 如 SLOTSMGRT等 (命令列表), 每次会将特定 slot 一个随机的 key 发送给另外一个 codis redis 实例, 这个命令会确认对方已经接收, 同时删除本地的这个 k-v 键值, 返回这个 slot 的剩余 key 的数量, 整个操作是原子的.
codis将所有的数据预分配为1024个slot,迁移的过程典型的二阶段提交
1、在pre_migrate阶段,proxy如果收到这个slot的请求,会block住直到migrate状态了才开始处理.
2、在migrate阶段,如果新的处理该slot的proxy接收到了该slot的请求,首先会同步一份该slot的数据过来,再返回给客户端.

相关文章

  • codis安装部署

    codis架构 Codis组件 Codis 3.x 由以下组件组成: Codis FE:集群管理界面多个集群实例共...

  • Codis集群安装配置

    一.借用网上codis架构图(https://github.com/CodisLabs/codis) 各组件作用说...

  • Codis架构

    介绍 Redis丰富的数据结构、超高的性能和简单的协议,使其非常适合作为数据库的上游缓存层,不过受限于单点的内存容...

  • Codis3.1安装文档

    一、基本信息 1、Codis集群架构 2、环境信息 操作系统:macos 10.12.3 codis版本:3.1 ...

  • Codis集群部署

    一、架构 二、服务器规划 服务ipvip代理端口管理端口Codis config192.168.3.74dashb...

  • codis与pika的docker化

    codis dockerization codis 的3.1版本官方已经提供Dockerfile支持生成codis...

  • Ansible Role 数据库 之【codis】

    Ansible Role: Codis 安装Codis集群 介绍 Codis 是一个分布式 Redis 解决方案,...

  • Codis单机部署

    Codis单机部署 前提准备 安装步骤 下载 Codis 源代码 编译 Codis 源代码 快速启动 启动codi...

  • Codis 实现 Redis 集群(下)

    基于 Codis 集群上篇 完成 Codis 集群操作 初始化 slots 槽位初始化 执行 ./codis-co...

  • Redis +Codis 百万并发同城多机房使用与经验

    摘要:Codis-Plus 是一个分布式 Redis 解决方案, Codis-Plus是基于Codis 2.x 分...

网友评论

    本文标题:Codis架构

    本文链接:https://www.haomeiwen.com/subject/pqvnxqtx.html