许建辉-分布式数据库如何实现OLTP高性能

如今分布式数据库的发展趋势已从查询、中台等业务向核心的OLTP交易型业务不断拓展。许建辉老师从传统架构的转型入手,引入分布式数据库的技术发展体系的对比,通过对架构的解读,说明数据库在分布式架构下实现事务机制、保持数据一致性、实现高并发等功能的原理。同时以实际企业分布式OLTP应用为案例,剖析高性能要求下分布式数据库在OLTP业务中的应用,帮助大家加深了对于分布式数据库的了解和思考。

展开查看详情

1.分布式数据库如何实现OLTP高性能 巨杉数据库 研发VP 许建辉

2.分布式数据库在解决什么问题 应用开发简单,无需分库分表,支 持ACID,传统MySQL兼容 运维方式简单,一个人管理几百台 服务器集群,自动化运维操作 传统交易型数据库单库承载能力有 限 云计算不断发展,平台化数据服务 PaaS层替换烟囱式部署架构 信息科技的发展,数据量爆炸

3.在线交易业务的发展

4.应用程序开发从烟囱式架构向分布式的转型 微 微 微 服 服 服 务 务 务 应用 应用 前端 前端 数据库 传统架构向微 中间件 服务转型 微 微 微 微 微 微 服 服 服 服 服 服 数据库 务 务 务 务 务 务 数据库 数据库

5.数据库如何应对微服务应用框架 MySQL MySQL PGSQL S3对象 MySQL MySQL PGSQL S3 集中式 存储 实例 实例 实例 实例 关系型 数据库 分布式数据库 集中式存储 碎片化存储 分布式存储 • 数据紧耦合 • 数据碎片化 • 微服务对应独 • 无法弹性扩张 • 数据无共享 立实例 • 单点故障 • 运维成本高 • 物理分散存储 • 逻辑集中管理

6.联机交易业务需要什么样的分布式数据库? 传 ACID的支持:事务、一致性等,处理OLTP 统 技 术 兼 SQL完整支持:MySQL/PostgreSQL语法的完整兼容 容 性 分布式与扩展性:分布式是新一代架构的基础,扩展性能应对变化的数 据量 新 技 术 Multi-model与多租户: multi-model多模数据库引擎,同一引擎处理多种 前 数据应用场景,符合微服务和云数据库的架构理念 瞻 性 HTAP: 混合事务和分析场景,适应更多数据应用需求

7. 分布式交易型数据库技术发展体系 应用垂直分库 分库分表 原生分布式数据库 Application Application Application 分布式中间件(路由分发MQ) 核心 信贷 CRM 票据 用户组1 用户组2 用户组3 用户组4 X X X cluster cluster cluster cluster cluster cluster cluster cluster cluster cluster cluster cluster 将不同模块的数据表分库存储,库间 核心 核心 核心DB1 核心DB2 核心DB3 核心DBn X X X 核心DB1 核心DB2 核心DB3 核心DBn 不相互关联查询,如果有,必须通过 数据冗余或在应用层二次加工来解决, 信贷 信贷 信贷DB1 信贷DB2 信贷DB3 信贷DBn 信贷DB1 信贷DB2 信贷DB3 信贷DBn 对应用程序侵入较大。 CRM-DB2 CRM-DB3 CRM-DBn CRM CRM-DB1 CRM-DB2 CRM-DB3 CRM-DBn CRM CRM-DB1 票据 票据DB1 X 票据DB2 X X 票据DB3 票据DBn 票据 票据DB1 票据DB2 票据DB3 票据DBn 将表分布到不同机器的库上,减轻数据库的压 通过分布式中间件进行用户ID的路由分发,保 力物理机的CPU、内存、网络IO负载分摊。支持 证用户的一类操作涉及的表在一个节点上完成, 分布式事务。 避免分布式事务。如果有跨节点的事务,则通 过中间件保证其一致性。

