不止于替换 HBase:宝付支付借力 OceanBase,构建面向未来的“TP+AP+KV+AI”统一数据基座
作者:杨泽,宝付支付数据团队负责人 随着#数字化转型 升级进入关键期,数据库已从被动的存储仓库,转变为主动赋能业务的智能数据中枢。以现代金融行业为例,业务对数据库提出了更高要求:既要满足事务,又要实时分析,同时安全、高效、弹性、智能地处理多模数据,并支撑实时决策与业务创新。这意味着,符合要求的数据库需在TP、AP、KV、AI方向均具备出色的数据处理能力。 作为在银行、消费金融、零售、跨境等行业深耕多年的一站式综合支付解决方案商,宝付支付产品种类丰富,且深谙技术创新与业务稳健的关系,不断引进先进技术维护和保障公司业务稳步运行,全方位为商户资金安全和交易安全保驾护航。 近年来,宝付支付的原数据库方案已不能满足业务需求,故而寻求技术升级。本文分享宝付支付在KV场景使用OBKV替换HBase的技术实践。 宝付支付所属集团——漫道集团采用基于MySQL的集中式架构,由于近年来业务高速增长(2023 年初交易量约 3000万笔/日,2024 年 12月 已突破 9000 万笔/日)带来的海量数据(TB级),系统压力陡增。 最直观的压力便是成本压力,每年存储采购预算高达数千万元。同时,为了保障部分业务系统的高可用性,需在 A/B 两个机房部署完全对等的 MySQL 双活架构集群(如各100 台服务器),导致硬件与运维成本成倍增长。 同时在双活架构下,业务层仅关注“订单不丢、实时写入”,但不关心数据最终落在哪个机房、哪个分库。这给数据团队带来巨大挑战:无法准确追踪数据源,难以构建统一的数据视图,ETL 与实时同步逻辑异常复杂。 在业务种类多样的情况下,长期使用MySQL还会导致架构越来越复杂,使运维压力极大。集团内部运行着十余套大数据集群和超过 1000 个 MySQL 实例,分别服务于支付、风控、征信、BI 等不同场景,对数据库有不同的需求。 多套异构系统并行,导致开发、监控、备份、扩容等运维工作极其繁重。 除MySQL外,我们使用 #HBase 存储海量日志与宽表,其虽具备高吞吐写入能力,但在事务支持、复杂查询、实时分析、KV 混合负载等方面存在明显短板,已无法满足新一代业务需求。 基于上述挑战,我们开始评估新一代分布式数据库方案。文章开头提到现代金融行业的业务对数据库提出了多种要求。宝付支付作为金融行业的一员也不例外,根据对TP、AP、KV、AI方向的需求,我们首先想到了 #OceanBase,核心原因在于其原生支持 HTAP(混合事务/分析处理) + KV + AI 的一体化架构。 为控制风险,我们采取“由边缘到核心”的渐进式改造路径:先在非关键系统验证 OceanBase 稳定性,逐步迁移风控、征信等中台系统;最终目标是将核心支付交易系统平滑切换至 OceanBase,用一套数据库承载全场景需求。 在启动 OceanBase 引入计划后,我们先在离线与分析业务进行试点,后将多个MySQL业务迁移至OceanBase。当OBKV功能较为完善时,又完成了从HBase到#OBKV-HBase的升级,实现了一套引擎支持多场景业务的目标。 尽管 HBase 在海量数据存储场景中曾发挥重要作用,但随着业务复杂度提升与实时性要求增强,其在架构、运维及成本等方面的问题日益凸显。主要体现在以下六个方面。 OBKV 是构建在 OceanBase 分布式存储引擎之上的NoSQL 产品系列,目前支持 OBKV-Table、OBKV-HBase、OBKV-Redis 三种产品形态,其原生继承了 OceanBase 的高性能、事务、分布式、多租户、高可靠的基础能力。此外,OceanBase 的工具体系(比如OCP、OMS、CDC等)也原生支持 OBKV,运维 OBKV 的各个产品形态和运维 OceanBase 的 SQL 集群完全一样。OBKV 可以帮助企业统一技术栈,在满足业务对多模 NoSQL 数据库诉求的同时,降低企业在数据库运维上的复杂度。 基于我们目前正在使用的OBKV- HBase,总结其与HBase 的使用区别如下。 OBKV-HBase 不仅解决了传统 HBase 在运维复杂、资源孤岛、工具缺失等方面的痛点,更通过与 OceanBase 深度融合,可以实现“一套引擎、多模服务、统一运维、资源共享”的现代化数据基础设施目标。 在数据库架构升级过程中,我们分三个阶段逐步引入 OceanBase,确保技术转型平稳可控。 2023 年底,团队开始接触 OceanBase 及其 OBKV-HBase 产品。当时 OBKV 文档尚不完善,关键功能缺失,尤其缺乏 bulkload(批量导入)能力,无法高效导入离线数据 ,初期判断暂不具备支撑核心业务的能力。因此,该阶段以技术调研为主,未投入生产使用。 2024 年,团队转向更匹配当前能力的场景,启动 OceanBase 在离线与分析业务的试点,将数据归档、BI 聚合宽表、AP 分析类业务迁移至 OceanBase。我们不仅验证了OceanBase在高吞吐写入、复杂查询、资源隔离等方面的稳定性与性能表现,还积累了集群部署、SQL 优化、运维监控等关键经验,为后续全面推广奠定基础。 随着 OceanBase 功能持续完善(特别是 OBKV-HBase 的成熟),团队启动规模化替换计划。 在从 HBase 到 OBKV-HBase 的数据迁移过程中,我们在实践中总结出五个关键步骤。 在正式启动从 HBase 到 OBKV-HBase 的数据迁移前,需在 OceanBase 端完成充分的环境与配置准备。 注意事项 在完成目标端环境准备后,我们分阶段实施历史数据迁移与增量数据同步,确保业务平滑切换至 OBKV-HBase。 为高效迁移海量历史数据(单表达数十 TB),我们同时使用了 DataX 与 OMS ,但需特别注意两者在数据格式上的关键差异: 为确保切换期间数据零丢失,我们采用 “OMS 增量同步 + 业务双写” 双保险机制: 由于 OBKV-HBase 属于 NoSQL 场景,OMS 在当前版本中尚未提供 KV 类型数据的全量一致性校验功能,我们结合业务实际,设计了一套多维度、可落地的数据校验方案,确保迁移后数据准确无误。 1. 行数校验:精确统计表行数。 HBase 端:使用 HBase 的 RowCounter 工具统计原表行数。 命令: OceanBase 端:使用 count 统计,获取行数并与 HBase 结果比对。 2. 三方数据对比:借助 Doris 实现内容级校验。 由于 OMS 暂时不支持进行 KV 场景下的全量校验,我们引入 Doris 作为临时比对中间层: 3. 对关键业务字段进行抽样对比。 在完成数据迁移与校验后,业务系统需通过标准接口访问 OBKV-HBase。我们发现 OBKV-HBase 不仅兼容 HBase 协议,还扩展了多项高级查询与操作能力,显著提升了开发效率与系统灵活性。 为确保 OBKV-HBase 能够满足高并发生产环境要求,我们使用真实业务压测 OBKV 性能,达到 42w QPS,延迟仅为 1ms 左右,超出预期。 压测方法: 我们部署 10 个 Pod 模拟业务客户端,分别通过 OCP 统一调度和通过 ODP 的方式进行多轮压测任务。如下分别是 OceanBase 数据库、OCP 模式、ODP 模式压测的数据记录。 OceanBase 数据库压测数据如下图所示 OCP 模式压测数据如下图所示 ODP 模式压测数据如下图所示 需要说明的是,前期通过 ODP 压测,性能不佳,QPS 不到 2k,具体原因分析见后续问题总结。经过优化,直连 OBServer 压测 OBKV,QPS 达到 42W,延迟 1ms 左右,完全满足业务需求。 直连 OBServer 的测试结果让我们对 OceanBase 的性能有了充分的信心,为后续业务的正式切换奠定了基础。 在 OBKV-HBase 的测试与上线过程中,我们积累了一系列关于监控集成、硬件配置、租户隔离及 CDC 同步等方面的实践经验,总结如下,供大家参考。 为避免重复建设监控平台,我们将 OBKV 相关指标接入公司统一的自研监控系统: 建议为 OBKV 创建独立租户,避免与 TP/AP 类 SQL 业务共享资源。 在使用 OMS 或 CDC 进行数据同步时,需特别注意 HBase 动态列模型与 CDC 日志格式的兼容性问题。HBase 表的列是动态的(不同 Row 可含不同列),而 OceanBase 的 clog(提交日志)在记录变更时有两种模式。 若源端写入为非全列,而目标端 CDC 期望全列日志,可能导致同步解析失败或数据不一致。 解决方法是启用 CDC 的脏数据跳过开关 在早期调研阶段,我们比较担忧 OBKV-HBase 是否支持基于 RowKey 前缀的高效查询。经过深入查阅文档与测试验证,确认 OBKV-HBase 完全兼容 HBase 1.2+ 的原生 API,其中包括关键的前缀检索功能。可通过 该接口会自动构造起始键(startRow)和终止键(stopRow),仅扫描匹配指定前缀的 RowKey 范围,避免全表扫描,显著提升查询效率。 在从 HBase 迁移至 OBKV-HBase 的过程中,我们在数据校验过程中也遇到了3个关键问题。 问题描述 使用 DataX 和 OMS 两种工具分别迁移同一张 HBase 表后,OBKV 中的数据行数均少于 HBase 源端,初步校验无法对齐。 原因分析 HBase 的数据模型特性导致 count 结果存在歧义。 在上述场景下,HBase 的 RowCounter 统计的是所有版本 + 所有可见记录,而 OBKV 默认仅保留最新版本(若未显式配置),导致数量差异。 解决办法 结果验证 通过调整迁移工具和校验方法,最终实现了 HBase 和 OBKV 数据的完全一致。 注意事项 问题描述 原因分析 根本原因是 scan.setCaching 参数配置不合理。 解决办法 将 scan.setCaching 参数的值设置为 100,控制每次 RPC 请求返回的最大行数。 问题描述 通过 ODP 压测 OBKV-HBase,发现性能瓶颈明显,QPS 不到 2k。 原因分析 根本原因是ODP 元数据缓存机制与数据库大小写敏感配置不匹配。 每次查询均触发完整的元数据解析流程(包括向 sys 租户查询表定义),无法命中本地缓存。高频元数据查询成为性能瓶颈,严重拖累整体吞吐能力。 优化方案 通过近两年对 OceanBase 及其 OBKV-HBase 能力的深入实践,宝付支付成功完成了从传统 HBase 架构向新一代分布式数据库平台的平滑演进,取得了显著的技术与业务成效。 不仅如此,对于集团架构而言,也具有重大意义和价值。 其一,完成数据库架构全面升级。从 HBase 到 OceanBase,从“多套异构数据库”走向“一库多模、统一平台”,我们实现了数据库架构的全面升级,技术栈大幅收敛。 其二,夯实业务创新底座。高性能、高可用的数据服务为实时风控、智能 BI 等新场景的业务创新提供了更强大的数据支撑能力。 其三,奠定智能数据架构基础。为未来 AI 原生计算、HTAP 融合分析、跨地域多活等演进方向预留充分扩展空间。 其四,沉淀宝贵实践经验。形成涵盖迁移方案、数据校验、性能调优、故障排查的完整方法论,可复用于后续系统改造。 本次 OBKV-HBase 成功落地,离不开 OceanBase 团队在过去两年中提供的专业、及时、深度的技术支持,特别是老纪及其研发、技术支持团队。无论是早期功能定制、性能瓶颈攻关,还是生产上线保障,OceanBase 团队始终与我们并肩作战,为项目顺利推进提供了坚实保障。在此,谨代表宝付支付技术团队,向 OceanBase 团队在迁移过程中提供的技术支持致以诚挚感谢! 另外,基于当前 OceanBase 在宝付支付的成功落地经验,我们已将 OceanBase 纳入集团未来数据架构的核心,聚焦 AI 项目赋能、汇聚库建设、多活架构尝试、零售支付场景四大业务方向大规模引入。 1. Al 项目赋能:实现一体化SQL+AI。 为响应公司对智能化转型的战略要求,我们将 AI 能力深度集成至数据库引擎层,推动从“被动查询”向“主动智能服务”升级。 2. 汇聚库建设:实现一体化TP+AP。 当前集团存在 1000+ MySQL 实例及多套异构数据系统,导致跨库分析、实时统计、经营报表等场景面临巨大挑战,OceanBase 的 HTAP 一体化架构为此提供了根本性解决方案。我们将逐步把核心业务库、汇聚库、宽表等迁移至 OceanBase 并扩大线上使用规模,使用一套集群同时承载 TP 写入与 AP 分析,构建统一的数据平台,简化数据链路,提升数据治理和数据服务能力。 3.多活架构尝试,实现系统稳定。 苦于MySQL双活架构带来的问题,我们将尝试业务多活要求,满足高可用业务需求。依托 OceanBase 原生分布式多副本与 Paxos 协议能力,构建轻量级、高可用、跨机房、跨地域的多活架构,提升系统容灾能力和业务连续性。 4.零售支付场景深化。 随着内部零售支付业务越来越多,我们将在其他零售支付业务场景推广使用 OceanBase。并持续优化 OceanBase 压测记录,完善性能基线。我们计划基于真实业务负载开展常态化压测,建立 QPS、延迟、资源消耗等关键指标的基准模型。 此外,探索更多 OceanBase 在支付行业的应用场景,充分发挥 OceanBase 的 HTAP 与多模能力。 数据库的升级不仅是技术的迭代,更是业务持续创新与稳健运行的基石。 欢迎关注,将为您持续更新与#数据库、#AI、#开发、#降本增效 相关的技术内容。出于架构痛点,寻求支持 TP+AP + KV + AI 的数据库
征信 用户画像业务:需要高性能 KV 存储与快速点查。
从边缘到核心:OBKV-HBase替换HBase
HBase 难以应对业务复杂度与实时性要求
使用OBKV替换HBase,为统一技术栈奠定基础
引入 OceanBase 的三个阶段,确保技术转型平稳可控
第一阶段:初步探索与能力评估(2023 年)
第二阶段:归档与分析场景试点(2024 年)
第三阶段:逐步替换与扩展(2025 年起)
五步平滑迁移:工具使用、方案设计与注意事项
Step1: 目标端准备
Step2: 数据迁移
历史数据迁移
增量数据同步

