OBCP第一章:OB分布式架构高级技术

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: OBCP第一章:OB分布式架构高级技术

OB聚合资源的物理表示

OB聚合资源的逻辑表示

OB资源的分配流程

资源管理相关操作:资源单元

创建/修改资源单元

CREATE/ALTER RESOURCE UNIT unitname 
MAX_CPU [=] cpunum, 
MAX_MEMORY [=] memsize, 
MAX_IOPS [=] iopsnum, 
MAX_DISK_SIZE [=] disksize, 
MAX_SESSION_NUM [=] sessionnum, 
[MIN_CPU [=] cpunum,]
[MIN_MEMORY [=] memsize,] 
[MIN_IOPS [=] iopsnum];

删除资源单元

DROP RESOURCE UNIT unitname;

查看资源单元配置

SELECT * FROM __all_unit_config;

资源管理相关操作:资源单元操作示例

创建资源单元

create resource unit ut_5c2g max_cpu=2, max_memory='1G', max_iops=10000, 
max_disk_size='10G', max_session_num=1000000;

修改资源单元

alter resource unit ut_5c2g max_cpu=5, max_memory='2G';

查看资源单元配置

SELECT * FROM __all_unit_config;

删除资源单元

DROP RESOURCE UNIT ut_5c2g;

资源管理相关操作:资源池

创建源池

CREATE RESOURCE POOL poolname
UNIT [=] unitname, 
UNIT_NUM [=] unitnum,##取值要小于等于对应 Zone 中的 OBServer 个数
ZONE_LIST [=](‘zone’[,‘zone’…]);

修改资源池

ALTER RESOURCE POOL poolname 
UNIT [=] unitname, 
UNIT_NUM [=] unitnum, 
ZONE_LIST [=] (‘zone’ [, ‘zone’ …]);

查看资源池

SELECT * FROM __all_resource_pool;

查看资源池

SELECT * FROM __all_resource_pool;

资源管理相关操作:资源池操作示例

创建源池

create resource pool pl_5c2g unit=ut_2c2g, unit_num=1;

修改资源池

alter resource pool pl_5c2g unit=ut_5c2g;

查看资源池

SELECT * FROM __all_resource_pool;

删除资源池

DROP RESOURCE POOL poolname;

租户相关操作

新增租户

CREATE TENANT [IF NOT EXISTS] tenantname 
[tenant_characteristic_list] [opt_set_sys_var]
tenant_characteristic_list: 
tenant_characteristic [, tenant_characteristic...]
tenant_characteristic: 
COMMENT 'string' 
|{CHARACTER SET | CHARSET} [=] charsetname 
|COLLATE [=] collationname
|ZONE_LIST [=] (zone [, zone…]) 
|PRIMARY_ZONE [=] zone 
|DEFAULT TABLEGROUP [=] {NULL | tablegroup}
|RESOURCE_POOL_LIST [=](poolname [, poolname…])
|LOGONLY_REPLICA_NUM [=] num
|LOCALITY [=] 'locality description'
opt_set_sys_var:
{ SET | SET VARIABLES | VARIABLES } system_var_name = expr [,system_var_name = expr]

租户相关操作

修改租户

ALTER TENANT {tenant_name | ALL}
[SET] [tenant_option_list] [opt_global_sys_vars_set]
tenant_option_list:
tenant_option [, tenant_option ...]
tenant_option:
COMMENT [=]'string' 
|{CHARACTER SET | CHARSET} [=] charsetname 
|COLLATE [=] collationname 
|ZONE_LIST [=] (zone [, zone…]) 
|PRIMARY_ZONE [=] zone 
|RESOURCE_POOL_LIST [=](poolname [, poolname…]) 
|DEFAULT TABLEGROUP [=] {NULL | tablegroupname}
|{READ ONLY | READ WRITE}
|LOGONLY_REPLICA_NUM [=] num
|LOCALITY [=] 'locality description'
|LOCK|UNLOCK; 
opt_global_sys_vars_set:
VARIABLES system_var_name = expr [,system_var_name = expr]

租户相关操作

删除租户

DROP TENANT tenant_name [FORCE/PURGE]
延迟删除
    进入回收站
    DROP TENANT tenant_name;
    不进入回收站
    DROP TENANT tenant_name PURGE;
    立即删除
    DROP TENANT tenant_name FORCE;

查看租户

select * from __all_tenant;

租户相关操作示例

新增租户

create tenant obcp_t1 charset='utf8mb4', zone_list=('zone1,zone2,zone3'), 
primary_zone='zone1,zone2,zone3', resource_pool_list=('pl_5c2g') set 
ob_tcp_invited_nodes=‘%';

修改租户

ALTER TENANT obcp_t1 primary_zone='zone2';

查看租户

select * from __all_tenant;

删除租户

DROP TENANT obcp_t1 force;

资源分配情况

查看集群资源由各个节点的聚合情况