8.分布式数据库技术发展体系对比 垂直分库 分库分表 原生分布式数据库 • 起点比较早,应用控制能力强,可进 • 构建中间SQL解析层,尽可能将标准 • 数据库内部处理分布式事务与数据切 行深度定制化 SQL拆分成多个子查询下压到下层数 分逻辑,对于应用程序完全透明,不 • 对于底层数据库没有任何特殊要求, 据库,在SQL层进行结果拼装 需感知底层数据分布 优 完全在应用程序内部进行分库 • 对于底层数据库无特殊要求,在中间 • 数据库内部原生支持分布式事务,性 势 件进行SQL切分(支持XA即可) 能远远高于分库分表 • 部分兼容传统SQL,应用程序开发难 • 高可用与容灾能力由数据库内核原生 度小于垂直分库 支持,不需额外辅助工具 • 应用程序逻辑侵入性极强,应用程序 • 应用程序逻辑侵入性较强,应用程序 • 技术较新,业界成熟案例相对较少 需要进行复杂逻辑才能进行合理数据 需感知底层数据分布结构,才能设计 • 辅助工具相对较少,生态环境有待完 分布 出优化后的查询逻辑 善 劣 • 拓扑结构调整或扩容时非常痛苦,几 • 中间件实现分布式事务,跨库事务使 势 乎不可能完成在线扩容 用XA机制,性能大幅度下降 • 很难支持跨库事务 • 作为单点向新型分布式数据库转型的 过渡阶段,技术延续性堪忧

9.分布式数据库实现OLTP高性能

10.MySQL主从复制架构 APP APP APP 读写 只读 只读 MySQL解析器 MySQL解析器 MySQL解析器 binlog shipping InnoDB InnoDB InnoDB MySQL服务(主) MySQL服务(备) MySQL服务(备)

11.SequoiaDB – MySQL 100%兼容,弹性扩张,多活架构 APP APP APP 读写 读写 读写 MySQL解析器 MySQL解析器 MySQL解析器 MySQL服务(主) MySQL服务(主) MySQL服务(主) SequoiaDB分布式数据库

12.SequoiaDB 分布式数据库架构 计算分布 + 存储分布

13.SequoiaDB 分布式数据库架构 SequoiaDB数据存储层采用分布式架构,实现了弹性水平扩展以及高性能和高可用,灵活适应不同规 模企业及不同作业方式的需要。 • 数据切分:系统提供垂直切分和水平切分的多 • 弹性扩容:SequoiaDB的存储节点可按需弹性 维分片管理方式,数据可以按多种条件切分, 扩展,系统支持在线扩容 均匀分布到集群中的各个数据节点。 • 硬件成本降低:分布式架构均采用通用x86服务 • 高可用:数据在系统中至少保留三个副本,高 器+高密度硬盘,相比传统的“小机+高端存储” 可用机制,保证了数据的持续安全使用。 的配置,大大节省了用户投资费用。

14.SequoiaDB – MySQL 分布式数据库架构 SQL解析区 MySQL服务 每个服务均可 MySQL服务 MySQL服务 进行读写操作 协调 协调 协调 协调 元数据管理区 Sequoia 节点 节点 节点 节点 DB 数据存储区 分 主副本1 数据 节点 数据 节点 数据 节点 数据 节点 数据 节点 数据 节点 编目节点 布 式 数据 数据 数据 数据 数据 数据 编目节点 存 从副本2 节点 节点 节点 节点 节点 节点 储 数据 数据 数据 数据 数据 数据 编目节点 引 从副本3 节点 节点 节点 节点 节点 节点 擎 分区1 分区2 分区3 分区4 分区5 分区6

15.分布式交易设计 •传统二段提交机制 •流水类数据按时间与ID •保证数据跨节点一致性 二维切分,避免数据搬 迁 •余额类数据按ID散列, 保证均衡无热点 二段提 表设计 交2PC 原则 兼容性 锁机制 •MySQL/PGSQL/SparkSQL •悲观锁 保持100%兼容 •读已提交能力 •原生 MySQL/PGSQL/SparkSQL 解析与执行引擎,不需 担心语法兼容访问计划

16.支持多活架构 读写 读写 只读

