2021年12月18日,阿里云用户组(AUG)第四期活动在北京举行。现场,阿里云数据库PolarDB MySQL 内核研发负责人王晨向数十家北京企业分享了云原生数据库的技术架构,并对下一代云原生数据库进行了展望。王晨拥有十几年数据库内核研发经验,先后供职于IBM DB2 LUW(Linux/Unix/Windows) 数据库内核研发部门、电力行业分析型数据库内核研发部门、阿里云负责数据库内核研发团队。本文根据他的分享内容整理而成。

我也经常去拜访客户或参加一些客户大会,碰到有的客户会问什么是云原生,是不是你们又炒概念,或者说云原生数据库究竟是怎样的一个概念?我正好是从传统数据库厂商,又到了行业数据库,最后跑到云厂商去做云上数据库的内核研发,也值班处理RDS的问题,相当于说个人的职业经历就是按照数据库目前的发展轨迹去走的,所以我首先来回答“什么是云原生数据库”这个问题。

云原生数据库架构设计思路

早期,从70年代到2000年的时候,也就是互联网没兴起之前,最常用的是传统厂商的数据库。用这样数据库的企业基本上都是大型企业,比如金融、政府或者说一些对数据库依赖比较重的一些企业。

到互联网时代,PC端互联网和手机端的互联网企业涌现,他们最大特点是业务有一个急速增长的过程。初期的话不可能说找一个特别完备的数据库就去购买。随着用户和业务的激增,整个数据量会非常大。以至于像Oracle、DB2这样的数据库,也不能够完全支持一个庞大的分布式这种形态的架构,或者说即便可以支持价格也非常昂贵。所以这时,正好LAMP这种便捷式的部署就出现了。很多人愿意去用开源的数据库,一是考虑到成本,这是最主要的;二是它简单易用,方便部署。大家更多得聚焦在业务上,而不是聚焦在如何使用数据库上。

当然,后面在发展的过程当中,大家会发现运维数据库,即使是运维这么简单的数据库其实也不是很容易。我们也要去考虑高可用来搭它的主备,也需要考虑它的负载,如果需要读写分离,还需要读节点来扩容,这些都是需要亲自去操刀的。这样的情况下,云上的数据库RDS就诞生了,它最重要的特点就是管控。有管控就能够帮企业自动化地去进行刚才我说的一些操作,包括备份,进行主备搭建,只读节点扩容和切换等等,这些都是由管控来做。

但是随着再往后发展,就会发现这些能力还是不够的。比如说可能发现单实例数据超过了2T,迁移各方面都是由这个单机去迁移,过程当中肯定是不容易的。另外比如说读节点的延迟,由于binlog逻辑复制是基于事务级别的,所以有大的DDL或者说有一些大事务的话,会导致复制延迟增加。

另外,以前RDS的部署,它其实是不能够很好地利用云上的弹性技术。而云上的弹性它是可以做到,比如存储的弹性,计算的弹性,以及网络的弹性等等。这些弹性其实在应用层都用得比较好,但是在软件层面、系统软件为什么用不了呢?因为它本质上是一个软件,不可分割。所以在这种基础上,所谓的云原生数据库就诞生了,就是云上产生的数据库。

PolarDB 的架构

那云原生数据库是怎么办的呢?第一点就是要把数据库进行拆分。比如说MySQL可以拆分成计算和存储模块部分,让存储的部分单独扩容,计算部分单独扩容,所以就出现了现在说的存计分离的架构。当然,我们后续还希望能够有在内存和CPU上也去解耦的这样一个弹性能力。思路就是将单一系统软件进行逐步拆分,然后形成这样每一层模块都能利用云上计算弹性的能力。

我再往下说一下云原生PolarDB数据库的一个架构。这块其实是PG,因为我主要是在MySQL,但是PostgreSQL的整个架构也是相同的,所以总架构一起介绍了,后面介绍的一些特性都是以MySQL为主。

最上层大家可以看到网络层,我们可以做到,用户自定义的这种访问方式。第二层代理层可以去进行一些读写的分离,还有那些流量的分离都可以做。第三层计算层我们可以进行计算能力的扩容。现在PolarDB的Share Storage架构适合一写多读的架构。我们可以达到分钟级的扩容,后面会讲一下弹性能力。最后还有存储层,因为它也是单独的存储集群,整个吞吐量是非常大,而且也可以按需去扩容。现在可以达到100T的规格,严格意义上,其实我们现在宣称是100T,实际上可以比这个更大。这样的话我们就比之前的像RDS这样的数据库,能够解决更多不同层级的扩容需求。

这里简单介绍一个主要技术,就是为了让只读节点能够复制延迟更低,我们采取了物理复制的模式,利用redo同步的机制来解决,这个就是一写多读降低延迟的技术。

PolarDB 云原生能力

计算弹性
刚才我们说的分层弹性,这块儿正好列举了一下计算弹性。计算弹性是大家很关心的,随着用户现在需求越来越精细化,对我们的要求也非常高。所以我们从原来的Scale up,就是可以从一个节点比如8C32G往上弹,但是它是按规格来弹的。

