从单体式向分布式演进 金山云布局全系数据库产品
“从单体式向分布式转变,整个数据库架构发展大致分为三种形态,金山云布局了全系的数据库产品”余邵在表示。
第一种是单体式数据库,以主、备架构为主,如MySQL、PostgreSQL,优势是成熟度和稳定性较高,其劣势在于性能和容量受限单机,在业务发展较快速的情况下,难以满足业务发展的需求。
第二种是共享式数据库,类似于PolarDB、Aurora,优点是兼容性高、分钟级扩展,缺点也显而易见,比如对硬件要求较高、成本高,由于单点写入,性能只能到十万级,当分布式存储出现故障时影响面较大,比较适用于公有云的客户需求。
第三种是分布式数据库,目前比较主流的数据库,主要包含分布式SQL引擎和分布式存储。其中,分布式SQL引擎在设计上各个厂商实现的功能基本类似。分布式存储主要包括基于B+ Tree的关系型存储和基于LSM Tree的KV存储。对比前两种架构,分布式数据库在计算能力或存储能力可以很好地实现水平扩展,不足之处在于兼容部分SQL语法和功能方面,不过仍然存在很大的提升空间。
“金山云在这三种架构类型的数据库上都做了布局,包括单体式的RDS、共享式的KingDB以及分布式的DragonBase。”余邵在表示。
金山云布局全系数据库产品,在资源层面,金山云公有云上提供了轻量级LXC和KVM,基于K8S的容器化正在研发中;存储可以提供本地磁盘、云磁盘、对象存储等;在引擎类层面,分为关系型产品MySQL、PgSQL、KingDB等,NoSQL包括Redis、MongoDB、InfluxDB等数据库产品;在服务层面,提供数据传输DTS、分布式事务DTX、安全审计DBAudit、数据管理DMS以及数据备份DBS等服务。
“客户想用你的数据库产品,数据迁移不可避免,DTS就是解决数据迁移的服务类产品。有些传统行业使用Oracle等商业数据库的,我们也需要提供异构数据迁移的能力。一些传统行业做集中式核心系统,往分布式架构去转型,会涉及到服务的拆分,对于跨服务的分布式事务,就需要用到像DTX这样的分布式事务的中间件服务。”余邵在表示,此外审计、管理、备份等重要的增值服务,我们也提供了不同的产品解决方案。
其实早在2016年金山云就已经发布了DragonBase单体版本,2017-2018年深度优化单体版本稳定性和性能,2019年发布DragonBase分布式1.0版本,2020年发布升级版本2.0支持分布式事务、分布式计算、高可用、弹性扩展、安全审计、数据强一致、灾备恢复、云管平台和数据迁移等诸多核心能力,正在研发的DragonBase3.0版本将在Oracle兼容、分布式计算引擎和自动化运维等方面进行迭代。目前,DragonBase已在金融、互联网、政企等多领域实践应用,提供稳定、高性能、安全可靠的数据库服务。
余邵在讲到,DragonBase总体架构主要由数据库云平台和内核组成。其中,云平台可以提供数据库的资源调度、故障切换、监控运维、数据校验等能力,并采用容器来部署数据库内核,实现多租户、资源隔离和弹性扩展等功能;数据库内核支持单体式和分布式两种部署形态,采用Share-Nothing架构,能够实现性能和容量的水平扩展,支持Hash、Range、List等分片方式。目前,DragonBase除了能支持X86平台,像主流的ARM平台等也能实现很好地支持。
六大特性 DragonBase不断提升的核心能力
“强一致、高可用、易扩展、高可靠、高性能、安全性,六大特性成为金山云DragonBase数据库正在打造和一直不断提升的核心能力。”余邵在表示。
在一致性方面,DragonBase的分布式事务,通过优化读写强一致,性能可以提升30%以上。一是事务处理优化,引入一阶段本地事务+异步管理,能够提高事务吞吐;二是全局中心时钟优化,实现分布式事务的分布式一致性读,通过使用Batch和Pipeline技术实现更小的SQL时延损耗,实现RC隔离级别。
在高可用性方面,提供主动+被动探活,协议层和应用层探活,支持熔断机制,不可用节点个数超过设定阈值会停止切换,通过人工介入进行确认,避免高可用服务自身的异常导致大规模切换,影响服务可用性,同时支持“两地三中心”和“三地五中心”的跨地域高可用部署,提供实例级、机房级、地域级的服务高可用保障,可以确保RTO<30秒。
在易扩展方面,DragonBase能够支持计算节点和存储节点的横向(scale-out)和纵向(scale-up)的扩展能力。Scale-out计算节点具有实现集群的吞吐和性能的水平扩展的能力,Scale-out存储节点支持基于分库分表、按子表自动迁移,并支持按容量按访问热度进行迁移。Scale-up可以实现节点的升配和读写分离能力,能够支持多种读写分离和负载均衡策略,来满足不同业务的需求。
在高可靠性方面,考虑到不同业务对数据一致性的要求不同,DragonBase支持异步、半同步、强同步三种数据同步模式,业务可按需调配。DragonBase的DTS可以支持数据迁移和跨地域数据同步,能够做到表级别同步,甚至是行级别的,延迟能够在秒级甚至毫秒级。除了在线数据的可靠性以外,DragonBase还做了离线数据可靠性验证。
在高性能方面,DragonBase通过深度优化数据库内核引擎,包括线程池、异步事务提交和异步死锁检测等多种优化技术。“在高并发的情况下,DragonBase单节点性能比社区版本高40%以上,同时可以实现水平扩展”余邵在表示。
不仅如此,在实际运维的过程中,DragonBase的智能管控平台提供多维度服务。同时,DragonBase具有完备的管理功能,支持实例创建升级、备份恢复、弹性扩展、数据迁移等,并提供OPENAPI等接口,供应用端进行创建、删除、升级实例等基本操作。
在互金行业的灾备方案中,DragonBase支持两地三中心,能够实现同城双活、异地灾备和单元化,保证每个AZ里面的应用和数据都是完整的。“在数据层面,我们通过多副本的同步机制,保证数据是一致的。从而保证同地域的RPO趋于0。跨地域则使用DTS异步复制,通过并行复制和灵活任务调度等优化手段,使得RPO可以达到秒级。”余邵在表示。
从单体式到共享架构再到主流的分布式数据库,金山云正在不断完善并一步步打造更高阶性能的数据库产品,为更多的企业提供更优异的数据计算和存储服务。