OceanBase 设计为一个 Share-Nothing 的架构,所以它是没有任何的共享存储结构的。至少需要部署三个以上的Zone,数据在每个 Zone 都存储一份。各个节点之间完全对等,各自有各自的 SQL 引擎和存储引擎。存储引擎只能访问本地数据,而 SQL 引擎可以访问到全局 Schema,并生成分布式的查询计划。查询执行器可以访问各个节点的存储引擎,并在各个节点间做数据的分发和收集,完成分布式计划的执行,并把结果返回给用户。

    另外,其中一个节点还会额外担负起 RootService 服务,Root Service同样会有多个备分布在各个 Zone。主 Root Service 和所有 ObServer 之间维持租约,当 ObServer 出现故障时,主 Root Service 能够检测到并执行故障恢复操作。

    Root Service 是 ObServer 进程的一个功能模块,每台 ObServer 都具备 Root Service 功能。Root Service的功能主要包括:服务器与 Zone 管理、分区管理、每日合并控制、系统自举、DDL 操作等等。

    OceanBase的整个设计里面没有任何的单点。这就从架构上解决了高可靠高可用的问题。

    产品架构图.png

    在这个架构的基础上,实现了一个高效的节点间的 Paxos 协议,所有的数据写到半数以上的机器上才算成功,从而保证数据不丢和强一致性。另外为了提高性能和可用性,我们把传统数据库的水平分区引入到 Oceanbase 的基础架构里,Paxos 协议组以数据分区为单位。