*| 导语 *TDSQL-C PostgreSQL(CynosDB)是腾讯云数据库团队自研的新一代云原生数据库,融合了传统数据库、云计算与新硬件技术的优势,采用计算和存储分离的架构,100%兼容 PostgreSQL,提供具备极致弹性、高性能、海量存储、安全可靠的数据库服务。本文旨在从数据库内核的角度揭秘TDSQL-C PostgreSQL的核心架构与关键技术。本文适合读者:腾讯云售后服务,TDSQL-C用户,TDSQL-C开发者,需要有基本的数据库与存储知识。

一、概述

TDSQL-C采用计算和存储分离的架构,所有计算节点共享一份数据,存储容量高达128TB,单库最高可扩展至16节点,提供秒级的配置升降级、秒级的故障恢复和数据备份容灾服务。TDSQL-C既融合了商业数据库稳定可靠、高性能、可扩展的特征,又具有开源云数据库简单开放、自我迭代的优势。TDSQL-C不仅在性能、扩展性和高可用方面有大幅提升,计算存储的解耦使得计算层和存储层都获得了很大的独立优化空间,本文下面将介绍TDSQL-C架构的实现,以及在新架构上的关键技术优势。

二、TDSQL-C PostgreSQL(CynosDB) 架构

Primary Instance是数据库的读写实例(RW),负责接收数据库的读写请求,Replica Instance是数据库的只读实例(RO),负责处理数据库的只读请求,目前可以支持扩展最多15个Replica实例。

CynosFileSystem是用户态分布式文件系统,主要提供分布式的文件管理,为CynosPG实例提供文件存储服务。CynosFS是专为云原生数据库而打造的分布式用户态文件系统,将传统分布式文件系统优势与云原生数据库相关特征进行融合,是TDSQL-C弹性扩展、海量存储、高性价比的基石。

CynosStoreAgent、 CynosStoreMeta、CynosStoreNode 构成分布式云存储系统CynosStore(一个支持日志的、提供多版本读的、分布式的块设备存储)。其中CynosStoreNode存储节点负责数据库的实际数据存储。同时CynosStore将日志实时同步到腾讯云冷存储(COS)上,用于基于时间点的数据备份与恢复服务。

Primary Instance和分布式存储之间传输的是日志流。Primary Instance将数据变更以日志的方式发送到CynosStore中,CynosStore会定期的将日志合并到数据页面上,因此无需将脏页写到存储中,这是与传统数据库很大不同的地方。Replica Instance没有写事务,因此,不会向CynosStore发送日志信息,但是会请求读取页面。Primary Instance也会将日志同步到Replica Instance中,Replica Instance会使用收到的日志更新内存中的数据页面,当Replica Instance切换成Primary Instance时,可以直接使用这些最新的页面对外提供服务,无需再次从CynosStore中读取页面。

TDSQL-C实现原理:日志即数据库。基于此实现的数据库系统专为云原生而打造。数据库的Primary Instance会产生日志,并保存到CynosStore中,因此我们从存储上,针对于每一个数据页面,均可以拿到基于日志回放的任何时间的页面版本。也就是说,CynosStore提供了一个基于页面的多版本存储系统,每一个版本都是基于一个或者多个MTR的回放(Mini-Transaction Record:多条日志的集合,用来保证数据库中的页面或者索引结构从一个“一致性”状态,到另一个“一致性状态”)。

1.计算层

数据库引擎CynosPG基于PostgreSQL而来,PostgreSQL是世界上功能最强大最先进的开源数据库。经过长达30年以上的积极开发和不断演进,PostgreSQL已在可靠性、稳定性、数据一致性等获得了业内极高的声誉。CynosPG主要对PostgreSQL日志系统和存储系统进行改造,进行Oracle语法高度兼容,以及深度的内核性能及功能优化,对于PostgreSQL SQL引擎架构改动有限,因此CynosPG可以完全兼容PostgreSQL原生的功能。

分布式用户态文件系统CynosFileSystem,为实例提供分布式的文件管理,负责将文件的读写请求翻译为对应的BLOCK读写,CynosFileSystem为实例提供Pool维度的存储访问,如上图所示。

