Redis分布式改造实践:高峰的架构升级经验分享
需积分: 41 52 浏览量
更新于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 上传
2022-09-23 上传
2020-12-11 上传
2021-10-18 上传
2022-09-30 上传
2021-09-30 上传
孙_思
- 粉丝: 234
- 资源: 17
最新资源
- 淘淘商城源码-Java代码类资源
- mybatis - Springboot+Mybatis+MySql搭建实例.zip
- 商务团队背景的商务幻灯片下载PPT模板
- Python库 | VizKG-0.0.3-py3-none-any.whl
- 直方图修改:代码执行直方图修改-matlab开发
- Android-project-FishPond:ZJU中的Android课程,这是名为FishPond的最终项目,这是一个适合时间大师的应用
- mm-screen:马克·米纳维尼(Mark Minervini)在“像股票向导一样交易”一书中描述的股票筛选器,用于识别超级绩效股票
- POO-2021
- SergioHPassos.github.io
- Quarantine-Friends:编码Dojo小组项目
- code-red:可视化代码 RED
- EpigenomicsTask_MscOmics
- VK-DMR:VK DMR文件
- kiwi:简约的内存键值存储
- Trex-Game-2:有游戏结束条件
- Python库 | vizex-2.0.4-py3-none-any.whl