代码编织梦想

随着信创进入深水期,国产数据库厂商即将面临一个巨大的考验:国产替代必须从外围系统走向高端市场核心系统。国产数据库能挑起“核心”的大梁吗?这也成为决定国产数据库未来格局的关键性问题。

最坚固的堡垒:核心系统“去O”

在业务规模发展和政策的双重影响下,金融行业已开始了国产化改造。从2019年开始,金融领域国产替代已经历了三期试点,主要覆盖终端机具、办公管理类系统、一般业务系统等非核心、边缘性系统,但涉及核心系统最难的Oracle数据库系统的替换还没有规模发生。

金融行业核心系统的主要功能是处理复杂业务的账务信息,由于涉及重要数据,银行核心系统对数据库的时延、数据一致性、安全性、高可用性等方面都有着极高要求。大多数金融企业以国外厂商提供的主机和数据库解决方案来进行系统构建。其中Oracle RAC(Oracle Real Application Clusters)共享集群技术长期以来是高端市场的“王牌”,是国产替代最难攻下的“堡垒”。

金融核心系统业务关系错综复杂,需要快速实现多套系统的平滑迁移。然而热门技术路线分布式架构对上层应用软件的架构设计要求较高,改造存量软件系统向分布式演进往往面临较大困难,例如表模型的设计、SQL语句的调优等,这种未知的风险是核心系统难以承受的。

是否有性能、功能、扩展性、可靠性维度完全对等Oracle RAC的国产替换方案?近些年,很多国内数据库厂商想挑战该技术,但由于技术难度大,实现共享集群技术的国内数据库厂商屈指可数。

共享集群:核心系统的“独门绝技”

共享集群为何成为Oracle全球数据库高端市场横行二十多年的“独门绝技”?作为Oracle数据库中的一项核心技术,Oracle RAC是多节点实例的数据库集群,被广泛应用在企业级核心交易数据库领域。

核心系统对业务连续性要求非常高,要求故障恢复所需时间短(RTO, Recovery Time Objective)、数据丢失量接近为零(RPO, Recovery Point Objective)。Oracle RAC的优势在于能保证RPO为0,容忍单点故障并实现客户端透明切换,具有极高的高可用能力;其次,共享集群可以实现应用透明的横向扩展,具有优异的性能表现,非常符合核心业务场景的诉求。

共享集群技术可被称之为数据库领域的“塔尖”技术,其开发难度可谓是难上加难。Oracle从90年代开始尝试开发Oracle并行服务器(OPS,Oracle Parallel Server,为 RAC 前身),Oracle 9i正式推出RAC形态,过程中投入大量的成本与时间进行底层代码的持续更新,历经多次迭代系统才逐步稳定。目前国产数据库大多基于MySQL、PostgreSQL等开源数据库二次改写,受限于存储结构,其架构向多活共享集群方向演进时非常困难。可见,共享集群技术架构需要耗费巨大的研发投入,也必须要有自研的内核能力。

国产数据库如何挑起“核心”系统替代的大梁?基于多年的技术积累与工程实践,全自研国产数据库系统YashanDB给出了自己的答案。

近日,深圳计算科学研究院推出了完全自主研发设计、对标Oracle RAC的YashanDB共享集群,YashanDB不满足于架构的微创新,而是将深算院的原创理论融入产品实践,基于自研内核,采用单数据库多实例架构,所有计算节点提供对等的多活计算能力,节点之间以强一致性方式实现并发读写,可为用户提供应用透明的高可用、高扩展、高性能数据库能力,是助力金融、运营商、政企等高端市场实现数据库国产替代的“杀手锏”。

在这里插入图片描述

YashanDB共享集群为何能挑起“核心”替代大梁?

作为国内极少数可以做出共享集群产品并将其推向市场的厂商,深圳计算科学研究院的崖山数据库系统研发团队基于在内核方面的持续创新与突破,攻克了共享集群的关键技术瓶颈。

在可用性方面,YashanDB 共享集群提供金融级高可用能力,RPO为0、RTO<10S;在扩展方面,支持动态扩缩容,提供 0.8以上线性扩展比;在性能方面,YashanDB 共享集群可以支撑更多的用户请求高效处理,具有更高的吞吐量,经实测,在同等硬件条件下,YashanDB 共享集群 TPC-C 基准测试(用于评测数据库的联机交易处理能力)表现比 Oracle RAC 高 30%。

快速恢复与连续性技术保证金融级高可用

核心系统对高可用的要求非常严苛,采用共享集群的客户一般都是看重其高可用能力,故障自动切换无需运维干预且RPO 为0。