CynosStoreAgent为CynosFS提供SG维度的存储访问,提供SG的读写接口,对于读写请求有不同处理。 写请求:将修改日志通过LOG API发送到CynosStoreNode,读请求:直接通过BLOCK API读取CynosStoreNode数据。CynosStoreAgent 除了承担计算层与存储层的读写交互,也负责主备间日志流同步,对于CynosPG主备实例间只通过CynosStoreAgent进行交互。在工程实现上,由于现代多核和多插槽计算机对于跨核间的数据共享(atomic instruction、cache line bouncing、memory fences)代价非常大,CynosStoreAgent(无锁实现)工程实现上使用了创新的share-nothing编程异步框架,一种无需耗时锁定即可在 CPU 内核之间共享信息的设计,面向现代新硬件技术的优势实现了极致性能。

2.存储层

CynosStoreNode以Segment为维度进行资源管理,Segment Group内3个Segment实际存储同一份数据,通过一致性协议(Raft)进行同步。CynosStoreNode负责Segment日志的处理、BLOCK数据的异步回放、读请求的页面多版本支持等。同时还负责将日志备份到Cold Backup Storage(COS),进行增量备份,根据增量备份,可以灵活的生成全量备份和差异备份。相比于传统的开源数据库,云原生数据库TDSQL-C计算层仍然包含传统内核的大部分组件(查询处理器、事务管理、锁、缓存实现以及MVCC),但有几个重要核心功能(redo日志记录、日志回放、持久存储、崩溃恢复和备份/恢复)均下沉到存储层。在工程实现上,CynosStoreNode(无锁实现)与CynosStoreAgent一样,使用了创新的share-nothing的编程异步框架,无共享模型的异步框架,结合现代新硬件技术,实现存储层的极致性能。

CynosStoreMeta负责CynosStore Service资源的分配和调度,采用一主两从架构,包括 Pool调度和 SG 调度、备份回档调度,以及维护Pool和SG的对应关系。 CynosStoreMeta两类调度一个是资源池Pool调度(自动扩缩容 Pool),一个是 SegmentGroup 调度(增减副本,leader切换,资源均衡等)。

三、TDSQL-C PostgreSQL(CynosDB) 技术优势

日志即数据库

TDSQL-C 引入计算存储分离的设计,存储层使用共享的分布式存储,计算层则将传统数据库不必要的IO全部卸载,如上图所示写IO只有Redo日志流,Redo日志能表达数据库的所有状态,实现计算与存储基于日志传输的新数据库架构,真正实现了将 Redo LOG 下沉到存储层,将网络 IO 减少到最低。

TDSQL-C计算层实现无状态,计算层本地数据文件将不复存在,仍然包含传统数据库内核的大部分组件:查询处理器、事务管理、锁、缓存实现以及MVCC多版本,移除了PostgreSQL中的FPW特性,脏页面刷盘操作。

TDSQL-C存储层实现可计算智能存储,传统内核几个重要核心功能:Redo日志记录、日志回放、持久存储、崩溃恢复和备份/恢复,均下沉到存储层,由分布式存储系统自动管理数据的多副本,实现自动扩缩容,自动故障校验检测和修复,同时实现了存储页面多版本支持。

计算与存储分离,共享分布式存储

采用计算与存储分离的设计理念,满足业务弹性扩展的需求。各计算节点通过用户态分布式文件系统(CynosFileSystem)共享底层的存储(CynosStore),极大降低了用户的存储成本。

一写多读,读写分离

TDSQL-C 采用多节点集群的架构,集群中有一个主节点(可读可写)和至少一个只读节点。当应用程序使用集群地址时,TDSQL-C通过内部的代理层对外提供服务,应用程序的请求都先经过代理,然后才访问到数据库节点。代理层不仅可以做安全认证和保护,还可以解析SQL,把写操作发送到主节点,把读操作均衡地分发到多个只读节点,实现自动的读写分离。对于应用程序来说,就像使用一个单点的数据库一样简单。

完全兼容

TDSQL-C完全兼容PostgreSQL,代码/应用无需修改或只需少量修改,业务无需改造即可平滑迁移。同时TDSQL-C 会定期实现对PostgreSQL新版本的兼容性。可以使用PostgreSQL 导入/导出工具或者快照,将PostgreSQL 数据库轻松迁移到TDSQL-C。

极致性能

