Redis分布式改造实践:高峰的架构升级经验分享
需积分: 41 85 浏览量
更新于2024-07-20
收藏 300KB PPTX 举报
"高峰在SDCC 2016大会上分享了关于Redis的改造与实践,主要内容涉及Redis的分布式平台建设,包括全新的数据结构xset、分布式平台的项目背景、Twemproxy+Redis存在的问题以及解决方案,以及改造后的Redis和Proxy的特性。报告还展示了上线后的实际运营数据和面临的一些遗留问题。"
Redis是一种高性能的键值存储系统,常用于缓存和数据库应用场景。在高峰的实践中,随着业务的快速发展,原有的Redis部署面临着管理效率低下、集群扩容频繁和缺乏成熟的分布式解决方案等问题。针对这些问题,他们进行了Redis的改造。
首先,他们提出了全新的数据结构xset,这是一种基于zset扩展的类型,添加了限定长度的信息。当xset中的数据达到预设长度时,新的添加操作将根据指定规则删除旧数据,以保持集合的大小在控制范围内,这对于有容量限制的场景非常有用。
在分布式平台的构建中,高峰团队设计了一个名为Metaserver的中心模块,它负责存储集群配置、拓扑结构和数据分布映射,并能执行数据迁移和主从切换任务。Metaserver并不保证强一致性,但这允许在一定程度上牺牲一致性以换取更高的可用性。Redis服务器被划分为2w份slot,每个分片持有部分slot,且能支持按slot粒度的数据迁移。Redis实例会定期与Metaserver保持心跳通信。
改造后的Proxy起到了关键作用,它缓存slot与分片的映射关系,并在与Metaserver断开或重启时重新同步。Proxy还实现了读写分离、流量控制和白名单等功能,增强了系统的灵活性和可控性。当数据迁移时,Metaserver会对迁移过程设置时间限制,以防止阻塞,并对指定slot进行锁写,确保迁移过程中读操作不受影响。然而,这种锁写操作可能会成为性能瓶颈,有待进一步优化。
上线半年后,该改造方案已经应用于100多个应用,分布在500多台机器上的2000多个实例,每天处理400亿+的流量。尽管取得了显著的成果,但仍存在一些遗留问题,如Metaserver的一致性问题,以及没有引入多方仲裁机制来更安全地判断Redis实例的离线状态,这可能影响到自动主从切换的可靠性。
总结来说,高峰的分享揭示了在大规模分布式环境中如何有效管理和优化Redis,包括通过定制数据结构以满足特定需求,设计中心管理模块以提高运维效率,以及通过Proxy增强功能和控制流量。同时,他也指出,即使在经过精心设计的系统中,仍然存在改进的空间,如一致性、故障恢复策略等方面的优化。
2017-10-25 上传
2021-09-29 上传
2022-09-23 上传
2022-09-19 上传
2020-12-11 上传
2021-09-30 上传
孙_思
- 粉丝: 234
- 资源: 17
最新资源
- 平尾装配工作平台运输支撑系统设计与应用
- MAX-MIN Ant System:用MATLAB解决旅行商问题
- Flutter状态管理新秀:sealed_flutter_bloc包整合seal_unions
- Pong²开源游戏:双人对战图形化的经典竞技体验
- jQuery spriteAnimator插件:创建精灵动画的利器
- 广播媒体对象传输方法与设备的技术分析
- MATLAB HDF5数据提取工具:深层结构化数据处理
- 适用于arm64的Valgrind交叉编译包发布
- 基于canvas和Java后端的小程序“飞翔的小鸟”完整示例
- 全面升级STM32F7 Discovery LCD BSP驱动程序
- React Router v4 入门教程与示例代码解析
- 下载OpenCV各版本安装包,全面覆盖2.4至4.5
- 手写笔画分割技术的新突破:智能分割方法与装置
- 基于Koplowitz & Bruckstein算法的MATLAB周长估计方法
- Modbus4j-3.0.3版本免费下载指南
- PoqetPresenter:Sharp Zaurus上的开源OpenOffice演示查看器