传统的主备通常选择异步复制,故障切换时RPO 不为0,如果选择同步复制往往可用性大大降低,略微的网络抖动导致延迟会大大增加,此外无论选择哪种复制方式,单点故障后都会产生额外的运维工作。而分布式系统带来的应用架构以及运维的复杂化,需要有较强开发能力的团队才能驾驭。

共享集群具备天然的高可用优势,任何一个实例故障后都不影响应用的连续性,YashanDB使用了快速恢复和连接连续性技术保证服务端的透明接管和客户端的透明切换,这意味着当单节点发生故障时,YashanDB 既可以快速自动地将故障实例的数据恢复到存活实例,继续提供服务,又能实现业务查询不中断、不报错。

通过快速恢复技术实现在服务端接管时,集群中每个数据库实例都会指定一个辅助恢复实例接受其日志和脏页,在其故障时可极速接管该实例,针对故障实例脏页的操作请求的 RTO极大降低。

除了快速恢复以外,针对客户端的透明切换,YashanDB 使用连接连续性技术让业务无感知,客户端(application failover)集群中单数据库实例故障时,原有客户端连接可以自动切换到其他正常运行的实例,原有查询操作可继续进行,保证应用的高可用。

解锁共享集群关键技术 高性能多实例读写
共享集群技术为何是数据库技术的“塔尖”技术?最核心的难点在于实例间的交互,如何保证多个实例间数据的强一致性?如何协调数据之间发生的冲突?如何处理网络通信的各种异常情况?这对架构设计的挑战非常大,需要一整套协调机制来实现。

YashanDB共享集群中所有数据库实例共享缓存,本地访问页面时若未命中,可通过网络从其他实例拿到最新版本页面,实现数据交换,应用可以连接任意节点访问和使用数据库完整能力。为解决读写冲突,提高读写性能,YashanDB自研“七种武器”逐一破解难题:
∙页内锁技术,YashanDB在数据页面中同时包含数据和锁的信息,避免多次发送;
∙免锁读技术,通过Page级别的Consistent Read能力实现一致性读,可缓解实例间读写冲突;
∙去中心化的事务管理机制,避免事务管理中心化带来的性能瓶颈和扩展瓶颈;
∙基于时间戳的MVCC(Multi-version Concurrency Control,多版本并发控制)机制,以及实例间lamport消息方式实现时间戳同步,确保跨实例的数据交换不影响事务可见性;
∙实例亲和性的空间分配机制,实例间对同一张表并行导入数据时避免了空间争用;
∙基于负载缓存自动调度策略,提高集群整体缓存命中率;
∙脏页快传技术,脏页在实例间传递时,在遵从WAL(Write Ahead Logging,预写日志)协议前提下,减少磁盘IO等待,极大降低处理时延。

除此之外,为了提高数据库的性能,YashanDB自研集群文件系统,采用 In memory FAT(Allocation Table, 文件分区表) + Direct access 专利技术,该技术能实现文件系统元数据常驻内存,提供更高效的存储管理能力和效率。文件系统客户端程序通过直连共享内存访问 FAT 数据,确保 YashanDB 针对所有持久化文件(包括但不限于控制文件、数据文件以及redo文件)的 read/write 操作,不涉及等待磁盘 IO 或网络 IO,实现性能最优。

融入原创理论 突破性能极限
深圳计算科学研究院是深圳市政府批准建设的“十大基础研究机构”之一,区别于市场上的大多数企业,其全自研的基础软件系统产品拥有世界领先的基础理论作为支撑。针对数据库系统事务吞吐量随着计算核数的增加反而降低等难题,YashanDB 提出了自适应的异步并行任务调度机制,将传统的分区方法变革为新型的调度方法,测算多核线程之间的调度代价,评估算子代价或统计拟合代价,递进计算多任务、多事务的全过程执行时间,在确保 YashanDB 数据库系统事务处理通用性的情况下,大幅度降低了多核之间的事务冲突协调开销。相对于同步调度和异步调度,自适应异步并行调度分别提高了 14.7 倍和 4.8 倍。

标题结语

在数据库国产化替代的浪潮下,国内数据库市场呈现“百花齐放”的状态,多种数据库类型以及产品横空出世。数据库是一个多样化的市场,企业也会根据自己的业务场景和需求,来选择更加适合的数据库架构以及产品。

针对金融、运营商等行业对核心系统的关键诉求,YashanDB勇攀高峰,敢于挑战行业尖端技术,推出共享集群产品。相信,通过“原创理论+领先架构+工程能力”三位一体的工程研发体系,YashanDB 打造的技术先进、性能稳定、持续创新的产品内核,能实现以“根技术”筑牢行业自主创新发展的根基,推动金融、电信等行业核心系统国产化替换的规模化应用。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cod0410/article/details/130824709