OceanBase资源规划及架构设计最佳实践

简介: 作为一款分布式云原生数据库,客户经常会问到的问题是“我如何规划我的OceanBase?”,“我如何通过现有的信息来设计OceanBase架构”,“我如何根据业务增长规划我的OceanBase数据库”这些问题随着现在大量客户新业务系统采用OceanBase而出现,那我们该如何通过一定的性能数据来进行规划客户的资源并且允许客户进行资源扩容而实现计算能力扩容又可以降低客户迁移成本呢,我们期望通过本文给出一些可参考的建议。

作为一款分布式云原生数据库,客户经常会问到的问题是“我如何规划我的OceanBase?”,“我如何通过现有的信息来设计OceanBase架构”,“我如何根据业务增长规划我的OceanBase数据库”这些问题随着现在大量客户新业务系统采用OceanBase而出现,那我们该如何通过一定的性能数据来进行规划客户的资源并且允许客户进行资源扩容而实现计算能力扩容又可以降低客户迁移成本呢,我们期望通过本文给出一些可参考的建议。

一.OceanBase资源管理说明

需要首先了解OceanBase如何对资源进行管理,这样才能更好的根据实际需求来设计实际架构方案。

1.OceanBase跨服务器资源使用

OceanBase中具体的管理对象为租户,租户是一个逻辑概念,在 OceanBase 里是资源分配的单位。

可以看作OB-oracle 模式租户相当于Oracle DB一套,OB-mysql 模式相当于mysql instace。

每个租户利用不同的资源池(Resource Pool)来限定所占资源量,而资源池的定义由资源单元规格(Resource Unit )定义具体多少C多少G内存。Resource Unit 的资源规格定义是不能超过单OBserver可分配规格。

当了解OceanBase 架构后,Resource Pool 是可以设置多个Resource Unit 提供服务的,以图为例,一个典型的4-4-4架构OceanBase集群,绿色的Unit 在一个zone中有2个,这2个Unit 组合起来一起累加资源量为整个Resource Pool资源量

至此可以看到OceanBase 的一个租户是可以跨OB服务器来占用资源,这样OceanBase的租户也可以跨OB服务器来存储数据表

2.OceanBase跨服务器资源的影响

分布式事务

OceanBase使用全局一致性锁来保证当出现跨OB服务器事务时,全局一致。有了全局一致性锁,分区表的全局索引成为可能,并且可以实现跨OB服务器的分布式事务。

OceanBase默认表或者分区表的某个分区称为partition,partition无法再分割,所以不会出现一个表跨OB服务器的情况。

什么时候会出现分布式事务呢?

一般来说,当一个租户资源跨OB服务器时,就有可能发生:

例如 事务A 涉及表X和表Y,表X在OB1而表Y在OB2,则事务A就会出现分布式事务

例如 分区表W下有多个分区P1...Pn。则有可能发生P1和P2 不在一个OB服务器的情况,这样在事务跨分区时会出现分布式事务。

一般来说都要尽量避免出现分布式事务,本身全局一致性在抗高并发会导致性能的下降。

分库分表

分库分表一般采用ODP组件来进行配置,ODP对应用侧是一个逻辑表,而对物理侧一般来说对应的物理表拆分根据规则可以描述为:

n租户x库y表。表示逻辑库分布在n个租户上。

如果不同租户分布在不同OBserver上提供服务,则逻辑表实质也可以跨多服务器。

此时需要注意,针对ODP逻辑表的事务,一般需要和SOFA的分布式事务相结合进行。

在分库分表场景中,一般来说OceanBase租户不会将Resource Unit 设置为大于1,这样主要为了防止出现中间件层分布式事务处理,而数据库层又出现跨OBserver的分布式事务。

所以根据这个原则,分库分表场景中OceanBase物理租户无法跨OB服务器,每个租户可用最大自资源限定为服务器最大可承载量。

二.OceanBase资源规划考虑点

1. 数据分片如何实施

目前OceanBase能提供的数据分片方案有2种方案:分区表和借助ODP产品的分库分表方案。