除此之外,还可以不断增加RO或者缩减RO来进行Scale out和in的这样的一个能力。在这种基础上,要实现不同规格的RO这样的能力。还有正在内测的秒级弹性,就是对CPU的核数直接进行翻倍的弹性。这样的一些需求,包括我们未来最新的架构上,对内存和CPU分离的不同弹性,也都来自于我们客户的需求,我们也希望把它实现。

这是从弹性角度上说的,这个场景举个例子,比如说教育行业,它经常有这种峰值,所以我们就在这个基础上,做了适应他们应用场景的技术架构。

存储弹性
另外对于存储弹性的话,针对不同的存储类型,有不同的价格,对不同的业务场景。比如说电商这种高性能业务场景,历史账单实时推荐的在线分析报表业务,离线的分析业务,可以有不同的一种形式提供给大家,就是从存储的角度来也可以有不同的类型和使用量的弹性方式。

这一页是存储弹性应用的一个场景。现在也有客户因为PolarDB存储比较贵,希望有这种历史库,也希望有一些数据能导到OSS存储。其实我们也在做这些事情。历史库其实已经发布了商业化版本,它会针对一些数据进行压缩后去保存,那样节省了存储的成本。

备份与恢复
稍微介绍一下备份的方式,比如说场景有14天的快速恢复,有实例级别回收站方式,有这种恢复到任意时间点的方式,这个都是基于PolarDB本身redo的原生物理备份。同时也可以基于binlog去做备份,如可以利用DBS的一些能力来进行逻辑备份,就根据需求不同而做。当然我也听到很多其它需求,比如说我们有客户是希望秒级表级备份,我们提供了表级的备份,但是这个技术可能还需要去恢复实例后,才能把某个表恢复过来。我们还希望提供这个能力,比如通过闪回查询功能,可以基于行级的按时间点去恢复的能力等等。

我们希望能够根据云上客户需求多样化的特点,既能做到通用的基础性,也能做到多样化。所以这块也希望大家给我们一些时间,这些都在规划当中。

下一代云原生数据库展望

HTAP能力
刚才讲的云原生数据库,第一代我觉得是利用拆解数据库的不同模块,让它更能适配到云原生的云弹性和资源池化能力。下一代的云原生数据库,我觉得是企业级,也就是现在我们会接触越来越多的企业级用户。他希望能够有更多的能力,比如HTAP能力,HTAP跟AP是完全不一样的。HTAP是在TP的基础上,可以有一些只读节点进行SQL的分析,我们希望有实时业务报表的能力,这就是HTAP。但是AP一定是离线计算,更大量的数据进行扫描和计算等等。在最新的PolarDB MySQL 8.0里,我们其实已经有了HTAP的能力,包括一些在这个表上做列存索引及并行查询的能力。

全球数据库GDN解决方案
另外,我们有全球数据库的GDN,这种解决方案可以用于数据异地灾备,还有异地多活的场景。现在异地写还是有一定延迟,但是慢慢也在增强这样的能力。目前这样的场景主要是游戏客户在用,未来更多也希望用到金融行业里面。

多租户多写
这是最新提供公测的多租户多写能力。其实很多客户有这样的需求,因为一写多读还是不能够把写的资源隔离开,我们现在提供根据租户id和数据库schema、table进行绑定,可以在数据隔离的情况下,实现多写的一个场景,同时会提供一个全局一致性读节点的能力,方便把数据进行读取和聚合。

闪回特性
闪回特性其实刚才也说了,我们可以基于这个技术进行秒级恢复,它是基于undo去做的,所以他需要保存很多的回滚数据。场景基本上目前常见的就是游戏用户,比如做游戏回档对这个有强烈的需求,还有一些SaaS用户厂商,他们的数据可能会被误删,他们希望赶快就把某条记录给恢复,类似于这种场景。

分区表能力增强
最后介绍增强MySQL分区表的能力。分区表原来在MySQL里是非常弱的,客户其实对分区表的生命周期管理是非常关心的。所以我们做了大量的性能和功能上的一些改进,比如说去掉了表级锁,变成分区级锁。增删数据在某一个时间或者某一个按租户分的分区上,都可以直接去进行单独维护。后续会跟历史库和OSS这样的存储去结合,让整个数据的生命周期流转更平滑。

分层细化
最后一页再简单介绍,就是说我们觉得云原生数据库在未来肯定会更加细致。这个图画的比较复杂,实际上整体看来,其实我们更多的是进行更细化的分层,然后充分利用云技术,毕竟弹性和分布式是云原生数据库的核心。通过拆分得更细一点,在每一层做更好的弹性,有更好的Scale up和Scale out的扩展能力。

我今天分享的内容就是这些,谢谢大家。(正文完)
阿里云高级技术专家王晨:云原生数据库PolarDB技术解密