Step3: 数据校验
org.apache.hadoop.hbase.mapreduce.RowCounter 'table'。Step4:数据访问支持
查询操作(Select)
数据操作
Step5:业务压测




OBKV上线经验与问题总结:运维配置、数据校验
运维配置相关
1.监控配置
show proxyconfig like "%prometheus%"以及alter proxyconfig set xxx = xxx;2.硬件配置
3.租户配置
4.CDC 配置
skip_dirty_data=1,允许跳过全列校验,修改后重启实例生效:ALTER BINLOG INSTANCE y6op8d9rk1 SET EXTRA_OBCDC_CFG ='skip_dirty_data=1'。5.前缀检索用 setRowPrefixFilter
Scan.setRowPrefixFilter(byte[] prefix) 方法实现高效的前缀扫描(Prefix Scan),具体如下图所示。
数据校验问题
问题1:上下游数据条数校对问题

queryType=scan 的流式读取,确保仅同步当前可见、已提交的最新版本数据。

k = 'value'),需手动修正为大写,否则解析失败。
问题 2: 20002 错误码
scan.setCaching(100);设置后,第一次查询耗时降到了 300ms 左右,后续查询性能也得到显著提升。
问题 3:代理压测性能不佳
lower_case_table_names = 0)。alter proxyconfig set pc_enable_lower_case_table_names=True。

“一库多模、统一平台”,将大规模引入OceanBase