根据实际经验来说,不同的方案适用的场景也是有不同:

分区表适合场景

OceanBase的分区表和Oracle分区表类似提供了Range,Hash,List等分区方案。

适用数据表有明确的时间属性,并且随时间数据量增大:例如交易历史表,交易历史明细表,比较适合使用Range时间分区,利用Range时间分区可以使得数据表有明确的生命周期维护方案。

ODP分库分表适合场景

ODP产品一般来说,数据迁移不方便,而采用逻辑表1张对接实际n张物理表,

适用数据量很大而采用类似ID进行分片例如人员信息表、物品信息表。

对数据增长有预期,提前进行规划也可以考虑ODP。

一些限制条件

a.客户实施具体需求,而ODP目前只支持OB-mysql,而分区表则都可以

b.去O场景中如果原应用不经过改造,一般平迁数据库的话,使用OB-oracle适配,则只能使用分区表

c.ODP对应的物理实际租户我们设定是不会跨OB服务器(如果可以跨服务器则场景极为复杂)

d.而分区表不同的分区可以跨不同OB服务器

2. 如何满足业务增长量需求

在实际业务数据库架构设计时,需要综合考虑客户业务增长需求,提前为客户预估容量或者预留扩容空间。

而本身OB服务器单服务器性能是有上限的,这个决定了数据分片规划和实际OB服务器承载量--是否需要跨OB服务器实现

另外需要注意的是如果采用ODP分库分表方案,1个业务多租户情况下,由于1个租户设置为不跨OB服务器,这样相当于极限情况下最终多少个租户=最终多少OB服务器。

3. 是否会突破单机性能需求

从以上可以看到,OB服务器的单服务器承载量也对规划有相当大的影响。

以现在标准OB阿里云机型来说

以经验来说,基本资源瓶颈是CPU和内存,磁盘一般不会成为瓶颈

PV62.22 适用非常多客户的阿里云底座场景机器,一般单OB服务器可以用80C 700G左右资源可分配给业务使用。

(请注意⚠️ 由于不同的时间硬件配置不同,造成估算差异。例如Q5O1.22 机型则只有56C 384G左右内存。)

如果经过测算,业务量会突破单OB服务器或者需要额外需要数据分片,则需要规划时候同时考虑数据分片需求

以下列表列出了部分阿里云平台OceaenBase标准机型的硬件配置,

★机型

PV62.22 (中配)

PV62S3.22 (高配)

PN68M2P2.22

★服务器外观

机架式,2路服务器

机架式,2路服务器

机架式,2路服务器

★cpu规格

[Intel_Xeon_Platinum8260]*2

[Intel_Xeon_Platinum8260]*2

[Intel_Xeon_Gold5218]*2

★cpu核数

[24]*2

[24]*2

[16]*2

★cpu架构

x86_64

x86_64

x86_64

★内存(GB)

768

768

384

★内存规格

ECC DDR4 RDIMM 频率 ≥2666MHz

ECC DDR4 RDIMM 频率 ≥2666MHz

ECC DDR4 RDIMM 频率 ≥2666MHz

★内置硬盘

240G[240G_sata_ssd]*1 3840G[3840G_nvme_ssd]*4

240G[240G_sata_ssd]*1 3840G[3840G_nvme_ssd]*12

240G[240G_sata_ssd]*2 8000G[8T_sata_hdd]*12 1920G[1920G_nvme_ssd]*2

★硬盘规格

NVMe_SSD: 企业级主流品牌型号,接口类型为U.2 盘或 AIC 皆可 擦写寿命: >=0.7DWPD 5年; 带掉电保护功能:即有连续数据写入的情况下,异常掉电不丢数据 SATA_SSD: 市场主流品牌,企业级SATA SSD硬盘(普通SATA SSD或m.2 SATA SSD, >= 240G)

NVMe_SSD: 企业级主流品牌型号,接口类型为U.2 盘或 AIC 皆可 擦写寿命: >=0.7DWPD 5年; 带掉电保护功能:即有连续数据写入的情况下,异常掉电不丢数据 SATA_SSD: 市场主流品牌,企业级SATA SSD硬盘(普通SATA SSD或m.2 SATA SSD, >= 240G)

