导读:

·云原生数据库起源于Amazon,随之受到国内厂商的广泛关注。以华为云、阿里云、腾讯云等为代表的头部厂商投入大量资源进行研发。仅三年左右的时间,市场已经形成较为成熟的云原生数据库应用模式并应用在不同的场景中。

云原生数据库架构特点

云原生数据库在架构上实现:资源池化存算分离,并且与云基础设施深度结合和优化;以应用为中心,统一数据入口及数据管理,应用透明无感知,多模兼容全开放。

1.资源池化存算

分离云原生数据库的主要架构特征是“存算分离”,即采用计算资源层与存储资源层解耦的技术架构,让所有节点都共享一份存储,从而实现增加计算节点无需调整存储资源或拷贝数据文件的目的。在这种架构下,云原生数据库能充分发挥各种资源的弹性能力,从1U到数百U都可以充分利用CPU计算能力,支持百TB以上的存储容量无感弹性伸缩。在云原生2.0时代,计算资源层中CPU算力与内存也会解耦,从1G到上T的内存也都可以在线热伸缩。

2.与云深度结合和优化

云原生2.0时代,云原生数据库不仅要基于云端硬件资源池化来实现数据库的计算存储弹性伸缩和分布式部署能力,还需要能够利用云基础设施本身的特性。云原生数据库会越来越紧密地和云基础设施结合,充分利用云基础设施内在的能力来完善数据库的功能,提供更优的性能。比如利用云基础设施本身的跨可用区部署能力,实现数据库的跨可用区部署访问;利用云基础设施跨地域布局的特点,实现数据库的全球就近接入和异地灾备能力;利用存储层的近存储并行处理能力,计算层下推数据库要处理的语义到存储层,进而在存储层预处理数据库的算子,避免计算层和存储层不必要的数据交互;利用存储层的日志回放能力,节省计算层和存储层的高速网络带宽。

3.统一入口应用透明

以应用为中心的云原生数据库,在架构设计上应充分考虑应用使用数据库的无感知,如用水用电一样方便地使用云原生数据库。首先是事务型数据库和分析型数据库的融合。随着现阶段数据业务分类越来越模糊,即分析业务事务化、事务业务分析化,云原生数据库只有支持HTAP混合负载处理的能力,才能让应用在开发设计时不再需要考虑哪些逻辑放到事务型数据库里处理,哪些逻辑放到分析型数据库里处理,从而都交由云原生数据库一个入口来统一处理,使得数据库内部转换逻辑对应用透明无感知。

其次是在运行过程中的透明性。云原生数据库应支持在数据库系统切换与故障转移时提供无损的应用连续性,让正在运行的应用无感知。同时,在多个只读节点的架构下,云原生数据库应支持多个只读节点的全局一致性,应用在使用时可以访问任意一个节点查询数据,不用担心数据的不一致性。为避免应用单点写入可靠性不足的问题,云原生数据库还应具备多主的能力,自动均衡业务请求,高效处理写冲突,让应用使用无感知。

4.多模兼容全开放

云原生数据库应该具备兼容多种生态接口的统一架构,利用同样的云基础设施资源,既可以使用MySQL、PostgreSQL这样的SQL接口访问数据库,也可以使用Redis、MongoDB等NoSQL接口访问。除了支持关系型数据存储模型,也应该支持多种模型的兼容访问,比如支持KV模型、时序模型、文档存储模型等。

云原生数据库通过多层次解耦完成数据融合。底层StorageLayer通过统一的智能化分布式存储架构,提供脱离语义的数据能力和基础分布式一致性可扩展存储能力;不同引擎的数据格式不同、存储模式不同,需要不同的插件,中间层IndexLayer通过插件化的方式处理不同引擎所需要的不同数据组织和存储语义;上层的SQLInterfaceLayer则主要负责生态的兼容,每个数据引擎的实现代表各自独特的生态,如MySQL、openGauss及非关系型数据库MongoDB(文档型)、Redis(KV型)、InfluxDB(时序型)、Cassandra(宽列型)等生态,提供高性能、高可靠、高安全、低成本的同时,还提供多模型一致的运维体验。

