《新浪微博的Redis定制化之路(28页).pdf》由会员分享,可在线阅读,更多相关《新浪微博的Redis定制化之路(28页).pdf(28页珍藏版)》请在三个皮匠报告上搜索。
1、肖鹏微博研发中心数据库技术负责人微博的Redis定制之路探索期:野蛮生长发展期:争奇斗艳稳定期:拾遗补缺目 录content介绍个人介绍肖鹏,微博研发中心主要负责微博数据库(MySQL/Reids/HBase/Memcached)相关的业务保障,性能优化,架构设计以及周边的自动化系统建设。经历了微博数据库各个阶段的架构改造,包括服务保障及SLA体系建设,微博多机房部署,微博平台化改造等项目,10年互联网数据库架构和管理经验,专注于数据库的高性能和高可用技术保障方向。部门介绍MySQLHBaseMC/MCQRedisHadoopKafka消息队列,缓存,持久存储,统一的数据平台。Redis定制之
2、路201120132012201420152016探索期发展期稳定期上线试水稳定性改造需求性改造易用性改造探索期:野蛮生长第一个Redis集群上线MySQLWebMCRedisMySQLWebRedisWeb123性能问题在执行bgsave的时候会出现明显的卡顿,业务波动故障恢复问题宕机后恢复主从速度慢,经常出现带宽洪峰问题运维复杂度问题版本升级频繁,主库切换常态化遇到的问题:从主线程中独立出来Bio thread,专门执行bgsave等操作,避免干扰。内置cronsave功能,控制备份时间。放弃bgaofrewrite。Main ProcessBio Thread修改aof机制,增加pos位
3、。修改replication机制,实现基于aof+pos位置的数据同步。修改落地机制,改为RDB+AOF滚动机制,保证数据持久化存储。Main ProcessreplicationRDBAOF1:POSAOF3:POSAOF2:POS主程序中为全局的数据结构。其他功能封装到libredis.so中。对libredis.so实现动态热加载,每次版本升级实现热升级,不必在进行主库切换,极大的降低运维复杂度和业务风险。Main ProcessLibredis.soMain ProcessLibredis.soBio ThreadreplicationRDBAOF1:POSAOF3:POSAOF2:P
4、OS发展期:争奇斗艳123容量问题日益增长的关系类存储容量问题同成本之间的矛盾计数类需求琳琅满目的计数类场景需要专门的解决方案判断类需求频繁的判断需求无法接受长时延定位从storage变为cache放弃原生hash结构,定制longset数据结构固定长度开放寻址的hash数组Miss后,Client批量O(1)MEM 1/10根据业务场景将kv改为定长kvDouble hash解决冲突预先分配内存,降低指针开销MEM 1/4 Schema支持多列存计数,降低内存占用,减少网络开销。冷热数据分离,热内存,冷磁盘 增加LRU cache模块,保证冷数据的性能。异步IO线程访问磁盘,避免性能问题bl
5、oomfilter解决是否赞过等场景的高并发问题,并解决成本问题。稳定期:拾遗补缺123服务化随着业务的变大,集群规模也变大,拼写hash规则已经变成负担,并且每次变更扩容都变得及其的复杂。数据流动多个存储的更新存在数据不一致的情况,并且业务双写也增加了程序的复杂性数据迁移原有redis的拆分和改造都需要DBA和RD共同参与以便保证数据的一致性以及尽量降低对业务的冲击加入中间层实现路由功能引入configer service模块,统一配置管理引入slot设计,实现动态的slot迁移,对业务无影响。基于slot设计无缝扩容功能,实现线性扩容融入HA等运维机制基于MySQL的row格式binlog日志实现消息的流转设计模块加载机制,支持对于mysql消息的自定义处理规则的处理下游兼容redis、HBase等存储融入HA等运维机制基于改造过的aof进行消息解析实现对单端口的redis实现拆分可以实现rang 或者hash的拆分规则可以实现上下游不同的redis分支独立组件 or 成为redis的一个功能业务是驱动技术变革的源动力反过来技术的变革也推进业务形态的变化两者互相作用,呈螺旋上升的趋势未来?在平稳中期待下一次爆发