NVMe_SSD: 企业级主流品牌型号,接口类型为U.2 盘或 AIC 皆可 擦写寿命: >=0.7DWPD 5年; 带掉电保护功能:即有连续数据写入的情况下,异常掉电不丢数据 SATA_HDD: 企业级SATA硬盘,>=7200rpm SATA_SSD: 市场主流品牌,企业级SATA SSD硬盘(普通SATA SSD或m.2 SATA SSD, >= 240G)

★磁盘控制器类型

sas卡(none-raid)*1 或板载AHCI,non-raid直通,满足机型磁盘配置需求,采用板载AHCI直出或以下芯片型号的标准卡或自研卡:SAS3008it、SAS3408it、SAS3216、SAS3416it

sas卡(none-raid)*1 或板载AHCI,non-raid直通,满足机型磁盘配置需求,采用板载AHCI直出或以下芯片型号的标准卡或自研卡:SAS3008it、SAS3408it、SAS3216、SAS3416it

sas卡(none-raid)*1 或板载AHCI,non-raid直通,满足机型磁盘配置需求,采用板载AHCI直出或以下芯片型号的标准卡或自研卡:SAS3008it、SAS3408it、SAS3216、SAS3416it

★网卡要求

10GE: 双端口10G光口独立网卡,主控芯片型号Intel 82599,并满配兼容多模模块(SFP+),支持PXE,支持DPDK应用(兼容2.2版本),支持SRIOV技术,支持特定五元组(源IP地址,源端口,目的IP地址,目的端口和传输层协议)分流到SRIOV VF。

10GE: 双端口10G光口独立网卡,主控芯片型号Intel 82599,并满配兼容多模模块(SFP+),支持PXE,支持DPDK应用(兼容2.2版本),支持SRIOV技术,支持特定五元组(源IP地址,源端口,目的IP地址,目的端口和传输层协议)分流到SRIOV VF。

10GE: 双端口10G光口独立网卡,主控芯片型号Intel 82599,并满配兼容多模模块(SFP+),支持PXE,支持DPDK应用(兼容2.2版本),支持SRIOV技术,支持特定五元组(源IP地址,源端口,目的IP地址,目的端口和传输层协议)分流到SRIOV VF。

★网口数量

10GE*2

10GE*2

10GE*2

电源

1. 220VAC/240HVDC交直流兼容电源 * 2 2. 电源线根据机房环境来选择,如国标/美标/C14

1. 220VAC/240HVDC交直流兼容电源 * 2 2. 电源线根据机房环境来选择,如国标/美标/C14

 1. 220VAC/240HVDC交直流兼容电源 * 2 2. 电源线根据机房环境来选择,如国标/美标/C14

★管理维护功能

提供基于Web的远程管理控制、配备硬件监控、远程管理功能;支持IPMI2.0标准。提供IKVM功能,实现远程KVM功能;独立管理口100%兼容千兆或百兆交换网络,通过管理口实现远程开关机、重启、网络安装操作系统等操作。

提供基于Web的远程管理控制、配备硬件监控、远程管理功能;支持IPMI2.0标准。提供IKVM功能,实现远程KVM功能;独立管理口100%兼容千兆或百兆交换网络,通过管理口实现远程开关机、重启、网络安装操作系统等操作。

提供基于Web的远程管理控制、配备硬件监控、远程管理功能;支持IPMI2.0标准。提供IKVM功能,实现远程KVM功能;独立管理口100%兼容千兆或百兆交换网络,通过管理口实现远程开关机、重启、网络安装操作系统等操作。

★云平台兼容性

与阿里云平台兼容,通过阿里云专有云平台认证,各厂商机型认证情况见阿里云官网链接:https://www.aliyun.com/product/apsara-stack 页面最下方“合作伙伴->硬件认证”

与阿里云平台兼容,通过阿里云专有云平台认证,各厂商机型认证情况见阿里云官网链接:https://www.aliyun.com/product/apsara-stack 页面最下方“合作伙伴->硬件认证”

