网易DDB性能优化实践

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线程切换过多
  • 优化思路
     • 所有Buffer16K的大包为单位写入网络
     • 每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.24倍提升

12.OSC
  • OSC解决方案
     • DDB & pt-osc:基于锁的全量和触发器的增量
     • 触发器导致线上事务变慢,锁释放变慢
     • 全量扫描加锁导致锁冲突加剧
     • 线上实施容易大量锁超时
  • 优化方法
     • 基于binlog实现增量更改
     • 全量不加锁,增量用replace幂等语义
     • 实现:DDB HamalSet & gh-ost
     • 优势:对线上几乎零影响

13.未来规划
  • 架构优化
     • 优化管理架构,插拔所有平台
     • 通用平台运维工具DDBAdmin
     • 数据迁移服务抽离和分治
  • 蜂巢DDB
     • 云端一键部署,全方位管家服务
     • 高可用,高可靠,低成本
     • 2017年上半年,敬请期待

**以上内容均来源于SDCC2016大会PPT**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值