- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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.
您可能关注的文档
最近下载
- 江西各地供电服务有限公司招聘笔试题库2023.docx VIP
- 《指向高中生物核心素养的大单元教学设计研究》课题研究方案.doc
- Unit 4 What can you do Part C Story time(课件)-人教PEP版英语五年级上册.pptx VIP
- 学生会权益部部门招新.pptx VIP
- 《22G101三维彩色立体图集》.pdf VIP
- 一种快速测定萤石中氟化钙含量的方法.pdf VIP
- 人教版六年级数学上册同步辅导讲义教师版.doc
- 2025高中英语外刊时文阅读 巴黎奥运会之全红婵和潜水介绍 课件.pptx
- 植物生理学-扬州大学-中国大学MOOC慕课答案.pdf
- 三论我国发展注气提高采收率技术-李士伦.ppt
文档评论(0)