当前位置: 首页 > news >正文

2.OceanBase高可用架构概述

OceanBase高可用架构概述

目录
  • OceanBase高可用架构概述
    • OceanBase 数据库体系架构
      • 高可用

OceanBase 数据库的体系架构和实现方式,保证了数据的强一致性、完整性和高可用。

OceanBase 数据库体系架构

image

如图所示,数据服务层表示一个 OceanBase 数据库集群。该集群由三个子集群(Zone)组成,一个 Zone 由多台物理机器组成,每台物理机器称之为数据节点(OBServer)。OceanBase 数据库采用 Shared-Nothing 的分布式架构,每个数据节点都是对等的。

OceanBase 数据库中存储的数据分布在一个 Zone 的多个数据节点上,其它 Zone 存放多个数据副本。如图所示的 OceanBase 数据库集群中的数据有三个副本,每个 Zone 存放一份。这三个 Zone 构成一个整体的数据库集群,为用户提供服务。

根据部署方式的不同,OceanBase 数据库可以实现各种级别容灾能力:

  • 服务器(Server)级无损容灾:能够容忍单台服务器不可用,自动无损切换。
  • 机房(Zone)级无损容灾:能够容忍单个机房不可用,自动无损切换。
  • 地区(Region)级无损容灾:能够容忍某个城市整体不可用,自动无损切换。
    当数据库集群部署在一个机房的多台服务器时,实现服务器级别容灾。当集群的服务器在一个地区的多个机房中时,能够实现机房级别容灾。当集群的服务器在多个地区的多个机房中时,能够实现地区级别容灾。

OceanBase 数据库的容灾能力可以达到 RPO=0,RTO=30 秒的国标最高的 6 级标准。

高可用

OceanBase 分布式集群的多台机器同时提供数据库服务,并利用多台机器提供数据库服务高可用的能力。在上图中,应用层将请求发送到代理服务(ODP,也称为 OBProxy),经过代理服务的路由后,发送到实际服务数据的数据库节点(OBServer),请求的结果沿着反向的路径返回给应用层。整个过程中不同的组件通过不同的方式来达到高可用的能力。

在数据库节点(OBServer)组成的集群中,所有的数据以分区为单位存储并提供高可用的服务能力,每个分区有多个副本。一般来说,一个分区的多个副本分散在多个不同的 Zone 里。多个副本中有且只有一个副本接受修改操作,叫做主副本(Leader),其他叫做从副本(Follower)。主从副本之间通过基于 Multi-Paxos 的分布式共识协议实现了副本之间数据的一致性。当主副本所在节点发生故障的时候,一个从节点会被选举为新的主节点并继续提供服务。

选举服务是高可用的基石,分区的多个副本通过选举协议选择其中一个作为主副本(Leader),在集群重新启动时或者主副本出现故障时,都会进行这样的选举。选举服务依赖集群中各台机器时钟的一致性,每台机器之间的时钟误差不能超过 200 毫秒,集群的每台机器应部署 NTP 或其他时钟同步服务以保证时钟一致。选举服务有优先级机制保证选择更优的副本作为主副本,优先级机制会考虑用户指定的 Primary Zone,考虑机器的异常状态等。

当主副本开始服务后,用户的操作会产生新的数据修改,所有的修改都会产生日志,并同步给其他的备副本(Follower)。OceanBase 数据库同步日志信息的协议是 Multi-Paxos 分布式共识协议。Multi-Paxos 协议保证任何需要达成共识的日志信息,在副本列表中的多数派副本持久化成功后即可保证,在任意少数派副本故障时,信息不会丢失。Multi-Paxos 协议同步的多个副本保证了在少数节点故障时系统的两个重要特性:数据不会丢失、服务不会停止。用户写入的数据可以容忍少数节点的故障,同时,在节点故障时,系统总是可以自动选择新的副本作为主副本继续数据库的服务。

OceanBase 数据库每个租户还有一个全局时间戳服务(GTS),为租户内执行的所有事务提供事务的读取快照版本和提交版本,保证全局的事务顺序。如果全局时间戳服务出现异常,租户的事务相关操作都会受到影响。OceanBase 数据库使用与分区副本一致的方案保证全局时间戳服务的可靠性与可用性。租户内的全局时间戳服务实际会由一个特殊的分区来决定其服务的位置,这个特殊分区与其他分区一样也有多副本,并通过选举服务选择一个主副本,主副本所在节点就是全局时间戳服务所在节点。如果这个节点出现故障,特殊分区会选择另一个副本作为主副本继续工作,全局时间戳服务也自动转移到新的主副本所在节点继续提供服务。

