百度DBA架构师张东阳:百度分布式Redis平台BDRP

2020-02-27 509浏览

  • 1.
  • 2.Baidu Districted Redis Platform 百度分布式Redis平台 百度DBA架构师 张东阳
  • 3.自我介绍 • 张东阳 2010年硕士毕业于中科院计算所 • 百度Redis方向技术负责人 • 专注于底层技术(FS 、CACHE、Linux kernel)
  • 4.大纲 • BDRP在百度的应用 • 架构介绍 • 挑战与解决方案 • 总结
  • 5.大纲 • BDRP在百度的应用 • 架构介绍 • 挑战与解决方案 • 总结
  • 6.BDRP在百度的应用 Redis 实例 5w+,服务数2k+,物理机5k台+
  • 7.典型业务 • 凤巢(商户物料信息) • 诚信(首页加V信息) • 糯米(促销信息) • 度秘(用户聊天信息) • 百度钱包(红包库存信息)
  • 8.大纲 • BDRP在百度的应用 • 架构介绍 • 挑战与解决方案 • 总结
  • 9.系统框架 对外接口 名字服务 基础组件 Proxy 集群管理 上线部署 权限管理 客户端 Dash Board Redis 元数据管理 容量管理 集群信息管理 版本管理/升级 虚拟化 Container Container Container
  • 10.数据流图 客户端 客户端 客户端 获取路由信息 名字服务(路由层均衡) proxy prPorxoyxy 更新分片信息 MetaServer 服务部署 主从切换 同步 主Redis 从Redis 同步 主Redis 从Redis 数据流 元数据流
  • 11.大纲 • BDRP在百度的应用 • 架构介绍 • 挑战与解决方案 • 总结
  • 12.挑战-以糯米为例 登陆、注册 验券 浏览 发券 支付 下单 • 全交易闭环重度依赖,如登 录90%以上流量由Redis承担 • 可用性(机器、机房) • 访问量巨大,大促时促销服 务一天访问量数千亿 • 性能(时延、吞吐) • 扩展性 • 存储(MySQL、Redis)资源 使用巨大,数千台物理机 • 存储使用配比
  • 13.挑战-性能 • 近地域多机房(十几ms网络时延) • 一次业务访问几十次读取Redis (读时延放大) • 读写比高( > 100:1) • 读吞吐高(单集群数百万QPS) 业务端 机房一 业务端 机房三 业务端 机房二
  • 14.近地域多机房方案 地域路由信息 MetaServer Proxy RW W Proxy R M Replicate Replicate S S • Proxy读写分离 • MetaServer传播地域路由 信息 机房一 机房二
  • 15.挑战-可用性 • 社区版切主时从库向新主全量同步 • 主库网卡压力陡增 –服务不可写 • 从库同步时间几十分钟-服务不可读 M SSS 全量同步 全量同步 SM S 新主
  • 16.机器故障秒级切主 M SSS 增量同步 增量同步 SM S 新主 • 同源增量同步 • 网卡压力突增->平稳 • 10G内存同步时间10min->5s
  • 17.1分钟整机房切换 Cluster1 …. …. ….Redis1 RedisN ClusterN Redis1 RedisN 并行切主 MetaServer
  • 18.挑战-扩展性 服务容量 峰值压力 year1 year2 year3 year4 year5 year6 业务压力 产品线1 产品线2 周一 周二 周三 周四 周五 周六 周日 大促压力高于服务容量,频繁扩缩容-> 弹性扩缩容 不同业务不同时间段压力不同->服务混部
  • 19.扩展性-redis V2.x 方案 • 成倍扩容(2->4) MM SS Slave变更为master M M MM • 服务迁移(2->3) MM 新旧集群数据迁移 M MM
  • 20.弹性扩缩容-Redis Cluster方案 Shard1 Shard2(new) Migrate key/keys slot slot slot SYNC redis1 redis2 核心:数据迁移方案 • 迁移效率:单个key迁移效率低下(V3.2 keys) • 迁移方式:同步迁移,迁移过程中影响服务读写
  • 21.弹性扩缩容-BDRP方案 Shard1 Shard2(new) slot slot slot async dump Pthread slot Migrate slot • 迁移效率:数据块整体聚合迁移,效率高 • 迁移方式:子线程异步dump和迁移数据,不影 响读服务
  • 22.基于服务混部的Auto Scaling 伸缩平台 产品服务1 PaaS 探测/触发伸缩 产品服务2 Container Container Container 产品线1资源 Container Container Container 产品线2资源
  • 23.挑战-DB&CACHE使用 MySQL Redis • Redis作为CACHE的场景下,业务无法判断 MySQL和Redis的最佳配比 • 资源 • 性能 • 同时使用MySQL协议和Redis协议 • 维护MySQL和Redis数据一致性
  • 24.DB&CACHE-已有方案 InnoDB with Memcached MySQL Memcached UDFs  协议未统一  受限单机内存  协议未统一  需要用户处理数据一致性
  • 25.MySQL&Redis融合 client RW proxy R Mysql DTS 抓取binlog增量 转换更新 • Proxy:分发不同存储 •DTS:完成MySQL->redis数据同步 • 访问协议为MySQL协议 Redis
  • 26.MySQL&Redis融合-数据转化 • 库名:DB • 表名:TABLE • 表主键: PRIMARY_KEY •key:DB.TABLE_11_PRIMARY_KEY •value:PRIMARY_KEY对应的组合内容
  • 27.Mysql&Redis融合-查询逻辑 • Proxy自带SQL Parser • 写入进入主库 • 非KV类查询进入从库 • KV类查询进入Redis • 结果集为MySQL协议 Proxy
  • 28.MySQL&Redis融合-一致性保证 • 填充方案 • 全量CACHE:DTS • 热点填充:Proxy + DTS • 同步监控 • Redis延时过大摘除Redis MySQL 监控 CACHE开关 Proxy DTS Redis 监控 Monitor Agent
  • 29.Mysql&Redis融合-指标和收益 • Redis更新时延ms级 • 可靠性(99.99%) • 对比纯MySQL集群收益(Redis命中率90%) • 集群吞吐提升10倍 • 长尾降低70%,平响降低20% • 业务无需任何改动
  • 30.大纲 • BDRP在百度的应用 • 架构介绍 • 挑战与解决方案 • 总结
  • 31.总结 • bdrp应用情况 • 架构 • 挑战与方案(糯米) • 近地域多机房解决方案 • 1分钟整机房切主 • 基于服务混部的Auto Scaling • MySQL&Redis融合方案
  • 32.其他工作 • 远地域多机房服务 • 基于磁盘引擎的KV存储 • SCS&RDS融合方案 • 运维管理平台
  • 33.百度DBA诚招天下英豪 • MySQL方向研发和运维 • Redis方向研发和运维 • 邮箱: dba@baidu.com • 微信/QQ:174264744
  • 34.