共享集群数据库管理系统是一种单库多实例的多活数据库管理系统,用户连接任意实例都可以访问同一个数据库,具备透明多写、高可用、高性能等特性。共享集群技术因其开发难度高,一直被国外垄断,也被称为数据库领域的“塔尖”技术。
2023年,YashanDB正式发布共享集群产品形态,实现了国产数据库在高端领域“零”的突破。本次共享集群系列文章将围绕YashanDB共享集群,深入探讨架构原理、关键技术以及运维管理等核心内容。作为该系列的首篇,本文将全面而系统地介绍共享集群的架构,为用户提供一个全面的理解框架,为后续的学习和实践打下坚实基础。
国内近十几年分布式数据库是个热点领域,但从今年北京的DTC会上来看,各大数据库厂商对其共享集群数据库都做了一定的介绍,共享集群这两年逐步又成为了热点话题,研发共享集群的厂商很多,类别也很多——云上共享集群、主备共享集群、多写共享集群,看上去RAC技术并不像十几年前所认知的是已经过时的技术。
这两年各大厂商又纷纷在共享集群上发力,可能主要有三方面原因:
一是潜在客户群体的需求。RAC仍然是集中式数据库下的典型架构,在一般企业的OLTP关键业务场景下具备明显的优势。RAC提供了强一致的应用透明多写能力,用户可以像使用单机数据库使用集群;同时提供了集群高可用能力,只要有存活节点集群仍可提供正常的服务。
二是数据库厂商技术积累的结果。国内数据库技术发展有三十余年,各大数据库产商在数据库内核领域、集群领域都有了一定的突破和积累,具备了做RAC架构的基础。
三是新型硬件环境要求。国内金融、政企、电信等领域近几年都在做基于新硬件的数据库系统升级,对共享集群有一定的诉求,目前国内可以做到平替的数据库产品有限。
尽管如此,国内发布共享集群产品的数据库厂商仍然是少数,主要原因还是共享集群架构的复杂性,以及内核架构的适应性。
YashanDB之所以在其自研内核基础上可以快速推出共享集群也与此有关系,主要有两方面原因:
一方面,YashanDB采用了自研内核引擎技术路线,在数据库内核架构初期在事务引擎设计、MVCC、表索引存储等各个方面为未来的共享集群产品形态打好了良好的基础,YashanDB内核架构是天然适合演进共享集群的。
另一方面,YashanDB通过自研的聚合内存技术、集群文件系统、集群管理服务共同构建共享集群的架构体系。
YashanDB共享集群形态(YashanDB for Cluster),是基于共享存储的多活集群,提供计算/存储扩展和金融级高可用能力。通过自研Cohesive memory(聚合内存)核心技术,协同集群数据库各实例之间数据类资源的读写访问以及各种非数据类资源的并发控制。

YashanDB共享集群具备三大特点:
聚合内存是共享集群架构的基础能力,YashanDB通过对数据缓存、数据字典缓存、锁等各类内存资源进行全局资源抽象,采用全局一致性哈希算法在多个实例间均衡管理全局资源,任一资源元数据在集群内具备唯一性。每个数据库实例管理一部分全局资源的元数据信息。

聚合内存通过以下关键组件完成全局资源的协同与访问:

以数据块融合为例,聚合内存技术定义了三种关键的角色:
一次典型的数据块访问,需要三个角色配合完成,请求结束后请求者变成新的拥有者。
实际运行期,单次数据块请求涉及三种逻辑角色可能运行在最多三台不同的物理主机上,通过最多不超过四次网络消息完成。
崖山集群服务(YCS,Yashan Cluster Service)是YashanDB自研的集群管理软件,提供节点管理、资源管理、资源监控和集群高可用仲裁等能力,为YashanDB共享集群的稳定运行保驾护航。

崖山文件系统(YFS,Yashan File System)是YashanDB自研的用户态存储服务组件,提供了文件系统和磁盘组管理能力。

其重点包括了两部分:文件管理和卷管理。其有三大特点:
高性能
兼容性
高可用性
前面也提到了YashanDB内核是天然适合共享集群的,在最初的内核架构设计选型时,在MVCC技术、快照技术以及事务引擎架构充分考虑了未来的共享集群形态。
YashanDB综合考虑了三种MVCC方案:Append-only行级MVCC、原地更新行级MVCC、原地更新块级MVCC。结合每种MVCC方案的优劣,YashanDB采用了原地更新的块级MVCC技术。

Append-only行级MVCC:其特点是历史数据版本和当前数据版本在数据块内混合存储。看上去管理简单,实际上带来问题却不少:
原地更新行级MVCC:其和Append-only的区别是将历史版本挪到了独立的Undo表空间进行管理,可以有效的解决空间膨胀问题。但这套方案同样存在问题:
YashanDB采用了原地更新块级MVCC,在数据块中设计了物理的事务槽位SLOT,一致性读以数据块为单位进行,其优点有:
另外一个关键核心的技术选型就是快照技术方案。YashanDB技术选型对比了两种快照方案,一种是基于活跃事务的快照技术,另外一种是基于时间戳的快照技术。

基于活跃事务的快照技术的特点是:
YashanDB采用的是基于时间戳的轻量级快照技术,其特点如下:
事务引擎的设计决定了多个实例是不是可以做到真正的对等,是不是可以做真正的线性扩展。
对于共享集群架构下,数据是完全共享的,此时多实例之间必然存在事务的交互。而这种架构下的事务一般有两种方案,一个是中心化事务设计思想,另外一种是去中心化事务设计。

中心化事务设计的特点是,其需要存在一个集中的事务控制节点,甚至集中的锁控制节点。
YashanDB采用的是去中心化的事务设计,其特点如下:
如上文介绍,共享集群研发的难度在于它的存储组织以及各实例间的复杂交互,这会涉及到核心交易系统数据存储、事务处理等核心底层机制。如果在开源技术的基础上去开发,受限于其架构和技术路线,往往很难实现共享集群这一形态。
YashanDB对存储等底层机制和核心技术完全掌控,通过这些核心方案的架构选型以及能力构建,能够快速构建共享集群架构并进行产品化落地,为用户提供对等透明多写能力,应用连续性以及高可用能力,提供在高端核心场景对国际主流数据库系统1:1平替的能力。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。