codis2从分布式缓存到数据库解读.pptx

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
codis2从分布式缓存到数据库解读

Codis 2.0:从 Cache 到 DB Codis ● 分布式 Redis ● Stateless Proxy-based ● 完全兼容 Twemproxy ● 目前已经有很多知名和不知命的公司用于 生产环境 o 猎豹移动,科大讯飞,豌豆荚,汽车之家... ● 开源, github star 2200+ 传统单点缓存 Redis, Memcached 1. 单机内存有限 2. 带宽压力 3. 单点问题 4. 不能动态扩容 5. 磁盘损坏时数据抢救 分布式缓存 1. Twemproxy 2. Redis Cluster (official) 3. Tair, Coachbase, Aerospike 4. Codis Twemproxy 1. 最早/使用最广泛的解决方案 2. Proxy based 3. 静态的拓扑 4. 运维基本靠手 5. 最大痛点:无法平滑的扩/缩容 o 甚至修改个配置都需要重启服务 Orz Redis Cluster 1. 官方出品 2. 去中心化设计 3. 客户端需要修改 4. 目前还缺乏 Best Practice,还没有人写一个 Redis Cluster 若干条注意事项 5. 整个系统高度耦合,升级比较困难 Tair, Couchbase, Aerospike… 1. 技术选型 2. 数据结构支持 3. 社区 Codis 1.x Codis 1.x ? ? ? ? 业务不停机,平滑扩/缩容 无状态 Proxy,负载均衡,无单点 充分利用多核 运维工具齐全 – dashboard – redis-port – codis-ha Codis 1.x 缺点(maybe :P ) : ? 强依赖 zookeeper ? 修改了官方 redis ? 性能 ? MULTI / EXEC 等指令不支持 Codis 整体设计 ● Pre-sharding o Slot = [0, 1023] ● ● ● ● Zookeeper Proxy 无状态 平滑扩容/缩容 扩容对用户透明 设计考量 ● ● ● ● ● ● 分布式系统是复杂的 开发人员不足 尽量拆分,简化每个模块,同时易于升级 每个组件只负责自己的事情 Redis 只作为存储引擎 Proxy 状态 设计考量 ● Redis 是否挂掉的判定放到外部,因为分布 式系统存活的判定是复杂的 ● 提供 API 让外部调用,当 Redis master 挂掉 的时候,提升 slave 为 master ● 我们不喜欢读写分离 设计考量 ● graph everything o o o o o slot status proxy status group status lock action proxy vs smart client proxy: 更好的监控,控制 后端信息不暴露,易于升级 smart client: 更好的性能 更低的延迟,升级比较麻烦 设计考量 无状态 Proxy 1. 路由表统一存储在 Coordinator 中 2. 连接任意一个 proxy 发起请求的效果是一 样的 3. 负载均衡变得非常简单,proxy 可以平滑的 水平扩展 路由信息一致性保证 ? 在 cluster-admin 发起集群状态变更时,所 有的 proxy 必须达到信息的一致后,才能重 新对外提供服务 ? cluster-admin 和 proxy 之间通过二阶段提交 保证一致性 Read/Write Flow (Normal) Read/Write Flow (Migrating) 如何保证安全迁移 1. 将 slot_X 状态标记为 ‘pre_migrate’ 2. 等待所有的 proxy 确认 3. 将 slot_X 状态标记为‘migrating’ 4. admin 不断发送 SLOTSMGRT 命令给 source redis instance 直到 slot_X 所有的 key 迁移完 成 5. 将 slot_X 状态标记为 ‘online’ a. proxy b. cluster admin c. storage engine Result 1. 平滑水平扩展 2. 可插拔的存储引擎( 各个模块之间的纽带 是 Redis Protocol ) 3. 由于不同组件之间解耦, 都可以独立升级 RebornDB RebornDB (Codis 2.0) 1. Support both zookeeper and etcd 2. Plugglable storage engine 3. Backend pipeline 4. Simple HA tools 5.

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档