第四章:OceanBase集群技术架构

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 第四章:OceanBase集群技术架构

1.Paxos协议与负载均衡

数据分区与分区副本

分区

1.当一个表很大的时候,可以水平拆分为若干个分区,每个分区包含表 的若干行记录。根据行数据到分区的映射关系不同,分为hash分区, List分区(按列表),range分区(按范围)等

2.每一个分区,还可以用不同的维度再分为若干分区,叫做二级分区

3.分区是OceanBase数据架构的基本单元,是传统数据库的分区表在分 布式系统上的实现


副本

1.为了数据安全和提供高可用的数据服务,每个分区的数 据在物理上存储多份,每一份叫做分区的一个副本

2.副本根据负载和特定的策略,由系统自动调度分散在多 个Server上。副本支持迁移、复制、增删、类型转换等 管理操作

支持三种副本,满足不同业务类型的需求

根据存储数据种类的不同,副本有几种不同的类型,以支持不同业务在在数据安全,性能伸缩性,可用性, 成本等之间进行取舍折中

全能型副本:也就是目前支持的普通副本,拥有事务日志,MemTable和SSTable等全部完整的数据和 功能。它可以随时快速切换为leader对外提供服务。

日志型副本:只包含日志的副本,没有MemTable和SSTable。它参与日志投票并对外提供日志服务, 可以参与其他副本的恢复,但自己不能变为主提供数据库服务。因为日志型副本所消耗的物理资源 (CPU、内存、磁盘)更少,它可以有效降低最后一副本机器的成本,进而降低整个集群的总体成本。

只读型副本:包含完整的日志,MemTable和SSTable等,但是它的日志比较特殊。它不作为paxos成 员参与日志的投票,而是作为一个观察者实时追赶paxos成员的日志,并在本地回放。这种副本可以在 业务对读取数据的一致性要求不高的时候提供只读服务。因其不加入paxos成员组,又不会造成投票成 员增加导致事务提交延时的增加。

类型 Log MemTable SSTable 数据安全
全能型 有,参与投票
日志型 有,参与投票
只读型 有,但不属于paxos组,只是listener

多副本一致性协议

以分区为单位组建Paxos协议组:每个分区都有多份副本(Replica),自动建立Paxos组,在分 区级用多副本保证数据可靠性和服务高可用,数据管理更加灵活方便。

• 自动选举主副本:OB自动生成多份副本,多副本自动选举主副本,主副本提供服务(如图黄色副 本供应用访问,蓝色副本用于备份)


自动负载均衡与智能路由

• 自动负载均衡:主副本均匀打散到各个服务器中,使 得各个服务器都能承载业务流量。(如图应用1、2、 3读请求分布路由到不同的OB Server)

每台OB Server相互独立:每台OB Server均可以独 立执行SQL,如果应用需要访问的数据在不同机器上, OB Server自动将请求路由至数据所在的机器,对业 务完全透明(如应用2->P6->P7/P8)

                         

通过多副本同步Redo Log确保数据持久化

• Paxos组成员通过Redo-Log的多数派强同步, 确保数据的持久化

• Leader无需等待所有Follower的反馈,多数派 完成同步即可向应用反馈成功

查看表和分区的分布情况

表及分区的相关信息储存在这两个系统表中。

系统表:__all_virtual_meta_table,关键信息
• tenant_id
• table_id
• partition_id
• svr_ip
• role:1 – leader, 2 - follower
系统表:__all_virtual_table,关键信息
• table_id
• table_name

OB Proxy为应用提供智能路由服务,应用透明访问

高效路由器转发

对SQL做基本解析,确定对应Leader所在机器

反向代理,将请求路由至对应Leader;Leader位置无法确定时随机选择OB Server

轻量SQL解析+快速转发,保证高性能,单OB Proxy每秒转发百万次请求。

“非”计算节点,无状态

每个OB Proxy是一个“无状态”的服务进程,不做数据持久化,对部署位置无要求。

OB Proxy不参与数据库引擎的计算任务,不参与事务(单机or分布式)处理

多个OB Proxy之间无联系,可通过F5/SLB组成负载均衡集

不需要独立服务器,可以与OB Server共用一台服务器,如果应用对实时性要求高,也可以将OB Proxy部署到应用服务器中。

通过设置Primary Zone,将业务汇聚到特定Zone

                                       

配置:(z1,z2,z3)     意义:ZONE_1=ZONE_2=ZONE_3

主副本均匀分布到各机器

适合批处理场景,希望尽快跑完,不关注某一个sql的执行时间,期望让整体任务尽快完成。

配置2:(z1;z2;z3)   意义:ZONE_1>ZONE_2>ZONE_3

主副本只在Zone1存在,Zone2和Zone3均是从副本

适合对时延敏感在线处理业务,业务量不大,不超过一台机器的处理能力,可以尽量避免跨服务器访问,从而降低时延。

配置3:(z1,z2,z3)   意义:(ZONE_1=ZONE_2)>ZONE_3

主副本均匀分布到Zone1和Zone2,Zone3均是从副本

适合三地五中心方案,将业务汇聚到距离较近的城市,距离较远的城市只承担从副本的角色。

通过为不同的租户配置不同的Primary Zone,可以将业务流量集中到若干Zone中,减少跨Zone及跨服务器 的操作。Zone List,逗号两侧优先级相同,分号左侧优先级高于右侧。

