欢迎来到天天文库
浏览记录
ID:5298092
大小:5.80 MB
页数:41页
时间:2017-12-07
《codis 集群演化与 redis 异步迁移-41页》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Codis集群演化与Redis异步迁移Codis作者王乃峥自我介绍•王乃峥–spinlock9•Codis作者之一•曾就职于豌豆荚、今日头条•从事NoSQL的设计与实践•GitHub:spinlock@github.comCodis集群演化背景与挑战•Redis+Twemproxy•2012~2015•RedisCluster•2010~2015•2015~Present背景与挑战•访问方式•容量•支持GB到TB的水平扩展能力•兼容所有(语言)客户端•高可用•性能•高吞吐、低延迟发展历程•2014.7~2015.2
2、开源•Codis1.9+Redis2.8.13•2015.3~2015.7迭代•Codis2.0+Redis2.8.21•2015.12~Present完善•Codis3.x+Redis3.2.11方案比较FeatureRedisClusterCodis扩容缩容YESYES平滑扩容缩容NOYESPipelineNOYESDatabaseNOYESPasswordNOYESMGET/MSETSLOTYESPUB/SUBSLOTNOTransactionSLOTNO架构设计架构设计•优势•劣势•组件过多、部署复杂•架构
3、简单•中间件性能损失•模块化设计•牺牲部分功能•稳定性强•扩展性强•易于维护特性介绍•高吞吐•指令流水•实现效率+优化GC特性介绍•并发多连接•单连接–Redis•多连接–SSD(RocksDB)特性介绍•多DB支持•默认16个Database•访问控制•指令黑名单•SessionAuth–Proxy独立配置•ProductAuth–Codis集群共享特性介绍•读写分离–跨机房优化•牺牲一致性•写:写主•读:同IP>同DC>跨DC特性介绍•高可用未来规划•兼容Redis•完善Codis•完善K8S支持•升级到Red
4、is-4.2•提升自动化程度•做到最小修改•实现Transaction等•兼容分片策略•集成Sentinel功能更大的挑战•更大的副本容量•Codis+RocksDB•开源方案Pika–Qihoo360/Pika•单副本100TB以上•更高的集群吞吐•QPS:500~1000w/s•更复杂的访问模式•普通业务–低延迟•数据平台–高吞吐Redis异步迁移同步迁移•RedisMIGRATEhostportkeydestination-dbtimeout[COPY][REPLACE][KEYSkey]RESTOREkey
5、ttlserialized-value[REPLACE]•CodisSLOTSMGRTONEhostporttimeoutkeySLOTSMGRTTAGONEhostporttimeoutkeySLOTSMGRTSLOThostporttimeoutslotSLOTSMGRTTAGSLOThostporttimeoutslotSLOTSRESTOREkeyttlval[keyttlval...]实际使用同步迁移•存在哪些问题?redis-cliSourceTargetMIGRATEENCODE序列化(1)同步传输R
6、ESTORE(2)DECODE反序列化(3)OKDELETE本地删除(4)OK同步阻塞同步迁移•存在哪些问题?Source•降低服务质量CPUQPS•阻塞服务•误触HA、丢失数据序列化网络反序列化本地删除Target同步迁移•存在哪些问题?•限制数据规模•实际建议<2MB(RESP限制<512MB)•迁移受网络质量(RTT)影响•增加阻塞时间、降低迁移效率•增加错误处理难度•错误恢复困难、人工介入困难•迁移Hash•1kw元素•640MB•迁移Zset•1kw元素•400MB解决思路•指令分解+异步IO+指令流水+
7、迁移状态机•单个复杂、耗时操作=>多个简单、高效指令•平摊CPU开销•处理读写冲突、错误恢复•批量迁移(Batch)•异步删除•BIO线程异步迁移•指令分解redis-cliSourceTargetMIGRATE-ASYNC•支持AUTH、SELECT指令AUTHPASSWD10MZsetSELECTDB•指令翻译DELKEYcursorZADDKEYSCORE1MEMBER1•SET(String/Encoded)ZADDKEYSCORE2MEMBER2O(N)•ZADD/SADD/HMSETBIOThread…
8、…O(NlogN)•RPUSHEXPIREKEYTTLOK•平摊开销–单指令us级别异步删除异步迁移•异步IO+指令流水SourceTargetSourceTargetAUTHPASSWDAUTHPASSWDSELECTDBSELECTDBDELKEYDELKEYZADDKEYSCORE1MEMBER1ZADDKEYSCORE1MEMBER1ZADDKEYS
此文档下载收益归作者所有