select zone,
concat(svr_ip, ':', svr_port) observer,
cpu_capacity,
cpu_total,
cpu_assigned,
cpu_assigned_percent,
mem_capacity,
mem_total,
mem_assigned,
mem_assigned_percent,
unit_Num,
round('load', 2) 'load',
round('cpu_weight', 2) 'cpu_weight',
round('memory_weight', 2) 'mem_weight',
leader_count
from __all_virtual_server_stat
order by zone, svr_ip;

创建租户时的资源分配


资源单元及租户的相关要点

资源单元是资源分配的最小单元,同一个Unit不能跨节点(OBServer)

每个租户在一台observer上只能有一个unit

Unit是数据的容器

一个租户可以拥有若干个资源池

一个资源池只能属于一个租户

资源单元是集群负载均衡的一个基本单位

创建租户分区表时的资源分配:租户有1个unit

每个分区有三个副本,默认leader副本提供 读写服务,follower副本不提供服务

每个分区的三副本内容是一样的

创建租户分区表时的资源分配:租户有多个Unit

                               

资源池及租户初始化成功(tnt_pay)

create tablegroup tgorder partition by hash partitions 3;

每个分区有三个副本,默认leader副本提供读写服务

同一个分区不能跨Unit,同一个分区表不同分区可以跨Unit

同一个分区不能跨Unit,同一个分区表不同分区可以跨Unit


租户扩容

租户扩容方法一:升级规格S2到S3

alter resource pool pool_mysql unit='S3’;

租户扩容方法二:增加Unit的数量

alter resource pool pool_mysql unit_num=2;

租户资源初始状态:unit_num=1

分区分布初始状态:t1,t3,t4

租户资源扩容:unit_num->2

分区复制,分区组聚合一起,Leader打散

切换分区服务

删除旧分区

分区是数据迁移的最小单元,同一个分区不能跨 Unit,不同分区可以跨Unit

同号分区组的分区稳定在同一个Unit内部

Zone管理及状态


新增ZONE(状态为Inactive)

ALTER SYSTEM ADD ZONE 'zone';


删除ZONE(无状态)

ALTER SYSTEM DELETE ZONE ‘zone';

上线ZONE(状态为Active)

ALTER SYSTEM START ZONE 'zonename';

下线ZONE(状态为Inative)

ALTER SYSTEM STOP ZONE ’zonename’;

Server管理及状态

添加Server(状态为Inactive,随后切为active[start_service_time>0])

ALTER SYSTEM ADD SERVER 'ip:port'[ZONE='zone_name'];

删除Server(状态为Deleting)

ALTER SYSTEM DELETE SERVER 'ip:port'[ZONE='zone_name'];

取消删除Server(状态为Active[start_service_time>0或stop_time>0])

ALTER SYSTEM CANCEL DELETE SERVER 'ip:port' [,'ip:port'…] 
[ZONE=’zone_name’];