与阿里云平台兼容,通过阿里云专有云平台认证,各厂商机型认证情况见阿里云官网链接:https://www.aliyun.com/product/apsara-stack页面最下方“合作伙伴->硬件认证”

三.OceanBase某客户资源规划案例

一般来说实际进行资源规划,容量规划等工作需要采集考虑点的信息和客户实际应用情况,综合进行考虑。有些数据明显偏离正常范围建议和客户进行深入沟通后解读,了解数据是否确实有误。

1. 客户信息采集沟通汇总

某客户需要提前进行业务容量规划,并且提前针对OceeanBase服务进行资源规划

经过和客户沟通和业务实际情况了解,汇总了业务,项目实际信息获得了以下信息:

客户采用单元化架构实施

客户使用单元化架构决定了整体架构实施锁定分库分表ODP组件,客户会根据实际情况来进行逻辑/物理表拆分。

这样的策略导致和分区表有明显区别了

客户分库分表策略决定后,考虑采用1逻辑表=100分物理表形式

这里需要决定的是分多少OceanBase租户,由于单个租户无法跨OBserver分配物理资源,所以对于客户场景来说,规划多少租户决定了对应可使用最大OBserver数量,也决定了实际资源最大量。

客户性能数据汇总

客户反馈当前业务系统QPS大致为15W左右,已经考虑峰值情况,预计年均增长率为20%

结合数据量情况汇总得到

业务系统数据增长情况,以20%的增长率

联机QPS: 万次/s

联机每日写入数据GB

存量数据TB

批量QPS: 万次/s

季度结息日写入数据GB

2019年

15

10

5.85

62

70

预估3年

25.92

17.28

10.11

62

120.96

预估5年

37.32

24.88

17.47

62

174.18

预估10年

92.88

61.92

36.22

62

433.42

*客户需要预估10年用量,则通过计算得到表如上所示。

2. 客户硬件信息计算能力

客户预计采用Q5O1 机型,单OBserver提供了 56C 384g内存,系统占用部分资源后实际业务使用48C 300G左右。

磁盘部分考虑到OceanBase对数据压缩率及磁盘配置,数据量不成为瓶颈,所以只计算CPU和内存,而通过计算CPU 性能按一定经验比例可以获得内存使用量配置。

根据实际经验来说,OceanBase单Core 提供了QPS 近1000-1500左右,客户重要生产环境按保守1000估算计算

通过列表可以计算得到n台OBserver实际提供的总容量和性能容量情况

OBserver数量(单zone OBServer数量)

最大可扩展CPU

可分配内存

最大可写入磁盘容量(8块800G的SSD盘)(单位:TB)

每日安全写入数据量

QPS(以1000/c估算) 单位:万次/s

(单位:颗)

(单位GB)

(单位:GB)

17

833

4080

81.6

1632

83.3

18

882

4320

86.4

1728

88.2

19

931

4560

91.2

1824

93.1

20

980

4800

96

1920

98

3. 客户容量架构规划

根据以上信息可以看到,20OBserver单Zone 提供的QPS容量可以满足客户10年总量需求,而其他数据容量等信息已经足够客户业务数据量。

所以综合来看,客户如果按照当前规划,最终10年以后需要达到单Zone20台OBserver。

由于ODP分库分表规划中租户无法跨OBserver,那意味着需要20租户。

由于考虑到后期数据同步等工作影响,应该在规划中提前规划将业务分布到20租户中。

所以客户最终的规划业务采用20租户,x分库y表,具体分库和分表根据实际单元化化单元量决定。

