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表,具体分库和分表根据实际单元化化单元量决定。

相关文章
|
21天前
|
消息中间件 缓存 监控
优化微服务架构中的数据库访问:策略与最佳实践
在微服务架构中,数据库访问的效率直接影响到系统的性能和可扩展性。本文探讨了优化微服务架构中数据库访问的策略与最佳实践,包括数据分片、缓存策略、异步处理和服务间通信优化。通过具体的技术方案和实例分析,提供了一系列实用的建议,以帮助开发团队提升微服务系统的响应速度和稳定性。
|
2月前
|
存储 容灾 关系型数据库
OceanBase 高可用性架构解析
【8月更文第31天】在大数据和云计算蓬勃发展的今天,数据库作为数据存储的核心组件,其稳定性和可靠性直接影响到整个系统的性能。OceanBase 是由阿里巴巴集团自主研发的一款分布式关系型数据库系统,旨在为大规模在线交易处理(OLTP)场景提供高性能、高可用性的解决方案。本文将深入探讨 OceanBase 是如何通过其独特的架构设计来确保数据的高可用性和容灾能力。
143 0
|
2月前
|
存储 SQL 关系型数据库
OceanBase的架构特点
【8月更文挑战第10天】OceanBase的架构特点
197 66
|
2月前
|
存储 关系型数据库 MySQL
OceanBase的架构
【8月更文挑战第9天】OceanBase的架构
194 59
|
26天前
|
Kubernetes Docker 微服务
构建高效的微服务架构:基于Docker和Kubernetes的最佳实践
在现代软件开发中,微服务架构因其灵活性和可扩展性而受到广泛青睐。本文探讨了如何利用Docker和Kubernetes来构建高效的微服务架构。我们将深入分析Docker容器的优势、Kubernetes的编排能力,以及它们如何结合实现高可用性、自动扩展和持续部署。通过具体的最佳实践和实际案例,读者将能够理解如何优化微服务的管理和部署过程,从而提高开发效率和系统稳定性。
|
2月前
|
JSON 测试技术 API
探索微服务架构下的API设计最佳实践
微服务架构的普及带来了开发灵活、可扩展的系统的新机遇,但同时也对API设计提出了更高的要求。有效的API设计不仅影响系统的可维护性和可扩展性,还直接影响开发效率和用户体验。本文将深入探讨在微服务架构下如何设计高效、可靠的API,重点介绍RESTful API设计原则、版本控制策略、身份认证机制及错误处理最佳实践,并结合实际案例提供具体的实现建议。
|
3月前
|
Kubernetes 负载均衡 API
构建高效后端服务:微服务架构的最佳实践
【7月更文挑战第30天】在现代软件开发中,微服务架构已成为设计可扩展、灵活和容错后端系统的首选方法。本文深入探讨了微服务架构的核心概念、设计原则以及实施过程中的关键技术选择。通过分析实际案例,我们揭示了成功部署微服务的最佳实践,包括服务划分、通信协议、数据一致性保障等关键方面,旨在为开发者提供一套实用的指南,以构建和维护高性能的后端服务。
46 4
|
2月前
|
人工智能 Kubernetes 持续交付
Kubernetes环境下基于微服务架构的容器化AI应用部署与管理最佳实践
【8月更文第19天】随着AI技术的快速发展,越来越多的企业开始将AI应用部署到生产环境。然而,AI应用往往包含大量的组件和服务,这使得其部署和管理变得非常复杂。微服务架构和容器化技术(如Docker)结合Kubernetes集群管理,为解决这些问题提供了强大的工具。本文将介绍如何在Kubernetes环境中部署和管理基于微服务架构的容器化AI应用。
73 0
|
4月前
|
SQL 存储 关系型数据库
深入OceanBase内部机制:系统架构与组件精讲
深入OceanBase内部机制:系统架构与组件精讲
深入OceanBase内部机制:系统架构与组件精讲
|
3月前
|
运维 监控 负载均衡
探索微服务架构的演变与最佳实践
【6月更文挑战第30天】微服务架构作为现代软件开发领域的一个热门话题,其发展经历了从萌芽到成熟的多个阶段。本文将深入探讨微服务架构的演变历程,包括其定义、核心原则以及与传统单体架构的对比。同时,文章还将分享一系列经过验证的最佳实践,帮助开发者在构建和维护微服务时避免常见陷阱,确保系统的可扩展性、灵活性和可维护性。
120 1