Start Server (状态为Active[start_service_time>0且 Active[stop_time=0])

ALTER SYSTEM START SERVER 'ip:port' [,'ip:port'...] 
[ZONE='zone'];

Stop Server (状态为Active[stop_time>0])

ALTER SYSTEM STOP SERVER 'ip:port' [,'ip:port'...] [ZONE='zone'];

集群扩容

集群初始状态:2-2-2

Unit:每个Zone4个Unit

集群扩容:2-2-2->3-3-3

目标端创建新Unit

分区复制,角色切换

下线多余分区及Unit

Unit是资源调度的最小单元

图中Unit移动是示意图,实际细节是 目标端先创建Unit,然后分区复制和 切换

参数控制 enable_rebalance 和 enable_auto_leader_switch

OceanBase的资源弹性伸缩与负载均衡相关参数

负载均衡功能参数

enable_rebalance 是否开启自动负载均衡的功能

控制负载均衡时Partition迁移的速度和影响

migrate_concurrency 用于控制控制内部数据迁移的并发度

data_copy_concurrency 用于设置系统中并发执行的数据迁移复制任务的最大并发数

server_data_copy_out_concurrency 用于设置单个节点迁出数据的最大并发数

server_data_copy_in_concurrency 用于设置单个节点迁入数据的最大并发数

查看业务租户内部所有leader副本的位置

select t5.tenant_name,t4.database_name,t3.tablegroup_name,t1.table_id,
t1.table_name,t2.partition_id,t2.role,t2.zone,
concat(t2.svr_ip,':',t2.svr_port) observer,
round(t2.data_size / 1024 / 1024) data_size_mb,
t2. row_count
from __all_virtual_table t1
join gv$partition t2
on (t1.tenant_id = t2.tenant_id and t1.table_id = t2.table_id)
left join __all_tablegroup t3
on (t1.tenant_id = t3.tenant_id and t1.tablegroup_id = t3.tablegroup_id)
join __all_database t4
on (t1.tenant_Id = t4.tenant_id and t1.database_id = t4.database_id)
join __all_tenant t5
on (t1.tenant_id = t5.tenant_id)
where t5.tenant_id = 1020
and t2.role = 1
order by t5.tenant_name,t4.database_name,
t3.tablegroup_name,t2.partition_id;

异地多活会有很多内部请求跨机房


相关文章
|
2月前
|
存储 缓存 NoSQL
分布式系统架构8:分布式缓存
本文介绍了分布式缓存的理论知识及Redis集群的应用,探讨了AP与CP的区别,Redis作为AP系统具备高性能和高可用性但不保证强一致性。文章还讲解了透明多级缓存(TMC)的概念及其优缺点,并详细分析了memcached和Redis的分布式实现方案。此外,针对缓存穿透、击穿、雪崩和污染等常见问题提供了应对策略,强调了Cache Aside模式在解决数据一致性方面的作用。最后指出,面试中关于缓存的问题多围绕Redis展开,建议深入学习相关知识点。
196 8
|
2月前
|
机器学习/深度学习 安全 算法
十大主流联邦学习框架:技术特性、架构分析与对比研究
联邦学习(FL)是保障数据隐私的分布式模型训练关键技术。业界开发了多种开源和商业框架,如TensorFlow Federated、PySyft、NVFlare、FATE、Flower等,支持模型训练、数据安全、通信协议等功能。这些框架在灵活性、易用性、安全性和扩展性方面各有特色,适用于不同应用场景。选择合适的框架需综合考虑开源与商业、数据分区支持、安全性、易用性和技术生态集成等因素。联邦学习已在医疗、金融等领域广泛应用,选择适配具体需求的框架对实现最优模型性能至关重要。
385 79
十大主流联邦学习框架:技术特性、架构分析与对比研究
|
27天前
|
机器学习/深度学习 缓存 自然语言处理
DeepSeek背后的技术基石:DeepSeekMoE基于专家混合系统的大规模语言模型架构
DeepSeekMoE是一种创新的大规模语言模型架构,融合了专家混合系统(MoE)、多头潜在注意力机制(MLA)和RMSNorm归一化。通过专家共享、动态路由和潜在变量缓存技术,DeepSeekMoE在保持性能的同时,将计算开销降低了40%,显著提升了训练和推理效率。该模型在语言建模、机器翻译和长文本处理等任务中表现出色,具备广泛的应用前景,特别是在计算资源受限的场景下。
447 29
DeepSeek背后的技术基石:DeepSeekMoE基于专家混合系统的大规模语言模型架构
|
24天前
|
机器学习/深度学习 算法 文件存储
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
74 10
YOLOv11改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
|
20天前
|
机器学习/深度学习 算法 文件存储
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
31 4
RT-DETR改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型
|
2月前
|
存储 缓存 关系型数据库
社交软件红包技术解密(六):微信红包系统的存储层架构演进实践
微信红包本质是小额资金在用户帐户流转,有发、抢、拆三大步骤。在这个过程中对事务有高要求,所以订单最终要基于传统的RDBMS,这方面是它的强项,最终订单的存储使用互联网行业最通用的MySQL数据库。支持事务、成熟稳定,我们的团队在MySQL上有长期技术积累。但是传统数据库的扩展性有局限,需要通过架构解决。
72 18
|
2月前
|
存储 Prometheus Cloud Native
分布式系统架构6:链路追踪
本文深入探讨了分布式系统中的链路追踪理论,涵盖追踪与跨度的概念、追踪系统的模块划分及数据收集的三种方式。链路追踪旨在解决复杂分布式系统中请求流转路径不清晰的问题,帮助快速定位故障和性能瓶颈。文中介绍了基于日志、服务探针和边车代理的数据收集方法,并简述了OpenTracing、OpenCensus和OpenTelemetry等链路追踪协议的发展历程及其特点。通过理解这些概念,可以更好地掌握开源链路追踪框架的使用。
103 41
|
2天前
|
机器学习/深度学习 存储
DeepSeek进阶开发与应用4:DeepSeek中的分布式训练技术
随着深度学习模型和数据集规模的扩大,单机训练已无法满足需求,分布式训练技术应运而生。DeepSeek框架支持数据并行和模型并行两种模式,通过将计算任务分配到多个节点上并行执行,显著提高训练效率。本文介绍DeepSeek中的分布式训练技术,包括配置与启动方法,帮助用户轻松实现大规模模型训练。数据并行通过`MirroredStrategy`同步梯度,适用于大多数模型;模型并行则通过`ParameterServerStrategy`异步处理大模型。DeepSeek简化了分布式环境配置,支持单机多卡和多机多卡等场景。
|
2月前
|
存储 缓存 安全
分布式系统架构7:本地缓存
这是小卷关于分布式系统架构学习的第10篇文章,主要介绍本地缓存的基础理论。文章分析了引入缓存的利弊,解释了缓存对CPU和I/O压力的缓解作用,并讨论了缓存的吞吐量、命中率、淘汰策略等属性。同时,对比了几种常见的本地缓存工具(如ConcurrentHashMap、Ehcache、Guava Cache和Caffeine),详细介绍了它们的访问控制、淘汰策略及扩展功能。
85 6
|
2月前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
101 7