17.容灾和多活方案 同城方案 1、主备机房使用可靠高速光纤直连 2、每个分区主节点在主中心 3、平时使用强一致同步策略保障数据不丢 4、故障发生时使用takeover工具进行集群分离, 备集群独立运行 5、故障恢复后使用merge工具进行集群合并 双活方案 1、应用程序直连本地数据中心数据库协调节 点 2、应用程序不需要关注底层数据存储主备中 心复制和通讯策略 两地三中心 1、远程数据中心使用异步机制进行数据复制 2、数据中心之间可进行流量控制保证不会占 用过多带宽

18.异构数据源复制策略 异步数据复制策略 定期任务 1、使用JSON或CSV格式定期将异构数据源的原始数据 Oracle 异 进行导出为文本文件 步 2、通过FTP等方式将文件传输至巨杉数据库的客户端 DB2 导 数 3、通过sdbimprt工具将文本文件导入巨杉数据库 入 据 工 复 4、满足异构数据源T+1的数据复制策略,简单可靠 Informix 具 制 准实时数据复制策略 历史库 策 MySQL 略 1、异构数据源使用相关的工具将日志文件实时解析并 写入管道 2、通过Apache Storm对管道信息监听并转换为标准 DML/DDL命令 实时推送 格式转化 准 3、指令分发至多线程处理服务进行巨杉历史数据库的 Oracle 实 增删改查 时 4、满足异构数据源T+0的数据复制策略,秒级延时 DB2 数 5、当前支持Oracle Golden Gate(对应Oracle数据 据 源)、IBM CDC(对应IBM DB2)、IIE(对应IBM Informix 复 Informix)、以及Cannel(对应MySQL) 制 6、对于当前不支持的数据库需要寻找开源的日志解析 历史库 策 MySQL 工具或进行独立开发 略 日志解析 任务处理

19.多租户与业务隔离 核心业务 信贷业务 信用卡业务 协调节点组1 数 核心交易域 信贷业务域 信用卡业务域 据 存 储 区 协调节点组2 风控系统 审计系统 客户画像系统

20.全文检索索引支持 sd 运 行 架 构 Search Engine Connector SequoiaDB Main loop CB manager external search search data engine engine source agent manager shard shard session session TCP EDS manager listener shard session EDS EDS agent agent session session route route shard shard shard Indexer Assync session and agent agent session session session reader Assync session manager index session manager index index session index session data data data data session capped capped

21.对象存储S3+文件系统支持

22.平台统一管理监控方案 存储层监控 ➢ SequoiaDB提供全面 的图形化集群监控功能 • 集群健康状态 • 资源使用状态 ➢ SequoiaDB提供图形化 操作界面 • 集群部署、扩容 • 集群管理 • 数据CURD操作 • 数据管理,切分、均 衡等 22

23. 核心应用场景 分布式关系型数据库主要适用场景 联机交易 数据中台 内容管理 • 交易型业务场景 • 数据服务与高频只读 • 音视频、图片、文件 • 替换 MySQL、 类业务 等对象存储类业务 PGSQL 等传统关 • 提供比 Hbase 更加 • 提供比 Ceph 更优的 系型数据库 友好的开发接口以及 实时容灾能力以及更 更加简便的运维能力 加丰富的内容管理特 性

24. SequoiaDB 巨杉数据库 3.2 发布 SequoiaDB 3.2 发布 • 支持分布式事务能力; • 支持RU、RC、RR、以及Serializable四种隔离级别; • 支持读已提交的MVCC特性; • 在线数据Rebalance; • 多租户数据物理隔离能力; 分布式存储层 • HTAP交易分析业务的物理隔离能力; • 基于Raft协议的高可用能力; • 基于Logshipping机制的数据同步策略,支持同城双中心、同城三中心、两 地三中心、三地五中心等多种容灾架构; • 支持同城双活业务能力; • 支持表级一致性控制策略; • 支持创建 MySQL、PostgreSQL、SparkSQL 实例 • 100%支持原生协议与语法; 数据库实例层 • 支持JSON、S3对象存储、以及Posix文件系统协议; • 数据库实例提供类似Oracle RAC的高可用能力; • 支持MySQL与PostgreSQL视图、存储过程、触发器、自增字段等特性;

25. SequoiaDB 官网: 谢谢 www.sequoiadb.com Github项目地址: SequoiaDB/SequoiaDB SequoiaDB/sequoiasql-mysql