以上是数据库集群节点实现高可用的关键组件,代理服务(ODP,也称为 OBProxy)也需要高可用能力来保证其服务。用户请求首先到达的是代理服务,如果代理服务不正常用户请求也无法被正常服务。代理服务还需要处理数据库集群节点故障,并做出响应的容错处理。

代理服务不同于数据库集群,代理服务没有持久化状态,其工作依赖的所有数据库信息都来自于对数据库服务的访问,所以代理服务故障不会导致数据丢失。代理服务也是由多台节点组成集群服务,用户的请求具体会由哪个代理服务节点来执行,应由用户的F5或者其他负载均衡组件负责,同时代理服务的某台节点故障,也应由负载均衡组件自动剔除,保证之后的请求不会再发送到故障节点上。

代理服务工作过程会实时监控数据库集群的状态,一方面代理服务会实时获取集群系统表,通过系统表了解每台机器的健康状态和分区的实时位置,另一方面代理服务会通过网络连接探测数据库集群节点的服务状态,遇到异常时会标记相应节点的故障状态,并进行相应的服务切换。

http://www.jsqmd.com/news/796338/

相关文章:

  • 手把手教你用STM32CubeMX和Keil MDK移植DWM1000官方TWR测距例程(附源码下载)
  • 2026年无锡充电桩运营系统与江苏社区充电生态物联解决方案深度横评指南 - 企业名录优选推荐
  • 别再轮询了!用STM32外部中断(EXTI)实现按键响应,效率提升不止一点点
  • 如何用5分钟彻底解决Mac菜单栏混乱?Ice菜单栏管理工具终极指南
  • 保姆级教程:在银河麒麟V10上为gcc编译的程序添加可执行权限(附kysec_set命令详解)
  • 运放驱动容性负载的稳定性分析与RISO补偿技术
  • 配电房专用风机哪个品牌好?实力强、质量好的生产厂家在哪里?求靠谱供应厂家推荐。 - 品牌推荐大师
  • 【GNURadio RTL-SDR】多设备协同:构建FM广播信号对比与监测系统
  • 2026年企业微信SCRM权威实测:AI如何重塑金融医疗零售行业的私域增长? - 行业产品测评专家
  • 嵌入式大模型部署实战:从树莓派到JamAIBase的技术解析
  • Betaflight黑匣子功能全解析:从零开始掌握飞行数据分析
  • arcpy自动化制图:数据驱动页面与动态表格的批量生成与导出
  • 高抗干扰液晶屏驱动芯片I2C通信接口+省电模式段码屏LCD驱动IC VK2C21BA
  • 避坑指南:ESP32 HTTPS请求失败?证书配置、内存泄漏与超时设置全解析
  • 2026年无锡充电桩运营系统与社区物联解决方案深度横评 - 企业名录优选推荐
  • Python实战:三大曲线平滑技术对比与场景选型指南
  • ZonyLrcToolsX:一站式歌词下载完整解决方案
  • 如何快速解锁中兴光猫:zteOnu工具的完整指南
  • 别再傻傻分不清了!VB、VBS、VBA到底该学哪个?给新手的选型指南
  • Qt元对象系统进阶:Q_PROPERTY宏在动态属性与QML集成中的实战解析
  • Android RTSP流媒体播放:从原生组件到开源库的三种实现路径
  • 还在手动整理ai会议纪要浪费宝贵下班时间?2026年这4款真香AI工具3分钟搞定3小时会议
  • -196℃深冷适配+全场景通用!Miller低温阀门的核心竞争力解析 - 米勒阀门
  • 别再用Excel手算了!用Python脚本快速搞定Zemax连续变焦镜头初始结构计算
  • 在Visual Studio中构建open62541:从源码编译到OPC UA服务端开发实战
  • 题解:AT_agc064_c [AGC064C] Erase and Divide Game
  • 修改Oracle用户密码永不过期
  • 网络排障实战:当视频卡顿时,如何用Wireshark抓包并提取H.264码流分析?
  • SignalTap调试进阶:巧用约束与别名捕获FPGA优化后的关键信号
  • 1.OCEANBASE整体架构