美文网首页
Codis架构与实现-个人学习总结

Codis架构与实现-个人学习总结

作者: x1wan | 来源:发表于2016-11-21 14:48 被阅读734次

本博客主要用于个人学习总结,主要内容借助网络及作者的博客。

1、Codis是什么?

Codis是豌豆荚开源的基于redis的集群解决方案,redis引擎在2.8的基础上增加了slot的功能,采用proxy进行数据路由,用zk保存proxy节点信息和基于slot的路由信息。config server接收并处理集群的控制命令,部分服务采用go语言开发。

2、架构图

3、主要技术点

(1)存储和分布式逻辑分离 (2)用户数据基于slot做切分 (3)zk维护元数据 (4)config server处理控制面命令 (5)proxy做数据路由

4、负载均衡

数据被hash到1024个slot上,采用crc32(key) % 1024方法。

zk中保存相关的元数据。

proxy上缓存元数据信息,并依据该信息路由数据到后端的redis上。

扩缩容的时候slot会进行迁移,每次迁移会先通知proxy修改slot的状态。

5、动态扩容

(1)config-server首先向zk注册一个lock,发起迁移指令 pre_migrate slot_1 to group 2 给所有proxy

(2)config-server 标记slot_1的状态为 migrate, 将slot_1的服务指向group 2

(3)config-server不断向 group 1 发送migrate slot_1命令,每个命令将原子地迁移一个key

(4)迁移过程中收到属于这个slot的命令,将先迁移这个key到group 2,然后在group 2上处理命令。

(5)迁移完成标记slot_1状态为online,删除lock。

6、与社区集群解决方案比较

社区版:

(1)P2P模型,性能好。

(2)服务少,省虚机,成本低。

(3)很多功能集成到redis里,实现复杂。

(4)依赖smart client,现有服务升级困难。

Codis版:

(1)服务节点多,有性能和成本的问题。

(2)分布式和存储引擎分离,架构清晰。

(3)不需要smart client,升级容易。

(4)故障处理需要人工介入。

(5)迁移过程中数据访问需要与控制命令协调处理,没有很好的解耦控制和数据。

7、总结

分布式和存储引擎分离,控制流和数据流分离。

相关文章

  • Codis架构与实现-个人学习总结

    本博客主要用于个人学习总结,主要内容借助网络及作者的博客。 1、Codis是什么? Codis是豌豆荚开源的基于r...

  • 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 3.2 部署配置汇总

    Codis 3.2 部署配置汇总 概念总结 集群配置前需要了解架构,集群分片主要分三种: 客户端分片:这个需要自己...

  • C语言课程设计

    目录 实现目的游戏玩法介绍实现流程与作品架构任务列表及贡献度总结感想作品源码与仓库地址(附页)资料引用与出处(附页...

  • 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架构与实现-个人学习总结

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