PPT主题:网易DDB性能优化实践
嘉宾:马进(@马进app)
公众号:datamanagement
DDB:分布式数据库
1.分库分表数据库DDB
• 海量结构化数据存储,TB级别热点数据
• 高并发访问,应对OLTP在线事务型的应用
• 数据扩容,在线增删数据库节点,完善的DBA工具
• 透明分库分表,MySQL通信协议兼容
2.分区方案选型
• 常规:取模哈希 + 桶(虚拟节点)
• 桶 + 取模哈希 + 均衡策略 = 单调性 + 均衡性 + 易用性
• 支持自定义哈希函数,可定制List和range分区
• 不能迁移的分区都是耍流氓(重点)
3.增量迁移工具Hamal
• 库迁移场景:节点扩容缩容,集群机房迁移
• 表迁移场景:表级扩容缩容,更改均衡策略/字段
• 功能亮点:断点续传,并行复制
功能:记录Binlog位置点,isql全量迁移,Hamal增量复制,切表/切库
4.分布式事务
• 透明的两阶段提交过程
• 系统自动识别是否需要两阶段,优先一阶段
insert into A values(1, ’test1’),(2, ’test2’);
5.分布式执行计划
6.功能特性
• 90%以上的SQL92兼容性,向MySQL语法靠拢
• 命令行工具isql,管理工具DBAdmin
• 支持数据节点手动或自动fail over
• 基于hint的读写分离功能
• 两种全局自增长ID实现
• 更多丰富的hint功能
7.完善,无侵入的云端解决方案
• 延展性:查询服务器无状态,支持无缝水平扩展
• 扩展性:支持不同语言,不同实现的MySQL客户端访问DDB
• 可用性:RDS数据节点基于IP漂移的高可用方案
• 易用性:云端一键部署,完善的WEB管理工具
8.DDB架构变迁
• DBI架构
• Proxy (QS) 架构
• DBI模式——与应用绑定
• 部署简单,节省机器,好运维
• 连接收敛问题
• 版本不好管理
• 问题难以跟踪
• Proxy模式——与应用解耦
• 单独部署Proxy节点
• 解决连接收敛问题
• 版本便于管理,应用无感知升级/回退
• 问题好跟踪,容易保留现场
• 应用端无侵入,开发者喜闻乐见
• DDB私有云服务
• DDB私有云架构
• DDB云端架构优化
9.性能优化实践
• 分库分表比单机性能提升多少?
• 分库分表benchmark一般不如单机,哪个好取决于MySQL是否到瓶颈
• 分库分表性能指标:单节点策略下比吞吐率比单机折损多少(DDB在18% – 35%)
10.Proxy Buffer优化
• DDBProxy模块实现
• 基于DBI做分库分表
• Server层做编码解码
• 特殊SQL支持 (show命令)
• 基于netty4网络框架构建
• 结果集编码
• 结果集大小不可知
• 编码以列值为单元
• 存在问题
• Buffer碎片化
• NIO线程切换过多
• 优化思路
• 所有Buffer以16K的大包为单位写入网络
• 每100行(why?)列值的编码合并到16K的Buffer中
• Buffer编码溢出后申请另一个16K的Buffer串联起来
• Global buffer pool + Connection local buffer chain
• 进一步优化
• Buffer溢出后中断编码,当前Buffer写入网络后继续
• 判断溢出在一行数据编码后,写完的Buffer挂到最后面
• 一般BufferList不会超过2个(除非一个数据行超过16K)
11.DBI NIO优化
• 通信模式
• Proxy <——> Client: Netty NIO
• Proxy <——> DBN:Connector/j BIO
• BIO阻塞式通信,占用大量CPU
• 优化方法
• 思路1:自研到MySQL的NIO驱动
• 思路2:将Connector/j的底层通信依赖Netty
• 优化效果:CPU使用率1.2 – 4倍提升
12.OSC
• OSC解决方案
• DDB & pt-osc:基于锁的全量和触发器的增量
• 触发器导致线上事务变慢,锁释放变慢
• 全量扫描加锁导致锁冲突加剧
• 线上实施容易大量锁超时
• 优化方法
• 基于binlog实现增量更改
• 全量不加锁,增量用replace幂等语义
• 实现:DDB HamalSet & gh-ost
• 优势:对线上几乎零影响
13.未来规划
• 架构优化
• 优化管理架构,插拔所有平台
• 通用平台运维工具DDBAdmin
• 数据迁移服务抽离和分治
• 蜂巢DDB
• 云端一键部署,全方位管家服务
• 高可用,高可靠,低成本
• 2017年上半年,敬请期待
**以上内容均来源于SDCC2016大会PPT**
网易DDB性能优化实践
最新推荐文章于 2025-03-18 10:42:34 发布