兰将州-Redis在微博场景下的优化实践

微博热门、微博红包、微博消息……Redis在微博的应用场景已经十分广泛,但随着业务的扩大,挑战也随之而来。兰将州老师就Redis在微博场景的优化展开分享,深剖在缓存、存储、队列等方面的技术选型过程,针对Redis 1.0跟不上业务需求变化、Redis容量过大、优化后仍无法满足新需求等问题,详细展示了微博在Redis方向做出的大量改进和定制工作,就高性能、大容量、可扩展三类场景提供了可借鉴的优化经验。

展开查看详情

1.Redis在微博场景的优化实践 演讲人:微博-DBA-兰将州 全球敏捷运维峰会 北京站

2. 自我介绍 • 2015年加入微博 • 微博-数据库平台-DBA • 负责MySQL、NoSQL、Tidb相关的自动化开发和运维 • 微博核心feed流、广告数据库业务线负责人 • 参与redis、counterservice_ssd、memcacheq相关代码开发 • 目前关注分布式系统 全球敏捷运维峰会 北京站

3.✦Redis在微博的应用场景 ✦Redis在微博的优化 ✦未来展望 全球敏捷运维峰会 北京站

4. Redis在微博的应用场景 全球敏捷运维峰会 北京站

5. 业务&规模&挑战 信息流 广告 性能 QPS 100T+存储 用户关系 1000+机器 搜索 10000+实例 RT 成本 话题 视频 全球敏捷运维峰会 北京站

6. 技术选型 缓存or存储or队列 缓存 存储 队列 是 否 大容量 吞吐量 所需数据类型是否丰富 列式存储 高容错 是 是 是 否 否 Memcached rt 高 K-V Kafka 计数服务 容量大 qps 高 qps 不大 rt 不高 是 Hbase vip qps稍低 否 是 否 是 否 Redis 单列or多列 聚合数据 水平弹性扩展 Mcq2 多 水平弹性扩展 单 是 否 是 否 落地 是 Tidb 是 否 否 Redrocks Pika Mysql Rediscounter 全球敏捷运维峰会 北京站 Counterservice Counterservice_ssd Qservice Mcq3

7. 优化小结 • 无阻塞落地 • 增量复制 -> rdb+aof • 在线热升级 • 关系graph定制 -内存降为1/10 -性能相当 • 计数定制化 -内存降为1/4 -性能提升3-5倍 • bloomfilter 全球敏捷运维峰会 北京站

8.Redis1.0跟不上业务需求变化 全球敏捷运维峰会 北京站

9.✦Redis在微博的应用场景 ✦Redis在微博的优化 ✦未来展望 全球敏捷运维峰会 北京站

10. Redis在微博的优化 • 业务:各业务方需要关心资源分布、容量规划等多方面 • DBA:需求多,资源变更频繁 高性能 大容量 可扩展 三座大山 全球敏捷运维峰会 北京站

11. Cache Service服务化 L1 L1 configService main subscribe register HA req Client cache proxy subscribe L1 L1 main configService probe HA rw config probe retrieval captain graphite 全球敏捷运维峰会 北京站

12. Cache Service服务化 业务 feed user Lru Lru dba configService cache service cache service 支 持 mc master-l1 master-l1 master-l1 master-l1 redis 协 议 master master master master slave slave slave slave slave-l1 slave-l1 slave-l1 slave-l1 全球敏捷运维峰会 北京站

13. Cache Service 服务化 全球敏捷运维峰会 北京站

14. Cache Service 服务化 • 关键字:弹性扩容 云 内网 峰值流量 应急预案 便捷 省成本 快速部署 • 成功案例:实现春晚1000+台阿里云ECS弹性扩缩容,多次实现无降级 平滑过渡,高峰期支持微博50%核心流量 全球敏捷运维峰会 北京站

15. warden 全球敏捷运维峰会 北京站

16. mcq 服务化 client vintage BCP graphite MQS-RPC api MQS-Manager balance web decision topic task MCQ warden DB DCP 全球敏捷运维峰会 北京站

17. mcq 服务化 全球敏捷运维峰会 北京站

18.全球敏捷运维峰会 北京站

19.全球敏捷运维峰会 北京站

20. Redis 容量过大 全球敏捷运维峰会 北京站

21. Redrocks 特性 • 支持冷热数据分离 • 支持集群 • 支持数据持久化 • 支持主从复制 • 支持热升级 • 支持lua脚本 • 兼容redis数据类型 • 兼容与redis的数据复制 全球敏捷运维峰会 北京站

22. Redrocks 适用场景 • 大容量 • 数据冷热区明显 • 数据冷热区别不明显,但是非超大key的场景 全球敏捷运维峰会 北京站

23. Redrocks Main Thread Background Thread Connect Handler Replication io Protocol Parse Data Swap Command Process Bloom Filter Storage Engine 处理模块 全球敏捷运维峰会 北京站

24. Redrocks hot RedisDB LRU warm cold “hot” data Slot Map mem swap in/out disk RDB RocksDB “cold” data AOF SSD/PCIE SAS 存储模块 全球敏捷运维峰会 北京站

25. Redrocks 架构图 Redis事件循环 BIO线程1 BIO线程i BIO线程N 用户请求 SWAP LOAD LAZY 命令解析 FREE 异步读取冷数据 LOAD 命令处理 IO SWAP LOAD LAZY 任 FREE 务 后台任务 队 主从同步 列 异步存储冷数据 SWAP 过期 RocksDB • 简单易用:完全兼容redis,现有业务无需做任何改动 • 成本优势:热点数据在内存,冷数据落盘到磁盘,突破内存容量限制 • 高性能 :热点数据在内存,性能和redis 相当 全球敏捷运维峰会 北京站

26. 性能压测报告 对比set随机写和get随机读qps 对比hmset 写qps cpu:20核 (Intel(R) Xeon(R) CPU E5- 2630 v4 @ 2.20GHz) memory : 128GB Disk:4T os:Linux 3.10.0-229.el7.x86_64 对比hmget 读qps 全球敏捷运维峰会 北京站

27.仍然还有满足不了新需求? 全球敏捷运维峰会 北京站

28. 开源解决方案 codis? twemproxy? ->tribe corvus? redis-cluster? 全球敏捷运维峰会 北京站

29. twemproxy -> tribe 全球敏捷运维峰会 北京站

数据连接未来!围绕Database、Bigdata、AiOps的企业级专业社群。行业大咖、技术干货,每天精品原创文章推送,每周线上技术分享,每月线下技术沙龙,受众20W+。