深度定制的数据库内核,超高性能,可以满足高并发高性能的场景,保证关键业务的连续性,并可进一步提供读写分离以及读写扩展性。如在CynosPG,CynosFileSystem大量使用的异步、流水线、批处理、Lock Free结构等等。

新硬件技术及零拷贝技术,减少操作系统上下文切换以及数据在用户态和内核态之间拷贝引起的性能损耗,进一步优化关键路径的系统性能。如RDMA、NVME、SPDK等等。

CynosStore在工程实现上真正做到了无锁实现,创新的使用了share-nothing编程异步框架,无锁实现即可在 CPU 内核之间共享信息的设计,面向现代新硬件技术的优势实现了极致性能。

海量存储

最高128TB的海量存储,无服务器 Serverless 架构,自动扩缩容,自动故障检测修复,并按实际使用量计费,不用不计费,轻松应对业务数据量动态变化和持续增长。自动维护数据多个副本通过Parallel-Raft协议保证数据的一致性,保障数据安全可靠。同时不再需要因为单机容量的限制而去购买多个实例做分片,由此简化应用开发,降低运维负担。

秒级故障恢复、快速弹性变配、快速只读扩展

计算节点实现了无状态,支持秒级的故障切换和恢复,即便计算节点所在的物理机宕机也可以在1分钟之内恢复。

计算节点根据业务需要快速升降配,升降配不断连接,根据内存大小不同升降级时间最快可到秒级,实现计算资源的成本最优。

计算节点根据业务需要快速添加只读节点,一个集群支持秒级添加删除1个 - 15个只读节点,快速应对业务峰值和变化场景。利用日志流LSN确保读取数据时的全局一致性,避免因为主备延迟引起的不一致。利用基于Redo的物理复制代替逻辑复制,提升主备复制的效率和稳定性。

快照备份回档

基于数据多版本的秒级快照备份对用户的数据进行连续备份保护,免去主从架构备份回档数据的同步和搬迁,最高以GB/秒的速度极速并行回档,保证业务数据迅速恢复。整个备份回档流程无锁实现,对实例存储无任何影响。

四、总结

由于篇幅有限,具体实现细节并没有详细地阐述,本文主要全局的介绍了TDSQL-C核心架构与关键技术,后续文章会详细揭秘TDSQL-C各个内核组件具体实现细节。腾讯云数据库团队也在不断的探索更多的功能与优化,如在执行器优化器探索,向量化执行引擎,XRDMA更低延迟IO栈,MTCP面向多核的用户态网络协议栈,DB语义下推与异构计算加速,FPGA存储引擎加速,Hybrid Storage(Optane/DRAM/AEP/ScaleFlux)等等软硬一体化融合工作,去追求更佳的功能性能以及用户体验,后续我们也会尽量给大家分享这些细节的进展与实现。如果在使用TDSQL-C中遇到疑惑,不要犹豫请立刻联系我们,我们会努力地为大家答疑,感谢对TDSQL-C的支持。

五、相关概念

Segment(Seg):Storage Service管理数据BLOCK和日志的最小单元(10GB),也是数据复制的实体。图中同样颜色的3个Segment实际存储同一份数据,通过一致性协议(Raft)进行同步,我们叫做Segment Group(SG)。

Pool:多个Segment Group(SG)从逻辑上构成一个连续的存储数据BLOCK的块设备,供上层的CynosFileSystem分配使用。Pool和Segment是一对多的关系。

本文由博客一文多发平台 OpenWrite 发布!