相关文章
|
2月前
|
消息中间件 缓存 监控
优化微服务架构中的数据库访问:策略与最佳实践
在微服务架构中,数据库访问的效率直接影响到系统的性能和可扩展性。本文探讨了优化微服务架构中数据库访问的策略与最佳实践,包括数据分片、缓存策略、异步处理和服务间通信优化。通过具体的技术方案和实例分析,提供了一系列实用的建议,以帮助开发团队提升微服务系统的响应速度和稳定性。
|
3月前
|
存储 容灾 关系型数据库
OceanBase 高可用性架构解析
【8月更文第31天】在大数据和云计算蓬勃发展的今天,数据库作为数据存储的核心组件,其稳定性和可靠性直接影响到整个系统的性能。OceanBase 是由阿里巴巴集团自主研发的一款分布式关系型数据库系统,旨在为大规模在线交易处理(OLTP)场景提供高性能、高可用性的解决方案。本文将深入探讨 OceanBase 是如何通过其独特的架构设计来确保数据的高可用性和容灾能力。
218 0
|
9天前
|
监控 Cloud Native 持续交付
云原生架构下微服务的最佳实践与挑战####
【10月更文挑战第20天】 本文深入探讨了云原生架构在现代软件开发中的应用,特别是针对微服务设计模式的最优实践与面临的主要挑战。通过分析容器化、持续集成/持续部署(CI/CD)、服务网格等关键技术,阐述了如何高效构建、部署及运维微服务系统。同时,文章也指出了在云原生转型过程中常见的难题,如服务间的复杂通信、安全性问题以及监控与可观测性的实现,为开发者和企业提供了宝贵的策略指导和解决方案建议。 ####
34 5
|
9天前
|
Kubernetes Cloud Native 持续交付
云原生架构下的微服务设计原则与最佳实践##
在数字化转型的浪潮中,云原生技术以其高效、灵活和可扩展的特性成为企业IT架构转型的首选。本文深入探讨了云原生架构的核心理念,聚焦于微服务设计的关键原则与实施策略,旨在为开发者提供一套系统性的方法论,以应对复杂多变的业务需求和技术挑战。通过分析真实案例,揭示了如何有效利用容器化、持续集成/持续部署(CI/CD)、服务网格等关键技术,构建高性能、易维护的云原生应用。文章还强调了文化与组织变革在云原生转型过程中的重要性,为企业顺利过渡到云原生时代提供了宝贵的见解。 ##
|
8天前
|
监控 安全 Serverless
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
19 1
|
11天前
|
监控 安全 Java
构建高效后端服务:微服务架构深度解析与最佳实践###
【10月更文挑战第19天】 在数字化转型加速的今天,企业对后端服务的响应速度、可扩展性和灵活性提出了更高要求。本文探讨了微服务架构作为解决方案,通过分析传统单体架构面临的挑战,深入剖析微服务的核心优势、关键组件及设计原则。我们将从实际案例入手,揭示成功实施微服务的策略与常见陷阱,为开发者和企业提供可操作的指导建议。本文目的是帮助读者理解如何利用微服务架构提升后端服务的整体效能,实现业务快速迭代与创新。 ###
38 2
|
3月前
|
存储 SQL 关系型数据库
OceanBase的架构特点
【8月更文挑战第10天】OceanBase的架构特点
221 66
|
3月前
|
存储 关系型数据库 MySQL
OceanBase的架构
【8月更文挑战第9天】OceanBase的架构
230 59
|
2月前
|
Kubernetes Docker 微服务
构建高效的微服务架构:基于Docker和Kubernetes的最佳实践
在现代软件开发中,微服务架构因其灵活性和可扩展性而受到广泛青睐。本文探讨了如何利用Docker和Kubernetes来构建高效的微服务架构。我们将深入分析Docker容器的优势、Kubernetes的编排能力,以及它们如何结合实现高可用性、自动扩展和持续部署。通过具体的最佳实践和实际案例,读者将能够理解如何优化微服务的管理和部署过程,从而提高开发效率和系统稳定性。
|
3月前
|
JSON 测试技术 API
探索微服务架构下的API设计最佳实践
微服务架构的普及带来了开发灵活、可扩展的系统的新机遇,但同时也对API设计提出了更高的要求。有效的API设计不仅影响系统的可维护性和可扩展性,还直接影响开发效率和用户体验。本文将深入探讨在微服务架构下如何设计高效、可靠的API,重点介绍RESTful API设计原则、版本控制策略、身份认证机制及错误处理最佳实践,并结合实际案例提供具体的实现建议。

热门文章

最新文章