YashanDB 共享集群 V23.3 新特性解读
本文基于 YashanDB 集群首席架构师-孟凡彬 2024 年 11 月在“2024 年国产数据库创新生态大会”-“根”技术专场的演讲整理形成,主要对 YashanDB 共享集群近一年发布的新特性进行原理探讨与技术解析。
2023 年 11 月,YashanDB 首次推出采用单库多实例架构的多活共享集群形态(YashanDB for Cluster,YAC),并在今年 3 月,崖山共享集群也发布了首个长期维护的商用集群版本。这一年,YashanDB 持续在可用性、性能/扩展性、内核稳定性以及易用性等多个维度增强产品能力,为用户市场打造一款高性能、高扩展、高可用的集群数据库产品。
图 1 YashanDB 共享集群架构图
全新推出主备集群方案,更全面的容灾解决方案
共享集群本身提供了多维度的高可用能力,如计算节点的高可用能力、共享存储的存储高可用能力等。更进一步,YashanDB 推出了主备集群方案,通过在共享集群上集成主备特性,为用户提供全面的高可用和容灾解决方案。
图 2 YashanDB 共享集群主备集群部署架构图
主备集群方案下,主、备集群是独立的两套集群,每个集群具备独立的集群管理软件、集群文件系统等组件,集群与集群之间通过集群日志复制方式进行同步。通常而言,主备集群部署在同城的两个数据中心,为了进一步增强容灾能力,可以选择在异地部署一套容灾集群。
为了进一步降低使用集群成本,YashanDB 支持主备集群非对等部署方式。目前 YashanDB 最大支持一主 32 备的部署方式,支持最大性能、最大可用、最大保护三种保护模式,支持备集群故障倒换和主备集群平滑切换。
YashanDB 主备集群方案在最新发布的企业版 V23 LTS 版本中就可以使用,并且会在接下来的版本中持续增强备集群的能力,例如备集群的只读、备份、多实例并行回放等能力。
统一集群存储架构,集群级存储高可用能力增强
新版本中对共享集群存储层面进行了增强:一是崖山集群文件系统(YFS)采用全新的磁盘发现技术,可以对存储设备进行高效的管理以及使用;二是新版本对共享存储管理进行了重新定义,分为系统 DG 和数据 DG,将崖山集群服务(YCS)使用的 vote 文件、YCR 文件统一纳入系统 DG 中管理,数据 DG 中管理集群数据库相关的数据文件、redo 文件等。如此能通过统一的集群存储架构,提供集群级存储高可用能力,如校验、冗余、IO 均衡等。
此外,通过存储多副本技术增强高可用能力:一是通过数据盘多副本冗余,可以为用户提供灵活的多重存储可靠性保障,任意存储数据损坏可以做到自动检测、自动修复;二是通过系统盘多副本冗余,YCS 可以快速进行集群脑裂仲裁。
图 3 YashanDB 共享集群存储架构图
更快速的在线即时恢复技术,RTO 减少 30%
对于共享集群而言,节点故障在线恢复的时间至关重要。特别是在业务繁忙期间,节点在线发生故障时,通常会累积大量的 redo 日志,这导致在线恢复过程需要更长的时间。
在新版本中,我们采用了更快速的在线即时恢复技术,基于 YashanDB 共享集群多节点多活的特点,当某个节点发生故障时,可以通过其他存活节点的在线实时日志分析,进行快速的恢复集构造,在线故障恢复的 RTO 时间减少 30%。
图 4 在线故障即使恢复示意图
智能全局缓存刷盘技术,根据应用场景智能选择
全局缓存管理方面,基于应用透明以及应用划分两种典型的集群使用场景,全局缓存呈现不同的特征。
应用透明场景下,各实例缓存中的数据大部分呈现全局性的特点,当产生交叉修改时,会产生历史的脏数据版本,这里叫 PastCopy(简称 PC),对应的 PC 持有者叫做 PC Owner。缓存中维护 PC 有两个作用:一个是用来做在线恢复的加速,节点在线故障不需要从磁盘中的老版本开始,只需要从内存中最新的 PC 版本恢复即可。另外一个作用是各实例下全局恢复点的推进,当各实例中存在大量全局脏页时,需要进行全局脏页刷盘的控制,避免出现页面版本错乱。
应用划分场景下,各实例缓存中的数据大部分呈现本地化的特点,多实例间的交叉修改、访问较少,此时修改产生脏页大部分是本地脏页。
在上一个版本中,统一采用 Owner 刷盘机制进行全局缓存刷盘控制,新版本中采用智能化全局缓存刷盘策略,根据应用场景自动采用不同的策略进行刷盘。
图 5 全局智能刷盘场景示意图
情形一:如果大部分为本地脏页,Owner 可以直接本地刷盘,不产生任何全局交互。
情形二:全局脏页场景下,Owner 节点进行刷盘,需要通过资源主节点进行刷盘控制,并在 Owner 刷盘后丢弃历史的 PC 版本,这些历史版本已经不再需要。
情形三:全局脏页场景下,PC Owner 会优先请求 Owner 进行刷盘,保证每次刷盘收益最大化。
情形四:当 Owner 所在 IO 实例繁忙,PC Owner 在缓冲区淘汰、本地 checkpoint 等一些特定的场景下需要进行快速刷盘时,采用就近 PC Owner 刷盘策略。
通过智能全局缓存刷盘技术,可以做到缓冲区的快速淘汰,大大提升 checkpoint 性能,同时提升全局脏页在各个实例间的传输效率,并且避免了特定场景集中到 Owner 节点刷盘,均衡多实例的 IO 负载。
发布 4 节点共享集群,性能高达 520 万 tpmC
YashanDB 今年发布了 4 节点共享集群,并且 4 节点的性能达到了 520W,线性扩展比 0.7。
国内这几年做共享集群的很多,为什么 YashanDB 可以做到性能的线性扩展?
//崖山自研对等集群内核架构
最核心的是崖山采用了对等集群内核架构。
图 6 对等集群内核架构图
一是去中心化事务引擎,所有实例完全对等。每个实例具备独立的事务引擎、缓冲区管理、锁管理等,所有实例完全对等,不存在中心化节点,而那些采用中心化设计的会存在一个显而易见的问题就是随着节点规模的增加,主控制节点的负载会越来越重。
二是基于时间戳的轻量级全局快照技术。同样是实现高性能集群的基石,通过事务提交批量异步 broadcast SCN,消息交互 lamport LSN,避免了大并发下的全局快照锁问题,同时保证各实例实时的事务一致性和正确性。
三是采用页内锁技术,锁随着页面的转移而转移,不需要全局事务锁来做事务并发控制。
这几点是很多开源数据库以及基于开源数据库体系的生态所不具备的。
//崖山自研聚合内存技术,支持多节点扩展
崖山的全局内存融合技术设计同样考虑了多节点下的扩展性。
一是采用 Request、Master、Owner 的消息交互模型,每次消息交互最多三个节点参与,不受节点规模增加影响。
二是采用自适应多节点一致性读策略转换。举个例子一个实例会低概率访问另外一个实例的数据,常规情况下是获取持有实例的一致性读页面副本而不会真正申请并持有资源,但当短时间出现大量访问时可以自动转换为请求页面资源,后续直接访问本地缓存,不需要进行跨节点访问,进而提升访问性能。
//崖山针对国产平台优化集群性能
YashanDB 针对国产平台进行了优化。在数据库层面,针对热点变量、锁进行优化,减少跨 NUMA 下的冲突访问;内核层面,进行进程/线程、网卡队列绑核,充分利用 CPU 资源。
内核能力持续增强,更可靠、更易用、易运维
除了性能外,YashanDB 在可靠性、易用性、易运维等多个方面进行了增强,提升用户使用体验,降低运维成本。
可靠性方面,各组件多维度优化。全方位优化 ICS,包括消息重试、保序、去重,提升在各类网络环境下的稳定性;YFS 新支持快速恢复区,存储故障可以通过恢复区进行快速恢复;新增 YCS 守护进程 YCS monitor,增强集群管理软件自身的可靠性。
易用性方面,提升集群的使用体验。新增自适应参数调优,对私网消息内存管理,集群后台服务线程调度等集群相关的参数做了优化,基于业务负载、系统可用资源自动调优相关参数,新版本中不需要用户手动配置,降低用户使用集群的成本;YFS 新支持在线磁盘管理,可以在线添加、删除修改磁盘,方便进行存储管理。
易运维方面,提供精细化运维手段。一是 GV 视图增强,所有 V 视图对应的 GV 视图已全部支持,同时 GV 视图支持各种复杂的关联查询;二是提供了全局资源历史变化的追踪,以及全局资源信息的导出,方便进行集群的运维和分析。
总结与展望
总结来看,崖山共享集群全新的版本主要在高可用、高性能以及内核能力等维度做了全方位的增强,进一步提升了用户的使用体检。
崖山共享集群后续会重点考虑以下几个方向:
支持集群在线弹性伸缩。基于应用负载,计算节点秒级弹性扩缩,降低用户的运营成本,并且支持共享存储在线升级、在线扩容、IO 负载均衡等。崖山预计在 25 年版本推出集群在线弹性伸缩。
支持集群多机执行。面向服务亲和的场景,提供对象级亲和全局缓存服务,降低全局资源跨节点的访问代价。同时基于一定的集群数据分布特点,推出集群多机执行能力,让计算在数据亲和的节点节点进行,提升计算效率。
优化集群云化与多租场景的性能。云化与多组场景下,主要解决高延迟、低带宽下的读写优化以及集群在线节点故障如何快速恢复,集群面向多租的资源管理以及负载均衡。
在一体机形态下进一步做软硬协同优化。主要有计算能力硬件下推,就近数据端借用硬件技术加速。基于存储的容灾、快照、压缩、加密等技术。
YashanDB 企业版、个人版及相应配套工具的最新版本均已在官网开放下载,没有任何限制跟门槛,欢迎所有的用户、开发者下载体验。
版权声明: 本文为 InfoQ 作者【YashanDB】的原创文章。
原文链接:【http://xie.infoq.cn/article/948f5daf3a77d4da004a34dd3】。文章转载请联系作者。
评论