阿里云高级技术专家王晨:云原生数据库PolarDB技术解密相关推荐

  1. 阿里云高级技术专家:面向5G的云网一体及云原生应用实践

    7月15日,阿里云高级技术专家李晓成在2020亚太内容分发大会上发表<面向5G的云网一体及云原生应用实践>主题演讲,从边缘计算产业机遇与挑战来解读阿里云边缘计算的布局,并分享阿里云在云网一 ...

  2. 阿里云高级技术专家周哲:阿里云边缘云原生应用实践

    简介: 为什么需要边缘云原生?边缘云原生的技术特性和优势是什么?它可以为行业提供哪些关键能力?又有哪些场景适合边缘云原生呢?在MEC全球应用开发者大会的"MEC开放论坛"上,阿里云 ...

  3. 阿里云高级技术专家白常明谈《边缘云的技术挑战和应用创新》

    简介:随着5G商用周期的开始与新基建的发展, 5G+边缘计算带动并赋能数字化行业,逐渐形成了预期可观的产业规模.5G周期内,直接和间接带动产业规模就高达万亿级,在如此巨大的市场规模下,会有越来越多的行 ...

  4. 阿里云高级技术专家白常明:边缘云的技术挑战和应用创新

    随着5G商用周期的开始与新基建的发展, 5G+边缘计算带动并赋能数字化行业,逐渐形成了预期可观的产业规模.5G周期内,直接和间接带动产业规模就高达万亿级,在如此巨大的市场规模下,会有越来越多的行业具备 ...

  5. 阿里云高级技术专家林立翔:基于阿里云弹性GPU服务的神龙AI加速引擎,无缝提升AI训练性能

    2023 年 3 月 23 日 14:00,NVIDIA GTC 开发者大会阿里云开发者社区观看入口正式开放,阿里云高级技术专家林立翔带来了题为<基于阿里云弹性 GPU 服务的神龙 AI 加速引 ...

  6. 阿里云高级技术专家带你全面了解云主机性能评测

    钱超,花名西邪,阿里云高级技术专家,超12年老阿里,是云主机性能领域的知名专家. 在目前的云计算测评领域,很多性能测评存在营销的包装,容易引起误导:比如用瞬时性能引导读者得出结论,而不去关注稳定性和隔 ...

  7. 阿里云高级技术专家空见: CDN的数据化之路

    想要实现优质高速的互联网视频服务,一定离不开高质量的内容分发网络服务,就是我们常说的CDN,在10月13日云栖大会视频多媒体分论坛上,阿里云高级技术专家空见为大家讲解了CDN服务过程中,数据处理.安全 ...

  8. 阿里云高级技术专家张毅萍:我眼中的边缘计算

    边缘计算是目前公认的大方向,越来越多的边缘计算应用将随着5G建设的步伐而兴起.阿里云边缘计算团队的目标是在行业爆发来临之前,完成基础计算资源平台的构建,为产业提供基于体验的计算调度能力,进而助推整个产 ...

  9. 阿里云高级技术专家赵伟:安全加速 SCDN 设计与案例

    此前,阿里云发布了SCDN安全加速解决方案,在CDN加速的基础上,将专业的安全能力赋能 CDN,实现既有加速又有安全的服务.在本次杭州云栖-飞天技术汇CDN与边缘计算专场中,阿里云高级技术专家赵伟从业 ...

  10. 阿里云吕漫漪:深度解析国内首个云原生数据库POLARDB的“王者荣耀”

    关注,下载更多学习资源 数据技术嘉年华大会上,吕漫漪老师分享过后,企业网(d1net)采访了嘉年华嘉宾吕漫漪老师,这里我们整理分享出来. 大会PPT下载:关注"数据和云"回复&qu ...

最新文章

  1. 15篇论文全面概览BERT压缩方法
  2. 独家 | 如何改善你的训练数据集?(附案例)
  3. BeanShell中Getter和Setter语法
  4. 什么是时间导数(Time derivative)
  5. 病毒周报(081110至081116)
  6. 7年Java后端被淘汰,一路北漂辛酸史。。。
  7. DJango — URL的Reverse和Resolve
  8. 为什么不该唯经验论?!
  9. (引)XPath 示例
  10. ffmpeg下载m3u8的视频流文件
  11. java解释器是什么_java编译器和解释器
  12. oppo自带计算机版本,OPPO手机助手
  13. 【板栗糖GIS】如何给文件夹批量重命名
  14. 51单片机—LED小灯的点亮及其流水灯程序
  15. 接触mybatisplus单页500条限制_单页网站制作教程,单页网站设计五大技巧
  16. Java Attach机制
  17. linux中vim编译器中复制粘贴,编辑器 - 如何从(并复制到)系统剪贴板进行vim粘贴?...
  18. 使用Python实现QQ窗口抖动
  19. Java基础篇(集合)
  20. 中国人寿在线笔试可以用计算机嘛,中国人寿集团校园招聘笔试经验

热门文章

  1. TFS 2010 使安装更容易,让VSS历史
  2. Oracle用户权限
  3. 天涯社区用到的日历函数
  4. Java内存模型深度解析:重排序
  5. 数据结构之双向链表----Python
  6. 指示灯亮着,但是右边的数字小键盘不可用
  7. DevExpress DateEdit 5 常见问题解决方法
  8. jquery比较时间大小
  9. 小Z的袜子(bzoj 2038)
  10. 【转】 Linux中的工作队列