TDSQL-C PostgreSQL(CynosDB) 内核解密-披荆斩棘,勇往直前的腾讯云数据库相关推荐

  1. 万众瞩目--腾讯云数据库TDSQL第一届征文正式大赛开启

    首届腾讯云数据库TDSQL征文大赛开启啦!只要您对腾讯云数据库TDSQL有兴趣.有研究.有想法,皆可参加.腾讯云数据库诚挚邀请您参与活动,分享和TDSQL邂逅的若干趣事,领取精美礼品. 腾讯云数据库T ...

  2. 首发速学——腾讯云数据库TDSQL(PostgreSQL版)训练营正式开营

    腾讯云TDSQL是腾讯自研的企业级分布式数据库,在金融.政务.运营商.电商.游戏等数十个行业中落地应用,具备金融级高可用.强一致.高性能.高可靠等特性.目前,腾讯云数据库TDSQL 已助力 20 余家 ...

  3. TDSQL:解锁数据库前沿技术要点 | 腾讯云数据库DTCC 2021亮点回顾

    10月20日,一年一度的数据库技术交流盛会--DTCC 2021(第十二届中国数据库技术大会)在京圆满落幕. 大会以"数造未来"为主题,重点围绕数据架构.人工智能与大数据应用.传统 ...

  4. 腾讯云数据库闪耀曼哈顿,CynosDB回馈开源社区

    2月27日,腾讯云数据库(TencentDB)正式亮相MariaDB用户者大会,腾讯云数据库CynosDB以其极致领先的性能.独特的技术架构以及众多内核层面的创新特性受到包括MariaDB基金会主席K ...

  5. 腾讯云数据库三大产品线统一升级为TDSQL,这是要集中力量干大事! ​

    责编 | 张红月 出品 | CSDN(ID:CSDNnews) 近日,腾讯云宣布了其数据库品牌 TDSQL 的全新战略升级计划及未来发展战略.至此,这家进入数据库赛道十多年的互联网大厂,在数据库发展的 ...

  6. 腾讯云数据库开源再突破:TDSQL PG版查询性能提升百倍

    日前,腾讯云数据库开源产品TDSQL PG版(开源代号TBase)宣布推出重磅升级--经过一年半的打磨,上万张表访问场景下,内存占用节省60%:查询性能提升百倍:SQL语句兼容性增强.同时,大力提升原 ...

  7. 腾讯云数据库 CynosDB应用场景与产品优势有哪些?

    本文分享 腾讯云数据库 CynosDB应用场景与产品优势有哪些? 更多更多参阅腾讯云官方云数据库 CynosDB应用场景与产品优势文档 云数据库 CynosDB应用场景 1.高性能高可用企业应用 商用 ...

  8. 腾讯云数据库TDSQL——极速体验tdsql私有云

    目录 认识TDSQL 整体架构 组件介绍 安装部署 规划环境 简单部署 准备tdsql包 免密配置 准备数据目录 修改tdsql_hosts文件 修改group_vars配置(ansible变量) 安 ...

  9. 腾讯云数据库三大产品线统一升级为TDSQL,这是要集中力量干大事

    责编 | 张红月 出品 | CSDN(ID:CSDNnews) 近日,腾讯云宣布了其数据库品牌 TDSQL 的全新战略升级计划及未来发展战略.至此,这家进入数据库赛道十多年的互联网大厂,在数据库发展的 ...

最新文章

  1. go swagger
  2. Socket 同步/异步 与阻塞/非阻塞区别
  3. 磁力链接的BASE32编码向HEX编码的转换
  4. Handbook of Constraints Programming——Chapter 22 Constraint-Based Scheduling and Planning
  5. 算法 --- 归并排序的js实现
  6. 微软建议的ASP性能优化28条守则
  7. ip地址异常判定python_python检测异常ip,并查询ip详细信息
  8. 【Java基础篇】Unicode、进制转换
  9. 分布式架构在农业银行的应用实践与展望
  10. CS224N刷题——Assignment3.2_Recurrent neural nets for NER
  11. HDU - 5950 Recursive sequence(矩阵快速幂)
  12. python 数据呈现_新手小白初学Python数据可视化 清晰呈现数据变化
  13. java转码工具_java转码工具native2ascii
  14. Burst(突发)信号详解
  15. Renew 、Revive 、Renovate、Update、Refresh区别
  16. Survey on Human pose estimation
  17. 人工智能专业术语:物体识别、卷积神经网络、YOLO分别都是什么?
  18. 计算机视觉论文-2021-06-04
  19. 大于2TB的卷的知识.主要关于windows, EFI,GPT
  20. 世界50所知名大学开放课程列表及对应网站

热门文章

  1. 图文并茂详解服务器密码忘记了怎么办?
  2. 病态!------沉沦的病态
  3. 变频空调和定频空调的区别
  4. 降噪蓝牙耳机怎么选?实用性好的四款降噪蓝牙耳机推荐
  5. 阅读笔记 |《科学史和科学哲学导论》舒斯特
  6. 【数据库MySQL】数据库网上书店管理系统
  7. matlab之直方图的绘制
  8. 河北省 建筑标准规范 合集
  9. MySQL学习笔记(四)
  10. 在Ubuntu中运行.exe程序