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

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月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;

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


相关文章
|
17天前
|
存储 JSON 数据库
Elasticsearch 分布式架构解析
【9月更文第2天】Elasticsearch 是一个分布式的搜索和分析引擎,以其高可扩展性和实时性著称。它基于 Lucene 开发,但提供了更高级别的抽象,使得开发者能够轻松地构建复杂的搜索应用。本文将深入探讨 Elasticsearch 的分布式存储和检索机制,解释其背后的原理及其优势。
68 5
|
3天前
|
Cloud Native 持续交付 云计算
云原生技术:重塑软件开发与架构的未来
在云计算的推动下,云原生技术正逐渐成为软件开发的新标准,强调利用容器、服务网格、微服务等技术实现敏捷开发与高效运维。本文探讨了云原生技术如何重塑软件开发与架构的未来,介绍了其核心概念(如容器化、微服务架构、CI/CD)及优势(如敏捷性、可扩展性、成本效益),并讨论了其在金融服务、电子商务和物联网等领域的实际应用及面临的挑战。尽管存在技术复杂性和人才短缺等问题,云原生技术仍将成为软件开发的主流趋势。
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
赋能百业:多模态处理技术与大模型架构下的AI解决方案落地实践
【9月更文挑战第4天】赋能百业:多模态处理技术与大模型架构下的AI解决方案落地实践
赋能百业:多模态处理技术与大模型架构下的AI解决方案落地实践
|
1天前
|
运维 Cloud Native Devops
云原生技术:重塑现代IT架构的新引擎
在当今数字化转型的浪潮中,云原生技术以其敏捷、高效和可扩展的特性,正引领着一场IT架构的革命。本文旨在深入探讨云原生的概念、核心组件及其在现代企业中的应用价值,揭示其如何助力企业实现更快的创新速度、更高的资源利用率以及更优的用户体验。不同于传统的云计算模式,云原生从一开始就为云环境量身打造,通过容器化、微服务、DevOps等关键技术,解锁了软件开发和运维的新范式。
|
6天前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
17 3
|
6天前
|
人工智能 Kubernetes Cloud Native
深度对话 解锁阿里云分布式云原生技术落地新姿势
深度对话 解锁阿里云分布式云原生技术落地新姿势
深度对话 解锁阿里云分布式云原生技术落地新姿势
|
11天前
|
Cloud Native 持续交付 云计算
云原生技术在现代IT架构中的革新角色
随着数字化转型的浪潮席卷全球,企业对信息技术的需求日益增长。本文将探讨云原生技术如何推动现代IT架构的创新和优化,包括容器化、微服务架构、持续集成与持续部署(CI/CD)等核心概念。通过实际案例分析,我们将了解这些技术是如何帮助企业提升灵活性、加速产品上市时间并降低运营成本的。文章旨在为读者提供云原生技术的全面视角,揭示其在现代IT战略中不可或缺的地位。
|
14天前
|
Kubernetes Cloud Native Docker
云原生技术:容器化与微服务架构的融合之道
【9月更文挑战第4天】在数字化时代的浪潮下,企业追求敏捷、高效、可扩展的IT架构成为共识。云原生技术作为现代软件部署的黄金标准,其核心理念在于推动应用的快速迭代与无缝迁移。本文将深入探讨云原生技术的精髓——容器化与微服务架构如何相互促进,共同构建起适应云计算环境的应用生态系统。我们将通过实际案例,揭示如何在云平台上利用这些技术实现服务的解耦、弹性伸缩及自动化管理,进而提升企业的竞争力。
|
23天前
|
Kubernetes Cloud Native 开发者
云原生技术在现代IT架构中的应用与挑战
【8月更文挑战第27天】 随着云计算的飞速发展,云原生技术已经成为推动企业数字化转型的重要力量。本文将深入探讨云原生技术的核心概念、优势以及在实际应用中遇到的挑战,并通过具体代码示例展示如何利用云原生技术优化IT架构。
|
22天前
|
安全 网络安全 数据安全/隐私保护
云原生技术探索:容器化与微服务架构的实践之路网络安全与信息安全:保护数据的关键策略
【8月更文挑战第28天】本文将深入探讨云原生技术的核心概念,包括容器化和微服务架构。我们将通过实际案例和代码示例,展示如何在云平台上实现高效的应用部署和管理。文章不仅提供理论知识,还包含实操指南,帮助开发者理解并应用这些前沿技术。 【8月更文挑战第28天】在数字化时代,网络安全和信息安全是保护个人和企业数据的前线防御。本文将探讨网络安全漏洞的成因、加密技术的应用以及提升安全意识的重要性。文章旨在通过分析网络安全的薄弱环节,介绍如何利用加密技术和提高用户警觉性来构建更为坚固的数据保护屏障。