新浪微博Redis优化:从瓶颈到突破
需积分: 50 134 浏览量
更新于2024-07-20
收藏 14.69MB PDF 举报
微博作为中国最大的社交媒体平台之一,其业务对实时性和数据处理能力有着极高的要求。在这个背景下,Redis在新浪微博的广泛应用和发展经历了一段优化历程。Redis是一个高性能的键值存储系统,常用于缓存、计数、关系数据存储以及通知提醒等功能。
在业务场景方面,Redis被用于支持微博的计数功能(counter),如用户点赞、评论等,以及复杂的图数据库(graph)关系管理,如关注、好友等社交网络结构。早期,微博依赖于MySQL存储热数据,包括大量的用户行为记录和关系数据,但由于MySQL在处理高并发和复杂查询时的性能瓶颈,尤其是在2010年左右,随着数据量的增长和关系计算需求的增加(如10G的Graphmc和2G的计数器mc),MySQL成为了系统的瓶颈,表现为线程阻塞和响应速度下降。
为解决这些问题,微博团队首先尝试了扩大mc存储容量,并增加了Graphdb的集群规模,同时监控并清理了死锁线程。然而,关系计算性能问题依然存在,因为全量数据查询加上本地计算会导致超时。最终,他们引入了Redis作为存储解决方案,将图和计数数据迁移到Redis,实现了近乎实时的关系计算,显著提高了系统性能。
在项目初期,微博团队面临技术选型的挑战,快速迭代和开发速度是关键。他们选择了Redis 2.0版本,分别部署了40GB的Graph数据和20GB的计数器数据,虽然初期遇到了数据分片不足、内存使用超出预期和业务混放等问题,导致可用性不足。这些问题促使团队不断调整策略,逐步优化Redis的使用,例如通过增加slave节点提高可用性,以及对数据进行更合理的分片和数据结构设计。
新浪微博的Redis优化历程反映了技术与业务需求的动态交互:在面对数据增长和性能瓶颈时,不断探索和引入新技术来提升系统的稳定性和效率。这个过程中,Redis不仅解决了当时的痛点,还推动了微博在数据处理能力上的整体提升,为后续的业务扩展和技术创新奠定了坚实基础。
2017-12-07 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
2019-08-13 上传
2023-07-02 上传
2012-01-09 上传
jeffry_xu
- 粉丝: 33
- 资源: 14
最新资源
- Java集合ArrayList实现字符串管理及效果展示
- 实现2D3D相机拾取射线的关键技术
- LiveLy-公寓管理门户:创新体验与技术实现
- 易语言打造的快捷禁止程序运行小工具
- Microgateway核心:实现配置和插件的主端口转发
- 掌握Java基本操作:增删查改入门代码详解
- Apache Tomcat 7.0.109 Windows版下载指南
- Qt实现文件系统浏览器界面设计与功能开发
- ReactJS新手实验:搭建与运行教程
- 探索生成艺术:几个月创意Processing实验
- Django框架下Cisco IOx平台实战开发案例源码解析
- 在Linux环境下配置Java版VTK开发环境
- 29街网上城市公司网站系统v1.0:企业建站全面解决方案
- WordPress CMB2插件的Suggest字段类型使用教程
- TCP协议实现的Java桌面聊天客户端应用
- ANR-WatchDog: 检测Android应用无响应并报告异常