阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

基于Redis的开源分布式服务Codis

442次阅读
没有评论

共计 1807 个字符,预计需要花费 5 分钟才能阅读完成。

Redis 在豌豆荚的使用历程——单实例 ==》多实例,业务代码中做 sharding==》单个 Twemproxy==》多个 Twemproxy==》Codis,豌豆荚自己开发的分布式 Redis 服务。在大规模的 Redis 使用过程中,他们发现 Redis 受限于多个方面:单机 内存有限、带宽压力、单点问题、不能动态扩容以及磁盘损坏时的数据抢救。

基于 Redis 的开源分布式服务 Codis

Redis 通常有 3 个使用途径:客户端静态分片,一致性哈希;通过 Proxy 分片,即 Twemproxy;还有就是官方的 Redis Cluster,但至今无一个新版本。随后刘奇更详细的分析了为什么不使用 Twemproxy 和 Redis Cluster:

Twemproxy:最大的痛点是无法平滑的扩容或者缩容,甚至修改配置都需要重启服务;其次,不可运维,甚至没有 Dashboard。

Redis Cluster(官方):无中心化设计,程序难以编写;代码有点吓人,clusterProcessPacket 函数有 426 行,人脑难以处理所有的状态 切换;迟迟没有正式版本,等了 4 年之久;目前还缺乏最佳实践,没有人编写 Redis Cluster 的若干条注意事项;整个系统高度耦合,升级困难。

虽然我们有众多的选择,比如 Tair Couchbase 等,但是如果你需要更复杂和优秀的数据结构, Redis 可称为不二之选。基于这个原因,在 Redis 之上,豌豆荚设计了 Codis ,并将之开源。

Codis

既然重新设计,那么 Codis 首先必须满足自动扩容和缩容的需求,其次则是必须避免单点故障和单点带宽不足,做一个高可用的系统。在这之后,基于原有的遗留系统,还必须可以轻松地将数据从 Twemproxy 迁移到 Codis ,并实现良好的运维和监控。基于这些, Codis 的设计跃然纸面:

基于 Redis 的开源分布式服务 Codis

然而,一个新系统的开发并不是件容易的事情,特别是一个复杂的分布式系统。刘奇表示,虽然当时团队只有 3 个人,但是他们几乎考量了可以考量的各种细节:

  • 尽量拆分,简化每个模块,同时易于升级
  • 每个组件只负责自己的事情
  • Redis 只作为存储引擎
  • Proxy 的状态
  • Redis 故障判定是否放到外部,因为分布式系统存活的判定异常复杂
  • 提供 API 让外部调用,当 Redis Master 丢失时,提升 Slave Master
  • 图形化监控一切: slot 状态、 Proxy 状态、 group 状态、 lock action 等等

而在考量了一切事情后,另一个争论摆在了眼前 ——Proxy 或者是 Smart Client Proxy 拥有更好的监控和控制,同时其后端信息亦不易暴露,易于升级;而 Smart Client 拥有更好的性能,及更低的延时,但是升级起来却比较麻烦。对比种种优劣,他们最终选择了 Proxy ,无独有偶,在 codis 开源后, twitter 的一个分享提到他们也是基于 proxy 的设计。

基于 Redis 的开源分布式服务 Codis

Codis 主要包含 Codis Proxy codis-proxy )、 Codis Manager codis-config )、 Codis Redis codis-server )和 ZooKeeper 四大组件,每个部分都可动态扩容。

codis-proxy 客户端连接的 Redis 代理服务,本身实现了 Redis 协议,表现很像原生的 Redis (就像 Twemproxy )。一个业务可以部署多个 codis-proxy ,其本身是无状态的。

codis-config Codis 的管理工具,支持添加 / 删除 Redis 节点、添加 / 删除 Proxy 节点、发起数据迁移等操作。 codis-config 自带了一个 http server ,会启动一个 dashboard ,用户可以在浏览器上观察 Codis 集群的运行状态。

codis-server Codis 项目维护的一个 Redis 分支,加入了 slot 的支持和原子的数据迁移指令。

ZooKeeper Codis 依赖 ZooKeeper 来存放数据路由表和 codis-proxy 节点的元信息, codis-config 发起的命令会通过 ZooKeeper 同步到各个存活的 codis-proxy

基于 Redis 的开源分布式服务 Codis

最后,刘奇还介绍详细的了 Codis Migration lock (rwlock) 等操作的实现过程和原理,以及从 Twemproxy 迁移到 Codis 的详细操作。更多 Codis 详情可移步 Clodis 开源页 GitHub

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-02/112752.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计1807字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7962959
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手!

星哥带你玩飞牛 NAS-13:自动追番、订阅下载 + 刮削,动漫党彻底解放双手! 作为动漫爱好者,你是否还在为...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...