暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

OceanBase 集群架构

Ty3306 2023-01-27
995

面向海量事务处理的分布式数据库系统 OceanBase 数据库采用了 Zone(可用区)的概念,每个 Zone 是一个机房内的一组服务器,包含多台 OceanBase 数据库服务器(OBServer)。每台 OBServer 包含 SQL 引擎、事务引擎和存储引擎,并服务多个数据分区,其中,每个 Zone 有一台 OBServer 会同时使能总控服务(RootService),用于执行集群管理、服务器管理、自动负载均衡等操作。OBServer 上会运行 SQL 引擎、事务引擎和存储引擎,用户的 SQL 查询经过 SQL 引擎解析优化后转化为事务引擎和存储引擎的内部调用。对于跨服务器操作,OceanBase 数据库还会执行强一致的分布式事务,从而在分布式集群上实现数据库事务 ACID。

OceanBase 数据库采用 Shared-Nothing 架构,各个节点之间完全对等,每个节点都有自己的 SQL 引擎、事务引擎、存储引擎,运行在普通 PC 服务器组成的集群之上,具备可扩展、高可用、高性能、低成本等核心特性。

集群架构

OceanBase 数据库支持数据跨地域(Region)部署,每个地域可能位于不同的城市,距离通常比较远,所以 OceanBase 数据库可以支持多城市部署,也支持多城市级别的容灾。一个 Region 可以包含一个或者多个 Zone,Zone 是一个逻辑的概念,它包含了 1 台或者多台运行了 OBServer 进程的服务器(以下简称 OBServer)。每一个 Zone 上包含一个副本(全功能副本或者日志副本),由于 OceanBase 数据库的数据副本是以分区为单位的,所以同一个分区的数据会分布在多个 Zone 上。每个分区的主副本所在服务器被称为 Leader,所在的 Zone 被称为 Primary Zone。如果不设定 Primary Zone,系统会根据负载均衡的策略,在多个全功能副本里自动选择一个作为 Leader。

每个 Zone 会提供两种服务:总控服务(RootService)和分区服务(PartitionService)。其中每个 Zone 上都会存在一个总控服务,运行在某一个 OBServer上,整个集群中只存在一个主总控服务,其他的总控服务作为主总控服务的备用服务运行。总控服务负责整个集群的资源调度、资源分配、数据分布信息管理以及 Schema 管理等功能。 其中:资源调度主要包含了向集群中添加、删除 OBServer,在 OBServer 中创建资源规格、Tenant 等供用户使用的资源;

资源均衡主要是指各种资源(例如:Unit)在各个 Zone 或者 OBServer 之间的迁移。

数据分布管理是指总控服务会决定数据分布的位置信息,例如:某一个分区的数据分布到哪些 OBServer 上。

Schema 管理是指总控服务会负责调度和管理各种 DDL 语句。

分区服务用于负责每个 OBServer 上各个分区的管理和操作功能的模块,这个模块与事务引擎、存储引擎存在很多调用关系。

OceanBase 数据库基于 Paxos 的分布式选举算法来实现系统的高可用,最小的粒度可以做到分区级别。集群中数据的一个分区(或者称为副本)会被保存到所有的 Zone 上,整个系统中该副本的多个分区之间通过 Paxos 协议进行日志同步。每个分区和它的副本构成一个独立的 Paxos 复制组,其中一个分区为主分区(Leader),其它分区为备分区(Follower)。所有针对这个副本的写请求,都会自动路由到对应的主分区上进行。主分区可以分布在不同的 OBServer 上,这样对于不同副本的写操作也会分布到不同的数据节点上,从而实现数据多点写入,提高系统性能。





原文链接:https://blog.csdn.net/weixin_39641738/article/details/114353932

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论