豌豆荚Redis集群方案:Codis
Codis简介
Codis是一个分布式Redis解决方案,对于上层的应用来说,连接到CodisProxy和连接原生的RedisServer没有明显的区别(不支持的命令列表),上层应用可以像使用单机的Redis一样使用,Codis底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,对于前面的客户端来说是透明的,可以简单的认为后边连接的是一个内存无限大的Redis服务。
特性:
自动平衡
使用非常简单
图形化的面板和管理工具
支持绝大多数 Redis 命令,完全兼容 twemproxy
支持 Redis 原生客户端
安全而且透明的数据移植,可根据需要轻松添加和删除节点
提供命令行接口
RESTful APIs
Codis架构
Codis由四部分组成。
- CodisProxy(codis-proxy)
codis-proxy是客户端连接的Redis代理服务,codis-proxy本身实现了Redis协议,表现得和一个原生的Redis没什么区别(就像Twemproxy),对于一个业务来说,可以部署多个codis-proxy,codis-proxy本身是无状态的。
- CodisManager(codis-config)
codis-config是Codis的管理工具,支持包括,添加/删除Redis节点,添加/删除Proxy节点,发起数据迁移等操作.codis-config本身还自带了一个httpserver,会启动一个dashboard,用户可以直接在浏览器上观察Codis集群的运行状态。
- CodisRedis(codis-server)
codis-server是Codis项目维护的一个Redis分支,基于2.8.13开发,加入了slot的支持和原子的数据迁移指令.Codis上层的codis-proxy和codis-config只能和这个版本的Redis交互才能正常运行。
- ZooKeeper
Codis依赖ZooKeeper来存放数据路由表和codis-proxy节点的元信息,codis-config发起的命令都会通过ZooKeeper同步到各个存活的codis-proxy。
Codis支持按照Namespace区分不同的产品,拥有不同的productname的产品,各项配置都不会冲突。
目前Codis已经是稳定阶段,豌豆荚及大部分企业已经在使用该解决方案。
整体架构图:
对比Twemproxy, Redis Cluster
Function | Codis | Twemproxy | Redis Cluster |
---|---|---|---|
rowresharding without restarting cluster | Yes | No | Yes |
rowreshardingpipeline | Yes | Yes | No |
hash tags for multi-key operations | Yes | Yes | Yes |
multi-key operations while resharding | Yes | - | No(details) |
Redis clients supporting | Any clients | Any clients | Clients have to support cluster protocol |
部分截图
Proxy:
Slots:
Group:
Sentinel:
推荐阅读
分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。
最新文章
- C算法编程题(二)正螺旋
- 前端XSS攻击和防御
- CSS3自动添加省略号
- Spring Bean配置
- JAVA中的NIO(一)
- 【M14】明智运用异常规范
- paip. mysql如何临时 暂时 禁用 关闭 触发器
- CSS3实现兼容性的渐变背景效果
- Twenty Newsgroups Classification任务之二seq2sparse(5)
- 使用JS的FormData对象
- 初识Javascript.03 -- switch、自增、while循环、for、break、continue、数组、遍历数组、合并数组concat
- JavaScript的8行代码搞定js文件引入问题
- 网站开发进阶(二十五)js如何将html表格导出为excel文件
- python smtplib发email
- 20175208 《Java程序设计》第七周学习总结
- PMP:9.项目资源管理
- 通信——基于Xmpp协议实现的聊天室
- systemctl添加开机启动
- 重读《深入理解Java虚拟机》四、虚拟机如何加载Class文件
- JPA原理与实践、多数据源配置
热门文章
- wordpress翻译插件gtranslate
- JUC 一 CountDownLatch(闭锁)
- thinkphp 动态配置
- BZOJ 3779: 重组病毒(线段树+lct+树剖)
- ES,kibana通过nginx添加访问权限
- Model Maker上手指南
- linux使用nmon监控、分析系统性能
- js实现图片资源、blob、base64的各种场景转换
- 2019-8-31-C#-字典-Dictionary-的-TryGetValue-与先判断-ContainsKey-然后-Get-的性能对比
- 【2-SAT】[JSOI2010]满汉全席