CynosDB是腾讯云自研的新一代高性能高可用的企业级分布式云数据库。融合了传统数据库、云计算与新硬件的优势,100%兼容开源数据库,百万级QPS的高吞吐,不限存储,价格仅为商用数据库的1/10。
Cynos源于拉丁语中的Cynosura,古希腊神话中北极星的名字,意为焦点,引人注目的人或物。
CynosDB系列之PostgreSQL:
由腾讯云和TEG数据平台部联合,基于最先进的开源数据库PostgreSQL10 倾力打造的新一代企业级分布式云数据库,重新定义了云上分布式数据库的架构:
计算层:
SQL Engine(master/slave):基于PostgreSQL 10.0版本,适配分布式对象存储接口,同时master负责同步增量日志到slave,以更新cache中的内容
Distributed Object Storage:分布式对象存储接口,屏蔽底层块存储接口的细节,负责对象的生命周期管理、数据块分配管理等工作
Distributed Block Storage:分布式块存储接口,负责将多个Storage Node上的Segment Group抽象为Logic Segment
存储层:
Segment :数据管理的最小单元,默认为10G,包含数据和增量日志
Segment Group :多个Segment通过一致性协议Raft组成一个Group,负责数据的备份和HA
Storage Node:管理多个Segment的服务,通常就是一个服务进程,负责网络通信、线程池调度等工作
Cold Backup Storage:基于增量日志的备份存储
调度层:
SQL Instance Manager:负责SQL Engine的HA
Storage Cluster Manager:负责存储层的HA,包括:故障转移、自动扩缩容、负载均衡等
计算与存储分离:
CynosDB for PostgreSQL的架构中,我们将计算与存储分离,同时实现了计算节点的无状态。这样做的好处是可以将计算节点与存储节点的故障隔离,同时以秒级的速度调度计算资源。当计算节点失效时,可以快速恢复而不需要恢复存储节点。当存储节点失效时,计算节点也可以以秒级重连新的主存储节点,使得对业务的影响降到最低。
海量智能存储:
由数据平台部经过十几年的业务沉淀和技术积累打造的新一代海量分布式智能存储,对计算和存储的资源池化提升了资源的利用率,降低了使用成本,也使得存储突破了单机的空间限制。不仅如此,CynosDB for PostgreSQL 的实现了智能存储:无最大存储量限制,按使用量计费,自动扩缩容,轻松应对突发的业务变化;自动负载均衡,利用数据存储的多副本,通过主副本切换自动从热点存储设备到空闲存储设备以转移IO压力;自动数据纠错,通过内置的校验发现存储数据的跳变,并利用其他副本数据实现页级的自动恢复。通过对数据持续的保护,充分保障业务的稳定和数据的持久性,可靠性达99.9999999%。
减少网络IO:
云数据库的分布式架构带来扩展性的同时也增加了网络开销。为了最大限度的减少网络IO,CynosDB for PostgreSQL 采用了“日志即数据库”的方案,计算层不再需要将脏页发送到存储层,而只需发送增量日志,由存储层异步的将日志转换为数据页。同时,存储层数据的多副本直接通过Raft技术来复制数据,这样计算节点只需一次I/O请求到存储层的Leader节点上即可完成写日志操作。在TPC-C基准测试中,与PostgreSQL 10.0相比,写流量减少了60%。
减少系统调用:
CynosDB for PostgreSQL 采用自研的用户态分布式对象存储系统,通过基于SPDK和RDMA的零拷贝技术,减少了操作系统上下文切换以及数据在用户态和内核态之间拷贝引起的性能损耗,进一步优化了关键路径的系统性能,降低请求延迟。
对于单块的SSD Disk,相比传统的Direct IO方式, 采用SPDK的直接数据传输无论在顺序读还是随机读模式都有超过一倍的性能提升,对比depth为1时的写性能,无论是随机写还是顺序写都有30%的性能提升。
此外,在RDMA与TCP的对比测试中,可以明显的看到4K数据的传输平均延迟缩短到6~7us,在4K数据的echo测试中,CPU使用率降低了65%。
PostgreSQL内核优化:
CynosDB for PostgreSQL在完全兼容社区版PostgreSQL10的基础上也对内核进行了深度的优化:PostgreSQL数据页写入是以Page页面为单位,社区版为了解决在写磁盘的时候“刷新数据页面时掉电,而导致磁盘上存在半页”的问题,引入了Full Page Writes,在CynosDB for PostgreSQL系统中,我们移除了这个机制。此外,社区版PostgreSQL除了刷新日志外,还需要将数据脏页刷新到存储系统中,CynosDB for PostgreSQL仅仅将日志写入到存储系统,无须刷新脏数据页,进一步减少了系统IO。
云数据库的设计理念:
Oracle 现任CEO Mark Hurd在回答Forbes的采访中提到了“节约成本和敏捷创新已成为企业上云的核心驱动力”,这也是贯穿于云原生数据库CynosDB的核心设计理念:全面兼容新版的开源数据库 “Comprehensive”,极致的内核级优化与新硬件技术相结合“Cohesive”,实现全托管智能运维“Creative”,无服务器架构的按需按量计费“Cost Effective”。让用户专注于业务端应用的研发,为用户提供灵活的、敏捷的、可持续的,兼具新特性、高性能和低成本的新一代云原生数据库服务。
综上所述:
云数据库CynosDBL是腾讯云继续提升、丰富,开放云计算能力的重要里程碑,也推动了社区生态的进一步完善。在后面的工作中,我们将结合用户需求不断完善产品功能,提供企业级特性,将更多的云计算普惠带给世界。
CynosDB近期会开放公测申请,采用邀测制,进一步的消息,敬请关注腾讯云官网(https://cloud.tencent.com/act/event/cynosdb.html )
更多前沿数据库技术和案例分享,请关注我们的微信号:腾讯云数据库CDB