https://www.computer.org/csdl/proceedings-article/icde/2025/360300e183/26FZCoh4LOU
*当届会议在工业界通常有一篇 Best Paper 和一篇 Best Paper Runner Up(最佳备选)。
为了解决这个问题,OceanBase 将读写操作单元化,并采用混合集中化和单元化方法,针对 OLTP和 OLAP 进行了动态优化。为了验证我们的设计,我们将 OceanBase 部署在高德地图(一个支持大规模分布式服务的在线地图应用平台)上。通过一系列实验,我们证明了 OceanBase 强大的容灾能力,在写密集型和读密集型基准测试中均实现了性能提升。
通常,像银行系统这样的典型系统会采用经典的“两城三中心” IDC 部署要求。当系统发生灾难性破坏时,灾难恢复在确保系统韧性方面发挥着至关重要的作用。然而,系统能够及时处理大规模请求,最大限度地降低最终用户的延迟也同样重要。虽然单点读写可以保证数据一致性,但在请求量巨大的情况下,仍然会出现性能瓶颈。
为了解决这个问题,许多系统选择将数据和计算资源分布在不同节点上,从而实现服务的分布式部署。每个用户的请求都会被定向到一个独立的节点,并在该节点内对分区数据执行读写操作。在某些复杂的情况下,用户的服务可能涉及多个请求,每个请求都可以路由到不同的节点。因此,访问地理位置相近的节点对于显著提升响应速度至关重要,可提升系统整体性能。
基于上述需求,高德地图引入“OceanBase 单元化”的概念。“单元”是指一个可以执行所有业务操作的独立整体,该整体包含各种业务所需的所有服务。“单元”作为基础部署实体,多个单元分布在整个站点内的所有 IDC 中。每个单元处理系统所需的所有应用程序,数据是基于特定标准对数据集进行分区的子集。与传统的面向服务架构 (SOA) 不同,SOA 将服务组织在层级结构中,节点数量也各不相同。
单元化架构保留了集成结构。然而,在这种情况下,同一层中的每个节点都专属于一个特定的单元。当上层调用下层时,只会选择同一单元内的节点。这种方法有助于在单元化架构中实现多活解决方案,有效隔离系统部署和核心流量。因此,它能够实现更灵活的可扩展性和强大的容灾解决方案。
从可用性的角度来看,数据在逻辑和物理上被划分为分配给每个单元的子数据库和表,这使得发送到故障单元的请求能够由另一个活动单元处理,从而确保服务的持续可用性,请求倾向于根据路由策略访问地理位置相近的单元。在性能方面,并发请求被高效地分布在多个单元之间,从而实现负载均衡。此外,根据具体的应用场景,读写 (R/W) 操作可以单元化或集中化。为了减少 OLAP 工作负载的同步开销,我们策略性地过渡到集中式写入。这种灵活的设计最大限度地提高了并发事务吞吐量,并在大数据环境中实现了高性能的查询响应。
设计云原生且独立于行业的架构已成为很多公司未来的发展方向。
具体来说,针对现有的核心服务,其研发重点包括提供跨地域容灾能力以及确保高并发请求下的高吞吐量。本研究主要致力于在高德地图的应用平台上部署OceanBase,采用单元化架构。本文的贡献可以概括为:
- 容灾能力:OceanBase 的单元化架构和三地五中心部署模式,实现了单元间的无缝切换,确保数据不丢失、不中断,从而实现数据高可用性和业务连续性。
- 高性能:OceanBase 允许用户访问地理位置相近的数据中心,从而降低延迟并最大程度地减少网络拥塞。为了提升读写请求的高吞吐量,OceanBase 采用了单元化和集中式相结合的架构。
- 一致性:OceanBase 在不同单元之间实现复制同步,以保证数据的一致性。
我们在高德地图上为众多应用部署了单元化的 OceanBase 系统,为 OLAP 和 OLTP 提供了高可用性和高吞吐量。OceanBase 的单元化架构在 AP 和 TP 性能方面展现出显著的性能优势,远超其竞争对手,展现出强大的数据处理能力和高效的查询机制。
以高德为例介绍三种典型的业务场景,OceanBase 采用单元化架构来应对每种场景带来的挑战。
📕【案例 1】强一致性财务
高德地图财务结算服务主要提供结算和财务数据服务,需要具备强数据一致性、数据防丢失和跨区域容灾能力。如图 1 所示,用户数据、资金流和信息流分别由业务渠道、财务渠道和财务会计模块控制。
高德地图提供各种服务,每个完整的服务都由多个子服务组成,这些子服务构成复杂的业务链。业务模块控制服务之间的交互,监控和管理业务流程的各种状态。如果业务链中任何环节发生故障,高德地图的系统必须及时检测到故障服务,重新启动任何未完成的流程,并从用户的角度确保业务流程的正常执行。
在资金流和信息流方面,财务结算服务在与 B 端商户的支付结算中起着至关重要的作用。它需要高度的数据一致性,以避免由于不一致而导致的支付计算错误。因此,为了提高财务和结算系统的可用性,高德地图需要一个支持跨地域容灾并提供强数据一致性的数据库系统。
高德地图云同步是一项基础业务服务,负责数据的云存储和跨设备同步。如图 2 所示,不同的终端系统(手机、平板电脑、车载系统)从不同节点同时访问云系统,并对云数据(例如用户位置信息、用户账户信息等)进行多次读写操作。在相应的业务场景中,需要确保跨多设备的数据写入准确、更新及时,并在切换设备后快速检索数据。随着高德地图业务的快速扩展,云同步系统需要存储海量数据。因此,在高德地图云同步服务中,数据库系统必须支持海量数据存储,实现多点写入,并确保卓越的读写性能。
📕【案例 3】在线点评服务与高清地图(OLAP)
高德地图评论服务是一个基于用户评价的信息平台,旨在为用户提供更精准、更实用的评论信息,帮助用户做出更明智的选择。它主要包含两个方面:用户评论和商家回复。
用户可以在高德地图平台上对商家进行评价,从服务质量、产品质量和环境等方面进行评分和评论。商家可以通过高德地图平台界面回复用户评论、解释和解决问题并与用户沟通。通常情况下,评论内容会受到内容审核服务的监控,因此每秒写入事务数 (TPS) 可能不是很高。但是,评论内容会显示在高德地图的各个端点上,因此需要较短的响应时间 (RT)。与用例 2 不同,评论服务涉及的写入操作少于读取操作。因此,我们致力于集中写入操作,以最大限度地减少同步开销。
一般情况下,整体 RT 需控制在 15ms 以内才能达到最佳性能。图 3 展示了高德地图评论服务与 OceanBase 解决方案的痛点分析。
高德地图的另一项 OLAP 服务,和云同步服务使用的是同一种架构,它是一种高精度地理信息服务,提供厘米级定位精度和详细的道路及交通数据,包括 3D 建模和实时动态信息。此类地图是自动驾驶、高级驾驶辅助系统 (ADAS)、智能交通系统以及城市规划和位置服务的关键基础。其高精度和详尽的数据对于智能交通和自动驾驶技术的发展至关重要。
针对描述的三种典型业务场景,OceanBase 采用单元化架构,提供强大的弹性能力,确保数据高一致性,并提升并发读写效率。业界常见的分布式架构主要包括单活、双活、多活和冷备架构。从容灾能力来看,这些架构可以在应用层面实现跨 IDC 容灾。然而,由于采用异步复制技术,数据库无法在数据中心层面实现零恢复点目标(RPO)。
多站点高可用性(MSHA)是一种面向分布式系统的健壮部署架构。逻辑数据中心的单元化架构是 OceanBase 实现 MSHA 的解决方案。“单元”是指一个独立的集合,可以执行所有业务操作,包括其服务和分配的数据。单元化架构以单元为基本部署单位,在每个数据中心部署多个单元,采用最优路由策略,高效处理访问跨数据中心多个单元的请求,从而最大限度地降低网络开销。
如果一个单元发生故障,其他单元可以无缝接管传入的请求,从而确保高可用性。通过跨区域部署单元,OceanBase 可以轻松支持区域级别的可用性。数据根据特定标准进行分区,从而支持多点读写操作,并缓解集中式操作瓶颈。为了满足不断增长的用户请求,可以通过添加更多单元来水平扩展部署。这有利于系统的可扩展性,从而有效地应对不断增长的用户需求。
从单元化角度来看,系统中存在三种类型的数据:
- 可分区数据:可以根据选定的维度进行分区,从而真正实现单元化。这类数据通常是单元化架构的核心。例如,订单、支付交易和账户数据。这类数据在系统中的比例越高,单元化程度就越高。如果系统完全由这类数据组成,则可以构建一个完美的单元化架构。
- 全局数据(关键业务链不频繁访问):这类数据无法分区,仅存在于全局。一个典型的例子是配置数据,它可能会被关键业务链访问,但访问频率不高。因此,即使访问速度不够快,也不会对业务性能产生显著影响。
- 全局数据(关键业务链频繁访问):这类数据与上一类数据类似,不同之处在于它们会被关键业务链频繁访问。如果系统不是以地理分布式方式部署,这类数据对分布式系统的影响很小。
但是,如果我们想通过单元化的方式实现多单元安全策略 (MSHA),这类全局数据将被不同的单元访问,从而产生额外的开销。
金融服务需要数据强一致性和跨区域容灾。综合考虑部署成本和可用性,我们选择了三城五中心的架构。此外,这种可扩展的架构支持水平扩展,能够在多个城市添加更多数据中心。OceanBase 支持金融数据同时写入多个区域数据副本,即使某个区域不可用,也能确保完整数据的可用性。
OceanBase 中的 Paxos 共识协议保证只有多个数据副本写入成功后响应才算成功,从而确保分布式副本的数据强一致性。
- 三城五中心部署:最大化 RZone 比例,最小化 GZone 比例,可以提升单元化架构系统的效率。在一个典型的三城五中心单元化架构系统中,单元的部署方式如图 4 所示。首先,我们在两个主要城市部署 RZone,并在第三个城市部署最后一个 RZone,用于运行分片应用。我们确保至少部署四组 RZone,每组分别部署在两个城市(即城市 1 和城市 2)的数据中心,第五组 RZone 部署在第三个城市(即城市 3)。该 GZone 可以处理所有公共服务,从而降低部署成本、开发成本和运营成本。我们将主 GZone 部署在其中一个主要城市(城市 1),用于处理非水平可扩展的业务。我们也可以在另一个主要城市(城市 2)部署一个备份 GZone,作为主 GZone 的远程灾难恢复点。备份 GZone 旨在确保灾难恢复功能的可用性,并能够处理少量的日常业务流量。为了简化整体架构,我们引入了一个 CZone,仅用于备份。更实际地讲,如果观察到从城市 2 的 RZone 或备份 GZone 到城市 1 的 GZone 的跨城市访问似乎对业务运营造成难以容忍的影响(例如响应时间过长),则会决定触发部署额外的 CZone。此额外部署有助于减轻对网络状况的任何不利影响并保持最佳性能。当 RZone 1 发生故障时,我们将 RZone 1 切换到 RZone 2,实现本地灾难恢复。首先进行数据库分片,并将 RZone 2 中 Shard 1 的副本提升为主副本。提升完成后,RZone 1 的流量将切换到 RZone 2,实现本地容灾,恢复点目标 (RPO) 为 0,恢复时间目标 (RTO) 小于 8 秒。同样,对于异地容灾,如果 RZone 1 发生故障,RZone 3 中的副本将切换到主副本,负责处理后续请求。此过程同样实现 RPO 为 0,RTO 小于 8 秒。
- 预写日志:OceanBase 通过预写日志 (WAL) 机制确保系统崩溃期间数据的正确性和完整性。OceanBase 原生支持对多个数据副本的并发写入,且不会出现同步延迟问题。在传统数据库系统中,写操作通常需要同步写入,即等待数据写入磁盘后才返回成功响应。这种同步写入方法会引入写入延迟,从而降低系统写入性能和吞吐量。然而,OceanBase 采用一种名为 PALF(基于 Paxos 的 Append-only Log File System,仅附加日志文件系统)的 WAL 方法来处理写入操作。当数据写入 OceanBase 时,写入操作会首先记录在 WAL 中,并立即返回成功响应。这种异步写入无需等待磁盘确认,OceanBase 会在后台执行日志刷新,将数据持久化到磁盘。这种方法支持并发写入多个副本,而不会出现同步延迟问题。多个写入操作可以并发处理,写入不同的副本而不会相互阻塞。
- 基于 Multi-Paxos 的复制:OceanBase 依赖于 Multi-Paxos 协议,它是 Paxos 算法的扩展,使用多阶段和多轮次机制。它通过引入一个 Leader 和多个 Acceptor 来实现高效的一致性。在 OceanBase 的实现中,Multi-Paxos 协议保障了分布式事务的一致性和可靠性。它确保了节点间的数据一致性,并通过 Leader 故障转移等机制提供高可用性和容错能力。Multi-Paxos 通过在 Paxos 集群内选举 Leader 来优化 Basic-Paxos。在 Leader 任期内,所有提案都由该 Leader 发起。这强化了协议的假设,即在 Leader 任期内没有其他服务器发起提案。因此,对于后续提案,可以简化日志 ID 的生成和准备阶段。唯一领导者生成日志 ID 并直接执行接受阶段,一旦多数人确认提案,便达成共识(每个重做日志对应一个提案)。
实验结果表明,单元化设计在“OLTP”和“LOAT”2 个场景下表现不错,也填补了数据库多样化带来复杂度的问题,通过多样化引擎和简化管理运维流程,提高了人效也降低了成本。
- RO(只读):模拟用户与已发布帖子和评论的交互。包含 10 个“Select”查询和 4 个包含聚合函数的附加查询,所有只读查询均表述为分布式事务。
- RW(读写混合):为模拟高德地图评论系统的真实场景,在 RO 子基准中引入 4 个写查询,这些作为分布式事务的查询涵盖了帖子和评论的删除、插入和更新操作。
- WO(仅写入):模拟云同步场景中的极端情况,仅专注于写查询,包括对给定 ID 的删除、插入和更新操作。
- Insert:此子基准衡量向表中插入新元组的性能。
- Update:Update 子基准评估基于给定 ID 的更新操作效率。
(一)性能对比
在本实验中,为评估不同压力水平下的性能,实验为每个子基准初始化一个“用户节点”,持续向数据库发送请求,并将请求频率逐步提升至 10 万次每秒(TPS)。为评估性能,本文分析了两个关键指标:成功响应的吞吐量和每个请求的平均响应时间(RT)。吞吐量表示单位时间内生成的成功响应数,平均响应时间则通过测量从发送第一个请求到接收最后一个响应的持续时间并除以请求总数计算得出。
为评估系统可扩展性,实验通过逐渐增加“用户节点”中的线程数进行实验。每个线程以相同频率持续发送请求,随着线程数增加,请求传输速率也随之提高。此外,还评估了系统在不同规模下的性能,考察其在可用资源和分布式处理水平不同的场景中如何处理工作负载。
- 首先,OceanBase 使用针对分布式事务高度优化的早期锁释放策略,使参与节点能够在日志序列化到磁盘之前提交事务。
- 其次,OceanBase 采用 OMS 的离线同步机制确保单元间的数据一致性。
为评估 OceanBase 压缩方案的效率,实验选择本地部署的两个商业数据库系统 DB-A 和 DB-B 作为对比基线,它们采用专用压缩模式以提高存储效率。实验表明,OceanBase 的压缩能力显著优于对比系统,存储空间比 DB-A 少 8.2 倍,比 DB-B 少 2.8 倍,这得益于其微块级用户自定义压缩和列存储编码技术。
想了解更多资讯
扫码关注👇
了解更多考试相关
扫码添加上智启元官方客服微信👇