云原生时代数据库的生态一定是开放的,用户可以自由地在不同的云数据库之间迁移,用户不会再选择封闭的生态,无论自研生态还是开源生态均完全开放。因此云原生数据库应支持用户在不同的数据库之间迁移数据,而不应绑定用户。要么兼容开源生态,可以使用开源生态的工具进行迁移;要么开放核心引擎的源码,社区可以自研迁移工具自由切换到其他生态。开放生态的数据库将成为世界数据库的主流。

云原生数据库典型架构示例

以华为云GaussDB(forMySQL)云原生数据库为例,它的架构构建在多租户共享的分布式存储系统之上。它的SQL引擎是一个经过深度修改的MySQL8.0版本,因此在语法和语义方面与MySQL100%兼容,计算节点和存储之间使用RDMA网络。

GaussDB(forMySQL)使用的存储系统是一种高可靠的跨可用区云存储。在公有云上,存储系统可以是一个有几十或数百个节点的大型集群,横向扩展能力比单租户线下方案高很多倍。SQL节点将REDO日志写到存储层,页面在存储层物化,此设计显著减少了更新密集型工作负载的网络通信。属于单个数据库的页面以Slice形式组织,Slices分布在多个存储节点上,这个数据分布就是分布式查询的基础。

GaussDB(forMySQL)自上向下分为3大部分:SQL节点、存储抽象层SAL(StorageAbstractLayer)以及存储层(StorageNodes)。

首先,SQL节点形成一个集群,可以是一个主节点和多个只读副本。每个集群属于一个云租户,一个租户可以具有多个集群。SQL节点能够管理客户端连接、解析SQL请求、生成查询执行计划、执行查询以及管理事务隔离。

其次是SAL(存储抽象层),它是SQL节点和存储层之间的桥接器。SAL包括两个主要组件,SALSQL模块和DFV(DataFunctionVirtualization,是一款与数据库垂直整合的高性能、高可靠的分布式存储系统)存储节点内部的Slice存储。SALSQL模块为SQL节点提供了SALAPI,用以与底层存储系统进行交互。SliceStore是在DFV存储节点内部运行的插件模块,它需要与DFV存储框架一起使用,用以在相同DFV节点上管理多个数据库分片,支持多租户资源共享,并将页面的多个版本提供给SQL节点。对于每个分片,SliceStore使用日志目录作为中心组件来管理REDO日志和页面数据。SliceStore的主要职责是接收分片REDO日志,将其持久化并注册到日志目录中;接收页面阅读请求并构建特定版本的页面以及垃圾回收和合并日志。

最后,GaussDB(forMySQL)存储层建立在DFV持久层之上,DFV持久层为上层SQL节点存储提供读写接口,提供跨3个可用区之间的数据强一致性和可靠性保证。存储层里包含日志存储节点LogStore和页面存储节点PageStore,日志存储主要是持久化由SQL节点生成的日志记录,日志存储的底层存储对象称为PLog,PLog是一种大小有限的、追加型的存储对象,可以在多个日志存储节点之间同步复制。页面存储节点的主要功能是处理来自数据库主节点和只读节点的页面读取请求。页面存储必须能够提供数据库前端请求页面的任何版本,因此页面存储必须能够访问其负责的页面的所有日志记录。

在这种体系架构下,整个数据库集群只需一份足够可靠的数据库副本集,极大节约成本。同时,所有只读副本共享云存储中的数据,去除数据库层的复制逻辑。没有独立的备用实例,当主节点发生故障,集群进行切换操作时,只读副本可以切换为主节点,接管集群服务。而且由于只有数据库日志通过网络从数据库计算节点写入DFV存储层,没有脏页、逻辑日志和双写的流量,极大节省了网络资源。

互联互通社区

互联互通社区-IT智库,是互联互通社区IT架构、前沿技术平台。包含科技趋势、总体架构、产业架构、技术架构、系统架构、业务架构等内容,内容简练,皆属干货,合作请+微信:hulianhutongshequ.