Primary Zone有租户、数据库和表不同的级别

如无特殊指定,自动继承上级对象的primary_zone:database继承租户的primary_zone设置, table继承database的primary_zone设置。


database和table可以指定各自的primary_zone,不必和上一级对象的设置保持一致;提供更加 灵活的负载均衡策略。

Table Group,将多个表的相同分区ID的主副本聚集在一个OB Server,减少分布式事务引入的开销

                                             

• 如果多个表的分区方式完全相同(分区类型、分区键个数、分区数量等) ,可以 在逻辑上将这些表归属到同一个Table Group中,以影响动态负载均衡的策略

• 同一个Table Group中的所有表,分区ID(partition_id)相同的所有分区,它们 的leader在同一个observer上;在不影响全局负载均衡的前提下,可有效减少分 布式事务引入的跨机访问开销

• 如果负载均衡被打破(服务器故障后、扩容缩容等),Table Group中的所有表会 作为一个整体来调整分区分布和leader分布

• 动态创建和删除,并且对上层应用完全透明

• 如果租户的unit_num=1且primary_zone只有一个zone,不需要tablegroup

Table Group举例

• 假设一个集群有3个Zone,租户的Unit Num是2,表1和表2的Primary Zone是负载均衡的

• 对于某一个员工(emp_id)来说,他/她的员工信息数据和薪水数据,一 定在同一个observer上提供服务,比如employees(p1)和salaries(p1)

• employees表和salaries表组成一个Table Group

• Table Group中相同分区ID的主副本均在一台OB Server上

• 整体负载均衡没有被打破,每台OB Server均有主副本和从副本

• 如果Zone1-OB Server1故障,那么T1(P1)+T2(P1)将会整体迁移



 


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
4月前
|
消息中间件 负载均衡 中间件
⚡ 构建真正的高性能即时通讯服务:基于 Netty 集群的架构设计与实现
本文介绍了如何基于 Netty 构建分布式即时通讯集群。随着用户量增长,单体架构面临性能瓶颈,文章对比了三种集群方案:Nginx 负载均衡、注册中心服务发现与基于 ZooKeeper 的消息路由架构。最终选择第三种方案,通过 ZooKeeper 实现服务注册发现与消息路由,并结合 RabbitMQ 支持跨服务器消息广播。文中还详细讲解了 ZooKeeper 搭建、Netty 集群改造、动态端口分配、服务注册、负载均衡及消息广播的实现,构建了一个高可用、可水平扩展的即时通讯系统。
444 0
|
6月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
6月前
|
存储 SQL 数据库
【赵渝强老师】OceanBase的部署架构
OceanBase数据库支持两种部署架构:无共享(Shared-Nothing,SN)模式和共享存储(Shared-Storage,SS)模式。SN模式下,各节点对等,具备高扩展性、可用性和性能,运行于普通PC服务器集群;SS模式采用存算分离架构,租户数据存储在共享对象存储上,本地缓存热点数据。两种模式均支持高可用与多副本一致性,适用于不同业务场景。
402 1
|
2月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
7月前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
7月前
|
存储 NoSQL Redis
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 +  无锁架构 +  EDA架构  + 异步日志 + 集群架构
|
8月前
|
并行计算 PyTorch 算法框架/工具
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
本文探讨了如何通过技术手段混合使用AMD与NVIDIA GPU集群以支持PyTorch分布式训练。面对CUDA与ROCm框架互操作性不足的问题,文章提出利用UCC和UCX等统一通信框架实现高效数据传输,并在异构Kubernetes集群中部署任务。通过解决轻度与强度异构环境下的挑战,如计算能力不平衡、内存容量差异及通信性能优化,文章展示了如何无需重构代码即可充分利用异构硬件资源。尽管存在RDMA验证不足、通信性能次优等局限性,但该方案为最大化GPU资源利用率、降低供应商锁定提供了可行路径。源代码已公开,供读者参考实践。
619 3
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
|
8月前
|
存储 SQL 并行计算
【赵渝强老师】达梦数据库MPP集群的架构
达梦数据库提供大规模并行处理(MPP)架构,以低成本实现高性能并行计算,满足海量数据存储和复杂查询需求。DM MPP采用完全对等无共享体系,消除主节点瓶颈,通过多节点并行执行提升性能。其执行流程包括主EP生成计划、分发任务、各EP并行处理及结果汇总返回。为确保高可用性,建议结合数据守护部署。
235 0
|
12月前
|
存储 缓存 NoSQL
【赵渝强老师】Memcached集群的架构
Memcached 是一个高性能的分布式内存对象缓存系统,通过在内存中维护一个巨大的 Hash 表来存储各种格式的数据,如图像、视频、文件及数据库检索结果等。它主要用于减轻数据库压力,提高网站系统的性能。Memcached 不支持数据持久化,因此仅作为缓存技术使用。其数据分布式存储由客户端应用程序实现,而非服务端。
233 0
【赵渝强老师】Memcached集群的架构
|
11月前
|
存储 负载均衡 监控
揭秘 Elasticsearch 集群架构,解锁大数据处理神器
Elasticsearch 是一个强大的分布式搜索和分析引擎,广泛应用于大数据处理、实时搜索和分析。本文深入探讨了 Elasticsearch 集群的架构和特性,包括高可用性和负载均衡,以及主节点、数据节点、协调节点和 Ingest 节点的角色和功能。
447 0

推荐镜像

更多