AS华为黄伟
2020-02-27 735浏览
- 1.基于云场景架构设计的分布式 数据库 黄伟 华为Cloud BU数据库服务产品部 2018.7.6
- 2.黄伟 架构师 • 技术宅男,长期从事基础软件开发、系统设 计和架构设计工作。 • 曾负责华为云存储新一代架构设计。目前关 注云上数据库架构以及数据库与存储结合架 构设计领域,主要研究探索云原生分布式数 据库的技术方向。
- 3.• 数据库市场状态 • 业界云数据库架构 • 华为Cloud Native分布式数据库架构设计
- 4.云计算技术市场状态
- 5.数据库的业界信息 数据库领域收入: 国内金融行业系统占比: 数据库市场: 关系型数据库仍然占据主导地位 非关系型增长快速,份额仍然比较少 微软是唯一收入增长的传统数据库厂家 AWS的数据库收入达到$1.7B
- 6.• 数据库市场状态 • 业界云数据库架构 • 华为Cloud Native分布式数据库架构设计
- 7.传统数据库架构 Database system Query optimizer Query execution Lock manager Buffer pool R only DBMS Secondary (read-only) Redo/undo log Page store Local disks R/W Master (read-write) R only Secondary (read-only) Local disk Local disk Log shipping Redo log writes (seq.) Local disk Page writes (random) Page reads (random) 基本架构源于30多年前 面向当时的硬件设计 (单处理器, 小内存, 慢速磁盘) 采用双机热备提供高可用(HA) 主库完成所有操作,传送日志到从库 从库重放日志更新本地数据副本 主库宕机,主备切换 从库可以只读 主备间仅交互日志
- 8.云数据库的发展趋势 计算与存储分离 Gartner报告:到2019年,90%的云数据库架构采用计算与存储分离, 剩下10%没有分离的,也会被市场逐步淘汰。 发挥最新硬件性能 •CPU:NUMA架构的多核 • 存储: Optane SSDs (Coldstream & AEP) • 网络: RDMA • 专有硬件: FPGA,GPU 利用AI和ML
- 9.云数据库的诉求 高性能 大数据 云数据库 高扩展 高可用 易用易维
- 10.业界实践1 来源:综合Amazon Aurora介绍 计算与存储分离:独自扩展 • 计算层负责 ACI(不包括 ‘D’). • 存储层保证持久性(D). o 存储服务接收redo日志; 合并; 后台应用redo日志到数据页 o 瞬时故障恢复 o 存储节点间复制数据,无需计算层参与 分布式存储节点间仅传输redo日志 • 极大减少了网络开销:1/7.4 • 增量日志 提升锁管理、查询缓存等.
- 11.业界实践2 来源:云数据库POLARDB > 产品简介 > 产品架构 计算与存储分离 o 计算节点保存元数据 基于RDMA的高速链路互连 共享分布式存储 数据多副本、parallel-raft 用户态文件系统: 优化redo和 page IO
- 12.• 数据库市场状态 • 业界云数据库架构 • 华为Cloud Native分布式数据库架构设计
- 13.华为Cloud Native数据库设计原则 (1) 解耦 • 计算与存储分离 • 主从解耦 近数据计算下推(NDP) • IO密集型负载下推到存储节点完成,比如:redo处理,页重构 充分利用云存储的能力 • 存储层实现独立容错和自愈服务 • 共享访问 (单写多读) 发挥SSD的优势 • 避免随机写带来的写放大,减少磨损,减小时延; • 充分利用SSD的随机读性能
- 14.华为Cloud Native数据库设计原则 (2) 多租户支持 性能瓶颈已经从计算和存储转向网络 • 减少网络流量 • 采用新的网络技术和硬件, 比如: RDMA 引入AI和ML打造自治系统 • 自扩展 自调优
- 15.总体架构 SQL Node SQL Node SQL Layer Storage Layer 计算与存储分离 • 易于扩展和负载均衡 存储抽象层(SAL)隔离SQL层(前端、 事务、查询执行等)和数据持久化 • 高级特性的基础 日志即数据:快速、可靠、共享 • 完全面向新介质设计 • 打掉处理链路
- 16.华为Cloud Native数据库概览 SQL Nodes Replica SQL node (read-only) Coherence traffic Master SQL node (read-only) Coherence traffic Replica SQL node (read-only) SAL Client SAL Client SAL Client Storage Abstraction Layer (SAL) Storage Network RDMA SSlicliece Slice Slice SSerevrevrer Slice Slice SSlicliece Slice Slice SSerevrevrer Slice Slice Storage Nodes Redo log Pages Shared, reliable, scale-out storage 主节点 • 处理所有的写 • 写WAL日志(Redo) 只读实例 • 处理只读请求 • 快速升主 • 快速增/删 数据分区 • 数据页以slice组织,分布在各个slice服务 • slice冗余保存 • 日志按slice分发 Slice服务 • 单数据库可以分配多个Slice,租户访问隔离 • 存储和处理日志记录 • 维护和重构数据页 • 服务数据页读请求
- 17.SQL Nodes R only R/W R only Replica (read-only) Master (read-write) Replica (read-only) Shared Storage Coherence traffic Redo log writes Page writes Page reads 管理客户端连接、解析SQL请求、执行 计划&执行、管理事务隔离级别 一主多读 主节点和只读节点松耦合 主节点和只读节点仅同步少量信息 快速Failover 合入HWSQL特性 • Query result cache • Query plan cache • Online DDL
- 18.SQL Replica 只读节点在本地buffer pool中维护数据页的多个版本 • 减少从存储的远端读取数据页 主节点交互 •MVCC:接收主库当前活跃事务列表 (“readview“) • 页失效: 接收主库页失效列表 •Purge:读节点发送最小读LSN,主节点基于只读节点的反馈进行purge操作 • DDL操作: 当执行DDL操作时,主库和只读副本进行协调 (via MDL)
- 19.存储抽象层 (SAL) 存储抽象层 (SAL)是逻辑层 实现数据存储和SQL前端、事务、查询执行等操作的隔离 包括:1)在SQL节点上执行的公共日志模块;2)在存储节点上执行的slice Store组成 支持数据页及其多版本访问 SAL将数据页映射到Slice( {spaceID, pageID}) • 横向扩展 • 数据本地化:数据密集型操作在数据归属节点完成。
- 20.垂直优化 SQL Server Container SQL Node eth Hi1822 uplink RDMA Storage Server Co-Processor Co-Processor Slice1 Slice2 Co-Processor Slice3 Co-Processor Slice4 Hi1822网卡 • 低时延 • 高PPS • 软硬协同 RDMA • SQL节点与存储节点低时延网络 • 支持大规模组网 协处理器 • NDP • 卸载SQL节点工作负载
- 21.Summary 通过SAL实现计算与存储分离 利用云存储特性 • HA : 原子写, 复制, failover/switchover • 热容量伸缩、负载均衡、共享访问 发挥新介质(如:SSD/X3DP)优势 • 避免随机写带来的写放大和磨损,减少时延 • 利用介质特性(如:SSD的随机读) 多租户支持 引入新网络技术,比如RDMA 、1822 近数据处理 • 将IO密集型负载卸载到存储节点 利用AI和ML打造自治系统
- 22.