上海品茶

您的当前位置:上海品茶 > 报告分类 > PDF报告下载

王乃峥:Codis 集群演化与 Redis 异步迁移(40页).pdf

编号:84303 PDF 40页 4.34MB 下载积分:VIP专享
下载报告请您先登录!

王乃峥:Codis 集群演化与 Redis 异步迁移(40页).pdf

1、Codis 集群演化与 Redis 异步迁移Codis 作者 王乃峥自我介绍王乃峥 spinlock9Codis 作者之一曾就职于豌豆荚、今日头条从事 NoSQL 的设计与实践GitHub:Codis 集群演化背景与挑战Redis+Twemproxy2012 2015Redis Cluster2010 20152015 Present背景与挑战访问方式兼容所有(语言)客户端性能高吞吐、低延迟容量支持 GB 到 TB 的水平扩展能力高可用2014.7 2015.2Codis 1.9+Redis 2.8.13开源2015.3 2015.7Codis 2.0+Redis 2.8.21迭代2015.1

2、2 PresentCodis 3.x+Redis 3.2.11完善发展历程FeatureRedis ClusterCodis扩容缩容YESYES平滑扩容缩容NOYESPipelineNOYESDatabaseNOYESPasswordNOYESMGET/MSETSLOTYESPUB/SUBSLOTNOTransactionSLOTNO方案比较架构设计架构设计优势架构简单模块化设计稳定性强扩展性强易于维护劣势组件过多、部署复杂中间件性能损失牺牲部分功能高吞吐指令流水实现效率+优化 GC特性介绍并发多连接单连接 Redis多连接 SSD(RocksDB)特性介绍多 DB 支持默认 16 个 Dat

3、abase访问控制指令黑名单SessionAuth Proxy 独立配置ProductAuth Codis 集群共享特性介绍读写分离 跨机房优化牺牲一致性写:写主读:同 IP 同 DC 跨 DC特性介绍高可用特性介绍兼容 Redis升级到 Redis-4.2做到最小修改兼容分片策略未来规划完善 Codis完善 K8S 支持提升自动化程度实现 Transaction 等集成 Sentinel 功能更大的副本容量单副本 100TB 以上更高的集群吞吐QPS:500 1000w/s更复杂的访问模式普通业务 低延迟数据平台 高吞吐更大的挑战Codis+RocksDB开源方案 Pika Qihoo360

4、/PikaRedis 异步迁移RedisCodis同步迁移MIGRATE host port key|destination-dbtimeout COPY REPLACE KEYS keyRESTORE key ttl serialized-value REPLACESLOTSMGRTONEhost port timeout keySLOTSMGRTTAGONEhost port timeout keySLOTSMGRTSLOThost port timeout slotSLOTSMGRTTAGSLOT host port timeout slotSLOTSRESTOREkey ttl val

