郑州商品交易所(以下简称“郑商所”)成立于 1990 年,是国务院批准成立的第一家期货市场试点单位,全国五家期货交易所之一。2021 年,郑商所成交量 25.81 亿手,位居全球交易所第 7 位。
通过 OceanBase 原生分布式数据库承载多套业务系统,郑商所成为国内首家完成生产环境分布式数据库上线的期货交易所,并基于全栈技术可靠的软硬件基础设施逐步完成 IT 架构分布式升级。“郑州商品交易所基于 OceanBase 的分布式创新应用实践”项目凭借行业领先性、创新性荣获“2022 第十三届金融科技应用创新奖”。
一、确定分布式数据库的选型目标
数据库作为信息社会的重要基础软件,承载着关系国计民生的重要数据,数据库的安全稳定极其重要。但长久以来,重要行业的核心数据库一直使用传统的集中式数据库,给数据安全带来了诸多挑战。
传统的集中式数据库架构支持一般业务系统时,可以做到高效、稳定和可靠,对金融服务的发展起着重要支撑作用,但并不能较好适应数字经济时代金融业的高并发、大流量、高可用的特征。随业务系统数量的快速增长,传统集中式数据库已经无法满足郑商所的多项需求。
综合考虑统筹成本、效率、资源等因素,以业务适配性、稳定性、高可用性为原则,郑商所深入研究分布式数据库架构在期货行业应用中广泛推广的可行性。
分布式数据库架构的核心理念按照一定维度将系统进行拆分,通过开放的结构,实现各业务模块松耦合,降低对底层硬件的依赖程度。然而,从传统集中式数据库转型分布式数据库,对业务开发和数据库运维都是很大的挑战,同时借助分布式数据库转型的机会如何提高容灾等级也是一大考验。
▋ 开发方面
分布式数据库在兼容性方面需要尽量兼容传统数据库(Oracle/MySQL)。业务从 Oracle/MySQL 迁移至分布式数据库时,需要尽可能地减少业务SQL改造,降低业务开发的学习和分析成本。兼容性还包含数据库访问驱动接口的兼容(如 JDBC、OCI 等)。除兼容复杂 SQL 外,性能方面也不能有问题。分布式数据库要能证明自己在复杂业务场景和复杂 SQL 方面的性能。
▋ 业务方面
在迁移至分布式数据库时,存量数据也需要迁移,且迁移过程必须在线,而且还要保证迁移数据的正确性和时效性。郑商所的期货交易业务覆盖全球,业务允许的割接停机时间非常短,业务的服务需求需要保证 SLA,数据库的可用性也必须做到在业务的 SLA 范围以内。
▋ 运维方面
分布式数据库多是 Shared-Nothing 架构,部署在普通的商用服务器上。相比传统小机存储,会给运维带来两个难题:一是数据库服务器的数量会比较大,二是数据库服务器的可用性没有小机那么高(即服务器故障率相对高一些)。因此,运维管理分布式数据库的工作量可能会增加,并且分布式数据库的故障率可能会相对比较高。这就对分布式数据库的运维提出更高的要求——规模化、自动化;也给分布式数据库的稳定性提出更高的要求——高可用、不丢数据;同时,分布式数据库的扩容缩容操作要求能在线进行,并且尽可能自动化。
二、用更低的改造成本,享受分布式架构的技术红利
OceanBase 分布式数据库提供的高度兼容 Oracle 语法的租户和配套迁移工具,可以便捷地将之前运行在 Oracle 上的系统业务,下移至基于 OceanBase 分布式数据库的开放平台上,并且提供与 Oracle 接近的功能和性能。
由于历史原因,郑商所大量的核心业务,如结算系统,使用了 OCCI 和 OCI 的接口驱动。OceanBase 分布式数据库不仅兼容常用的 JDBC、ODBC 驱动接口,还支持 OCCI 和 OCI 的接口驱动。这样,郑商所的大量 Oracle 应用系统只需要进行数据库接口驱动的替换,就可以顺利连接上 OceanBase 分布式数据库,进行业务的功能、非功能适配和联调工作。
图1 Java 应用适配
图2 核心 OCCI 应用适配
在数月的业务适配验证过程中,郑商所验证了 WEB 服务类和 C++ 语言模式下,不同的高性能应用系统的数据库迁移路线。在业务代码基本不做改动的前提下,通过分布式数据库自身语法兼容性的能力,结合分区、多租户等特性,郑商所的业务系统能够以更低的改造成本得到分布式架构的技术红利,降低迁移成本、迁移风险的同时,为更多业务系统的快速迁移适配打好基础。
三、在线迁移割接,保障相关业务系统平稳运行
郑商所现有的存量业务运行在不同版本的 Oracle 上,从十几年前的 Oracle 10G 版本,到新一些的业务使用 Oracle 19c,并且使用了大量的 Procedure、Package、Trigger、DBLink、Function、Struct 等 Oracle 特色的对象和用法。
OceanBase 的 Oracle 兼容模式租户不仅提供了 Oracle 语法兼容能力,同时产品也提供了一站式数据库迁移解决方案,包括迁移可行性评估、迁移成本评估、迁移性能评估、结构对象迁移、数据迁移、数据校验和反向增量同步保护等完整的在线迁移割接能力。OMS(OceanBase Migration Service,OceanBase 数据迁移工具)的数据校验功能,为郑商所提供源数据库和目标库的全列数据一致性校验能力,保障数据迁移质量。同时,反向链路的数据同步为无损回滚能力提供保证,确保业务的连续性不受影响,如下图所示。
图3 一站式数据库迁移解决方案
在整个迁移过程中,OMS 支持在全量数据迁移过程中动态调整并发度,只会占用源端极少量的 CPU 和存储 I/O,对源端数据库和在线业务的影响极小,保证了在数据迁移过程中,期货交易系统的平稳运行。
郑商所在存量 Oracle 业务实时迁移同步过程中,总结出一整套适合期货行业业务系统的迁移最佳实践:
- 源端(Oracle)和目标端(OceanBase)的 NTP 时钟需要同步,同时源端开启archivelog和补偿日志;
- 迁移的表如果含有大字段(blob、clob等),需要单独创建同步链路,调整同步参数,每次同步 batch 数据行数不能太大,确保同步链路平稳顺畅;
- 在实时同步数据过程中,不能同步外键、触发器等对象约束,需要在业务停写、源端(Oracle)与目标端(OceanBase)数据比对一致后,再创建(或者激活)目标端(OceanBase)的外键、触发器、sequence 等对象约束,避免可能产生的两边数据库不一致的问题。
四、高效运维,降低数据库总拥有成本
目前,微服务应用架构已经深入到了包括期货在内的各个金融行业。但同时,微服务架构也给底层数据库带来了诸多挑战:资源碎片化、管理复杂、资源浪费、扩展性差等。OceanBase 提供原生且强大的数据库资源整合方案,通过在一套分布式架构中实现的资源池化能力,能够在显著降低资源和管理成本同时,依然保持优秀的性能和可运维性。
郑商所基于 OceanBase 的多租户架构,打造了属于自己的 DBaaS 平台,将多个不同业务的数据库实例集中整合,不仅提升资源利用率,同时基于 Paxos 的多副本机制可以保证每个资源单元的高可用能力。通过这种用法,郑商所将内部大量不同业务链路的资源池化,为不同业务系统提供不同规格的实例,保证资源隔离性的同时大幅降低数据库总拥有成本(TCO)。
图4 基于OceanBase多租户架构的DBaaS平台
郑商所使用 OceanBase 分布式数据库不仅作为传统集中式数据库的单一替代,将一个数据库存放不下的数据放至多个物理机存放,更是传统集中式数据库的升级,极大地提升数据库的可扩展性、可用性,以适应大数据时代的需求。
运维方面,郑商所有了 OceanBase 智能运维体系的全面保障护航,常见的 SQL 问题、诊断等可以自动实时分析,给出合理的应急优化建议。并且能够有效解决因宕机、网络抖动、大查询等造成影响生产连续性的问题,真正做到“先恢复,后排查分析”。
五、技术可靠,为期货交易保驾护航
郑商所在行业内率先在生产系统上线分布式数据库 OceanBase 集群,验证了 WEB 服务类和 C++ 语言模式下的高性能应用系统的数据库迁移路线,并且充分利用分布式数据库的技术特点,提升数据库的容灾备份能力,并简化了变更升级操作流程,真正享受微服务架构带来的便利,提升系统连续服务能力。
运维方面,郑商所落地了基于多租户能力的 DBaaS 体系,即在一套数据库集群内,秒级交付 Oracle 或 MySQL 租户,快速响应业务对数据库的使用需求,有效为管理流程提效。
架构方面,郑商所借助 OceanBase 构建“主机房三副本+灾备只读备副本”的高可用部署架构,能够消除机房内单点故障,容灾能力大幅提升;同时,集群级别的"主备库"能够满足交易所的机房切换演练要求。
采用分布式数据库 OceanBase 的多个业务系统的成功上线,标志着郑商所在推进信息科技技术可靠性方面迈上新的台阶。
结合此次项目经验积累,郑商所后期将依照各项业务发展特性,积极推进核心业务系统改造适配及试运行工作。未来,郑商所将会有更多的核心业务系统迁移至分布式数据库,有效提升信息科技技术可靠能力,为期货交易所数字化转型与业务发展保驾护航。