云原生数据库整体架构和典型示例相关推荐

  1. 云原生数据库TDSQL-C——云上应用研发方式的改变

    2021年6月26日,腾讯云[TECHO]HUB技术巡回长沙站顺利开展,聚焦于数字媒体行业的云端实践.会上,腾讯云数据库高级工程师窦贤明重点分享了<腾讯云云原生数据库TDSQL-C--云上应用研 ...

  2. 从历史见证未来,Distributed SQL?云原生数据库? 多模型数据库?

    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可. 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权. 回顾历史 自1970年 Codd ...

  3. 云原生大数据架构中实时计算维表和结果表的选型实践

    简介: 随着互联网技术的日渐发展.数据规模的扩大与复杂的需求场景的产生,传统的大数据架构无法承载. 作者 | 志羽 来源 | 阿里技术公众号 一 前言 传统的大数据技术起源于 Google 三架马车 ...

  4. 云原生数据库POLARDB专场“硬核”解析

    POLARDB是阿里巴巴自主研发的云原生关系型数据库,目前兼容三种数据库引擎:MySQL.PostgreSQL.Oracle.POLARDB的计算能力最高可扩展至1000核以上,存储容量可达100TB ...

  5. 什么是云原生中台业务架构?

    什么是云原生中台业务架构? 最近公司说要做中台架构,业务中台,技术中台,数据中台,很谦虚的请教一下,什么是业务中台?业务中台是什么样子的,它是一个什么样的产品,是一个个的业务系统吗,业务中台还有没有后 ...

  6. 新一代云原生数据库的设计与实践

    数据库与操作系统.中间件组成了基础软件的三驾马车,也是企业 IT 系统必不可少的核心技术.从上世纪 60 年代诞生至今,不论是互联网行业还是银行.电信.制造等传统行业,都依赖着数据库技术的演进. 在步 ...

  7. 阿里云自主研发云原生数据库POLARDB的开拓之路

    <创新.进化.竞合.开放--阿里云自主研发云原生数据库POLARDB的开拓之路> 阿里云ApsaraDB数据库 高级产品专家 贺军 前言 数据库作为信息时代平台科技(CPU/芯片.PC/手 ...

  8. 前沿分享|阿里云数据库解决方案资深专家 李圣陶:云原生数据库解决方案 加速企业国产化升级

    简介: 本篇内容为2021云栖大会-企业级云原生数据库最佳实践论坛中,阿里云数据库解决方案资深专家 李圣陶关于"云原生数据库解决方案 加速企业国产化升级"的分享. 本文从几大视角来 ...

  9. 李飞飞演讲实录 | 云原生数据库2.0:一站式全链路数据管理与服务

    简介:5月29日阿里云开发者大会上,阿里巴巴集团副总裁.阿里云数据库产品事业部负责人李飞飞演讲实录. 一.浅谈云原生 (一)云原生,是未来使用云的标准方式 我认为云原生是未来使用云的标准方式,云计算资 ...

最新文章

  1. mysql经纬度转距离_Mysql 拿指定经纬度与数据库多条经纬度进行距离计算 (转)
  2. 《征服C指针》作者语录
  3. 全自动驾驶“生死时速”,特斯拉收购计算机视觉创企DeepScale
  4. [转]项目经理面试指南
  5. 解决springdatajpa 在解析实体类的字段时候驼峰自动转为下划线问题
  6. boost::geometry:::detail::overlay::get_clusters用法的测试程序
  7. 数据库 CURD测试题【中等】
  8. android 手写签批_Android手写签批功能实现(适配Android6
  9. 常用的Oracle命令整理
  10. The word is not correctly spelled问题解决
  11. c语言程序设计答案四,C语言程序设计练习四(参考答案)
  12. java poi excel模板变量_Java Web之POI操作Excel2016模板
  13. 软考--软件设计师--下午题数据库设计
  14. 用剪映将无字幕的英文视频翻译成中文字幕(附教程+软件)
  15. 测试知识总结1 —— 测试的分类
  16. 二、T100库存杂收、杂发、报废管理篇
  17. 简易平滑轮播(纯CSS)
  18. 【微信小程序】-- 自定义组件 - 数据监听器 (三十四)
  19. 物联网设备数据流转之实时数据从哪里来、如何转发:Node.js, MQTT, EMQX的WebHook
  20. Android App 设置系统时间,语言和时区、系统重启

热门文章

  1. 怎么防止跨站请求伪造攻击(CSRF)
  2. flex:默认值;flex:1;flex:auto; 使用
  3. ​JJKY-30Z检漏继电器
  4. php学生管理系统视频教程,学生管理系统——PHP
  5. 【PTA】C语言 7-3 大炮打蚊子
  6. VS Test: No connection could be made because the target machine actively refused it 127.0.0.1:6910
  7. markdown用法总结
  8. 2021-11-24-SWUSTOJ616-C语言的排序查找
  9. 数学建模论文基本格式(转载)
  10. Final Test(FT测试)