5、 key ttl val.实际使用存在哪些问题?同步迁移SourceTargetredis-cliENCODEDECODEDELETE MIGRATEMIGRATERESTORERESTOREOKOKOKOK(1)(1)(2)(2)(4)(4)(3)(3)反序列化本地删除序列化同步传输同步阻塞存在哪些问题?降低服务质量阻塞服务误触 HA、丢失数据同步迁移SourceTarget序列化网络反序列化本地删除CPUQPS存在哪些问题?限制数据规模实际建议 2MB(RESP 限制 多个简单、高效指令平摊 CPU 开销处理读写冲突、错误恢复批量迁移(Batch)异步删除BIO 线程解决思路指令分解支持

6、AUTH、SELECT 指令指令翻译SET(String/Encoded)ZADD/SADD/HMSETRPUSH平摊开销 单指令 us 级别异步迁移O(NlogN)O(N)SourceTargetredis-cliMIGRATEMIGRATE-ASYNCASYNCOKOK10M 10M ZsetZsetBIO ThreadBIO ThreadAUTH PASSWDAUTH PASSWDSELECT DBSELECT DBDELDEL*KEYKEY EXPIREEXPIRE*KEY TTLKEY TTLcursorcursorZADDZADD*KEY SCORE2 KEY SCORE2 MEM

7、BER2MEMBER2异步删除ZADDZADD*KEY SCORE1 KEY SCORE1 MEMBER1MEMBER1异步 IO+指令流水异步迁移SourceTargetAUTH PASSWDAUTH PASSWDSELECT DBSELECT DBDELDEL*KEYKEY EXPIREEXPIRE*KEY TTLKEY TTLZADDZADD*KEY SCORE2 KEY SCORE2 MEMBER2MEMBER2ZADDZADD*KEY SCORE1 KEY SCORE1 MEMBER1MEMBER1SourceTargetAUTH PASSWDAUTH PASSWDSELECT DB

8、SELECT DBDELDEL*KEYKEY EXPIREEXPIRE*KEY TTLKEY TTLZADDZADD*KEY SCORE2 KEY SCORE2 MEMBER2MEMBER2ZADDZADD*KEY SCORE1 KEY SCORE1 MEMBER1MEMBER1 等价异步 IO+指令流水连接复用流量控制 发送窗口批量迁移(Batch)异步迁移SourceTargetredis-cliMIGRATEMIGRATE-ASYNCASYNCOKOK10M 10M ZsetZsetAUTH PASSWDAUTH PASSWDSELECT DBSELECT DBDELDEL*KEYKEY

9、 EXPIREEXPIRE*KEY TTLKEY TTLcursorcursorZADDZADD*KEY SCORE2 KEY SCORE2 MEMBER2MEMBER2异步删除ZADDZADD*KEY SCORE1 KEY SCORE1 MEMBER1MEMBER1BIO ThreadBIO Thread脏数据清理-错误处理主动清理过期清理异步迁移SourceTargetredis-cliMIGRATEMIGRATE-ASYNCASYNCOKOK10M 10M ZsetZsetAUTH PASSWDAUTH PASSWDSELECT DBSELECT DBDELDEL*KEYKEY EXPI

10、REEXPIRE*KEY KEY TTLTTLcursorcursorZADDZADD*KEY SCORE2 KEY SCORE2 MEMBER2 with MEMBER2 with RTT*3RTT*3异步删除ZADDZADD*KEY SCORE1 KEY SCORE1 MEMBER1 with MEMBER1 with RTT*3RTT*3BIO ThreadBIO Thread迁移状态机发送窗口初始化确定传输模式:简单 or 分片?异步迁移SourceTargetredis-cliMIGRATEMIGRATE-ASYNCASYNCOKOK10M 10M ZsetZsetAUTH PASS

11、WDAUTH PASSWDSELECT DBSELECT DBDELDEL*KEYKEY EXPIREEXPIRE*KEY TTLKEY TTLcursorcursor异步删除SPDCEZADDZADD*KEY SCORE2 KEY SCORE2 MEMBER2 with MEMBER2 with RTT*3RTT*3ZADDZADD*KEY SCORE1 KEY SCORE1 MEMBER1 with MEMBER1 with RTT*3RTT*3BIO ThreadBIO Thread迁移状态机连接初始化(Start)REPLACE 语义异步迁移SourceTargetredis-cliM

12、IGRATEMIGRATE-ASYNCASYNCOKOK10M 10M ZsetZsetAUTH PASSWDAUTH PASSWDSELECT DBSELECT DBDELDEL*KEYKEY EXPIREEXPIRE*KEY TTLKEY TTLcursorcursor异步删除SPDCEZADDZADD*KEY SCORE2 KEY SCORE2 MEMBER2 with MEMBER2 with RTT*3RTT*3ZADDZADD*KEY SCORE1 KEY SCORE1 MEMBER1 with MEMBER1 with RTT*3RTT*3BIO ThreadBIO Thread

13、迁移状态机发送分片(Chunked)临时 TTL=RTT x 3异步迁移SourceTargetredis-cliMIGRATEMIGRATE-ASYNCASYNCOKOK10M 10M ZsetZsetAUTH PASSWDAUTH PASSWDSELECT DBSELECT DBDELDEL*KEYKEY EXPIREEXPIRE*KEY TTLKEY TTLcursorcursorZADDZADD*KEY SCORE2 KEY SCORE2 MEMBER2 with MEMBER2 with RTT*3RTT*3异步删除ZADDZADD*KEY SCORE1 KEY SCORE1 MEM

14、BER1 with MEMBER1 with RTT*3RTT*3SPDCEBIO ThreadBIO Thread迁移状态机迁移完成重置 TTL异步迁移SourceTargetredis-cliMIGRATEMIGRATE-ASYNCASYNCOKOK10M 10M ZsetZsetAUTH PASSWDAUTH PASSWDSELECT DBSELECT DBDELDEL*KEYKEY EXPIREEXPIRE*KEY KEY TTLTTLcursorcursorZADDZADD*KEY SCORE2 KEY SCORE2 MEMBER2 with MEMBER2 with RTT*3RT

15、T*3异步删除ZADDZADD*KEY SCORE1 KEY SCORE1 MEMBER1 with MEMBER1 with RTT*3RTT*3SPDCEBIO ThreadBIO Thread迁移状态机标记完成(Done)异步删除异步迁移SourceTargetredis-cliMIGRATEMIGRATE-ASYNCASYNCOKOK10M 10M ZsetZsetAUTH PASSWDAUTH PASSWDSELECT DBSELECT DBDELDEL*KEYKEY EXPIREEXPIRE*KEY KEY TTLTTLcursorcursorZADDZADD*KEY SCORE2

16、 KEY SCORE2 MEMBER2 with MEMBER2 with RTT*3RTT*3异步删除ZADDZADD*KEY SCORE1 KEY SCORE1 MEMBER1 with MEMBER1 with RTT*3RTT*3SPDCEBIO ThreadBIO Thread迁移间隙Key Missing迁移过程中读-迁冲突写-迁冲突Key Missing访问冲突迁移间隙Asking/MovedTryAgain迁移过程中阻塞,无法访问同步迁移STCSETE:ASKINGSTCASKING&SETOK(1)(2)迁移间隙迁移过程中读-迁出冲突读-迁入冲突写-迁冲突Key Missing异步迁移STCSETE:TRYAGAINMIGRATINGSTCSETE:ASKINGSTCASKING&SETOK(1)(2)(3)写-迁冲突MIGRATING_KEYSIMPORTING_KEYSTryAgain基于 Redis-3.2.8同步 vs 异步基于 Redis-3.2.8同步过程同步 vs 异步基于 Redis-3.2.8异步过程同步 vs 异步基于 Redis-4.2(unstable)PR#3997同步 vs 异步Hash10MZset10M

友情提示

1、下载报告失败解决办法
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站报告下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

本文(王乃峥:Codis 集群演化与 Redis 异步迁移(40页).pdf)为本站 (云闲) 主动上传,三个皮匠报告文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三个皮匠报告文库(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
会员购买
客服

专属顾问

商务合作

机构入驻、侵权投诉、商务合作

服务号

三个皮匠报告官方公众号

回到顶部