关于数据库:OpenMLDB-线上引擎资源需求预估模型助你快速预估资源消耗

32次阅读

共计 2113 个字符,预计需要花费 6 分钟才能阅读完成。

一、背景

OpenMLDB 线上计算的最大劣势为能够低提早(毫秒级)高效解决实时特色计算申请。其中,为了达到低提早,OpenMLDB 默认应用了基于内存的存储引擎。然而,当业务增长时,对于内存资源耗费以及拜访吞吐需要的压力也会回升。本篇文章次要介绍基于 内存存储引擎 的资源预估(磁盘引擎见最初的阐明),能够帮你更好的预估、配置用于部署 OpenMLDB 的机器资源。

二、模型概览

2.1 参数阐明

为了不便表述,咱们先把所有应用到的参数符号以及含意汇总在以下表格。

表一:预估模型所应用的的符号和意义

2.2 概览

OpenMLDB 的资源瓶颈个别会是在内存耗费和吞吐能力上,因而本篇文章重点介绍这两个资源的预估,在最初对其余资源做一个简略介绍:

  • 内存耗费:内存是个别状况下 OpenMLDB 的资源瓶颈。
  • 吞吐能力:每台机器的吞吐能力无限(在内存不是资源瓶颈的前提下,个别 CPU 会是吞吐能力的瓶颈),如果业务增长需要更多的吞吐,则须要进行程度扩容,减少机器数量。

简略期间,在程度扩容下,咱们假如所有机器的配置都是一样旳(如不一样原理相似)。因而,能够应用如下公式来估算针对某一场景所须要的机器台数 n

咱们能够看到,因为 MEM_PER_SERVER 为一个常数,因而整个模型中最重要的是估算出内存耗费总量 mem_total,以及吞吐能力 qps_totalqps_per_server,以下咱们别离介绍。

三、内存预估模型

在绝大多数的状况下,内存耗费会是资源的瓶颈(而非吞吐),咱们首先来看内存耗费预估。咱们提供一基于教训的疾速预估模型,以及一个较为简单的剖析型模型。

3.1 内存预估教训模型

咱们首先给出一个基于教训预估的模型。该模型实用于对数据规模和业务场景还没有明确需要的前提下,想大抵预估一下内存占用的场景。对于大部分的时序数据场景,该公式能够预估内存耗费最多局部。即理论的内存耗费个别会略高于预估值。如果想得到较为精确的预估,请参考前面 3.2 章节的分析模型。

基于表一的符号定义,该教训模型表示如下:

能够看到,该公式次要和数据 schema,数据规模,以及索引个数无关。如果索引个数如果较难预估,基本上能够依照教训认为,在广泛状况下,主表的索引在三个左右,每张副表有一个索引。

3.2 内存预估剖析型模型

内存耗费也能够基于实现原理剖析登程,进行较为精确的预测。然而该预测须要较多的信息,计算过程也较为简单,在没有深刻应用之前较难操作。适宜于上线生产环境之前,须要对资源做精细化估算应用。

该分析模型波及到了两个额定的参数

  • C:该参数对于不同类型的表格取值不同。如果是 latest 和 absorlat 表,取值为 70;如果对于 absolute 表以及 absandlat 表,取值为 74。不同表格和 TTL 设置无关,见阐明 https://openmldb.ai/docs/zh/m… 留神,这里 C 的取值 70 和 74,是两个和编码格局无关的 overhead,其实也是预估值。准确值的计算形式较为简单,并且在不同场景下也会有所区别,在这里不做开展形容。
  • K: 如果不同索引的数据落在同一节点和分片下, 他们会共享数据(然而这个概率不大)。因而 K 代表了实在寄存的数据份数,其可能的取值范畴为 [1, n_index]

留神,这个模型假如基于内存存储引擎(磁盘存储引擎阐明见本文最初),没有关上预聚合性能下的耗费。如果关上了预聚合,会有额定的大量内存耗费,相比拟于上述的主体耗费根本能够忽略不计。

四、吞吐预估模型

尽管大部分状况下内存会是瓶颈,在某些高并发场景下,吞吐也可能成为资源瓶颈。

首先,对于吞吐的需要 qps_total,该参数取决于业务应用方,不在这里做开展。

对于每台机器提供的吞吐能力(qps_per_server),因为吞吐会和机器配置、数据集、SQL 复杂程度、以及提早要求强相干,较难通过剖析的形式给出。以下倡议两种预估形式:

  • 实测必定是较为精确的预估形式,然而在我的项目初期较难施行
  • 能够通过咱们的性能报告 实时引擎性能测试报告(第一版),进行教训预估。该测试应用了三台机器,其基准测试失去在 TP999 < 10ms 以内的提早下,折算成单台 QPS 在 8,000 左右,因而能够应用其作为参考值 qps\_per\_server=8,000

五、其余资源预估

5.1 磁盘空间

对于内存存储引擎来说,尽管索引和数据寄存于内存,然而其 binlog 以及 snapshot 仍然须要寄存在磁盘。磁盘空间占用会和数据量无关,个别举荐配置为内存预估值的 三倍

5.2 CPU

CPU 资源次要和吞吐能力相干。绝大部分状况,资源瓶颈在内存耗费,CPU 并不会成为瓶颈。只有在多数状况下 CPU 可能会成为瓶颈,比方窗口数据量微小(百万级别)并且无奈应用预聚合优化、或者业务对于 QPS 需要极高。在这些状况下,须要进行程度扩容。

5.3 网络带宽

OpenMLDB 个别状况下并不是一个网络 IO 密集型的程序,对于网络没有特地要求。一般 10Gbps 网络带宽应该足够满足条件。

5.4 磁盘存储引擎

到此为止,咱们探讨的都是基于默认的内存存储引擎。如果是基于磁盘存储引擎(HDD 或者 SSD),则对于内存的压力较小,磁盘须要的空间数量大略是本文预估的内存消耗量的 2-3 倍。

正文完
 0