狠狠撸
Submit Search
百度数据库中间层
?
4 likes
?
1,523 views
Y
yp_fangdong
Follow
1 of 27
Download now
Downloaded 19 times
More Related Content
百度数据库中间层
1.
百度数据库中间层技术介绍
尹博学 dba@ DTCC2012
2.
目录 MySQL数据库集群面临的问题 数据库中间层整体设计 数据库中间层主要功能模块和策略 数据库中间层应用 数据库中间层发展
DTCC2012
3.
MySQL数据库集群面临的问题 ? 随着数据库流量和服务器数量增长,数据库集群面临很多
问题: ? 如何实现应用程序与集群的解耦,降低运维成本? ? 如何实现数据库服务的高可用? ? 如何将并发控制前移,保护数据库系统? ? 如何降低数据库开发成本? ? …… DTCC2012
4.
目录 MySQL数据库集群面临的问题 数据中间层整体设计 数据库中间层主要功能模块和策略 数据库中间层应用 数据库中间层发展
DTCC2012
5.
数据库中间层的整体设计 ? 数据库中间层(dbproxy)的定义:
? 屏蔽集群内部细节 ? MySQL集群读写分离 ? 连接池 ? 负载均衡 ? 访问控制 ? 可集群化部署,运维 ? 关键要求: ? 对数据库应用透明 ? 性能要好:高并发,低延迟 DTCC2012
6.
数据库中间层的整体设计 ? 百度数据库集群三层架构
DTCC2012
7.
数据库中间层的整体设计 ? Dbproxy逻辑框架设计:
DTCC2012
8.
数据库中间层的整体设计 ? Dbproxy的程序框架设计:
? 进程 ? or 线程? ? MySQL API? or 按照协议与机制自己实现? DTCC2012
9.
数据库中间层的整体设计 ? Dbproxy支持并发设计:
? 进程并发设计: EPOLL驱动 ... ? 应用程序<->dbproxy<->MySQL阶段划分 handshake_send, auth_read, auth_result_send, query_read, …… DTCC2012
10.
目录 MySQL数据库集群面临的问题 数据中间层整体设计 数据库中间层主要功能模块和策略 数据库中间层应用 数据库中间层发展
DTCC2012
11.
主要功能模块和策略 ? 读写分离策略—基本原则
? 读请求发往从库;写请求发往主库 ? 读写请求如何划分? Select * from student where class=XXX 发往slave 划分原则 枚举确定为读的SQL请求,将其发往从库 Select * from student where class=XXX for update ? 其余均发往主库 ? 会话一致性:一个会话写请求结束后指定时间内的读请求会发 往主库 DTCC2012
12.
主要功能模块和策略 ? 读写分离策略—事务处理 ?
支持事务 ? 有关事务的读写分离策略 DTCC2012
13.
主要功能模块和策略 ? 读写分离策略—会话状态保持 ?
连接发生主从切换后,其上的状态依然保持 DTCC2012
14.
主要功能模块和策略 ? 负载均衡策略 ?
基本算法是基于数据库当前连接数的 ? 新建连接—选取集群中同类角色中“当前连接数/权重”最小的 数据库 DTCC2012
15.
主要功能模块和策略 ? 负载均衡策略 ?
负载均衡策略考虑MySQL实例的状态 DTCC2012
16.
主要功能模块和策略 ? 连接池
? 构建有与MySQL连接池,提升性能 ? 连接池有三级hash策略,保证取到的连接可以正确使用 ? read/write ? 用户权限 ? 连接(session)属性,如client_found_rows 等(include/mysql_com.h) DTCC2012
17.
主要功能模块和策略 ? 流量控制 ?
并发数控制 ? QPS控制 DTCC2012
18.
主要功能模块和策略 ? Dbproxy集群化部署与运维
? 配置信息热加载 ? 支持连接多个数据库集群 ? 自身压力信息准确输出 ? 流量控制 DTCC2012
19.
主要功能模块和策略 ? Dbproxy对应用程序透明策略
? MySQL ClientServer protocol ? 数据库(MySQL)某些特性 ? 各种语言的MySQL API,各种MySQL的连接框架的特殊行为 DTCC2012
20.
主要功能模块及策略 ? 存储过程的支持 ?
支持“一条SQL对应多个结果集”地接收 DTCC2012
21.
主要功能模块及策略 ? Dbproxy提高性能策略
? 减少延迟 ? 进程+状态机的模式,无锁,nonblock,网络操作都是就绪 后才执行 ? 对于大结果集的接收,采用了非连续接收的模式,减少其他 连接的等待 ? 提高并发处理能力 ? 支持多个dbproxy工作进程监听一个端口 DTCC2012
22.
主要功能模块及策略 ? Dbproxy性能数据
? 单进程QPS可达17000 ? 请求经过dbproxy的延迟为百微秒级 ? 系统资源消耗少 ?单dbproxy进程每日1200w请求 ?cpu消耗小于1%,内存消耗约200M DTCC2012
23.
目录 MySQL数据库集群面临的问题 数据中间层整体设计 数据库中间层主要功能模块及策略 数据库中间层应用 数据库中间层发展
DTCC2012
24.
数据库中间层应用模式
DTCC2012
25.
目录 MySQL数据库集群面临的问题 数据中间层整体设计 数据库中间层主要功能模块及策略 数据库中间层应用 数据库中间层发展
DTCC2012
26.
发展方向 DTCC2012
27.
DTCC2012
Download