从零写一个时间序列数据库
另一个难题的使命是当磁盘上的数据被更新或删除去后修改其索引。凡是,最简朴的要领是从头计较并写入,可是要担保数据库在此时代可查询且具有同等性。V3 存储体系通过每块上具有的独立不行变索引来办理这一题目,该索引仅通过压缩时的重写来举办修改。只有可变块上的索引必要被更新,它完全生涯在内存中。 基准测试我从存储的基准测试开始了起源的开拓,它基于实际天下数据齐集提取的约莫 440 万个序列描写符,并天生合成数据点以输入到这些序列中。这个阶段的开拓仅仅测试了单独的存储体系,对付快速找到机能瓶颈和高并发负载场景下的触发死锁至关重要。 在完成观念性的开拓实验之后,该基准测试可以或许在我的 Macbook Pro 上维持每秒 2000 万的吞吐量 —— 而且这都是在打开着十几个 Chrome 的页面和 Slack 的时辰。因此,尽量这听起来都很棒,它这也表白敦促这项测试没有的进一步代价(可能是没有在高随机情形下运行)。事实,它是合成的数据,因此在除了精采的第一印象外没有多大代价。比起最初的计划方针跨越 20 倍,是时辰将它陈设到真正的 Prometheus 处事器上了,为它添加更多实际情形中的开销和场景。 我们现实上没有可重现的 Prometheus 基准测试设置,出格是没有对付差异版本的 A/B 测试。亡羊补牢为时不晚,不外此刻就有一个了! 我们的器材可以让我们声明性地界说基准测试场景,然后陈设到 AWS 的 Kubernetes 集群上。尽量对付全面的基准测试来说不是最好情形,但它必定比 64 核 128GB 内存的专用裸机处事器更能反应出我们的用户群体。 我们陈设了两个 Prometheus 1.5.2 处事器(V2 存储体系)和两个来自 2.0 开拓分支的 Prometheus (V3 存储体系)。每个 Prometheus 运行在配备 SSD 的专用处事器上。我们将横向扩展的应用陈设在了事变节点上,而且让其袒露典范的微处事怀抱。另外,Kubernetes 集群自己和节点也被监控着。整套体系由另一个 Meta-Prometheus 所监视,它监控每个 Prometheus 的康健状况和机能。 为了模仿序列分流,微处事按期的扩展和紧缩来移除旧的 pod 并衍生新的 pod,天生新的序列。通过选择“典范”的查询来模仿查询负载,对每个 Prometheus 版本都执行一次。 总体上,伸缩与查询的负载以及采样频率极大的超出了 Prometheus 的出产陈设。譬喻,我们每隔 15 分钟换出 60% 的微处究竟例去发生序列分流。在当代的基本办法上,一天仅约莫会产生 1-5 次。这就担保了我们的 V3 计划足以处理赏罚将来几年的事变负载。就功效而言,Prometheus 1.5.2 和 2.0 之间的机能差别在极度的情形下会变得更大。 总而言之,我们每秒从 850 个方针里网络约莫 11 万份样本,每次袒露 50 万个序列。 在此体系运行一段时刻之后,我们可以看一下数字。我们评估了两个版本在 12 个小时之后达到稳按时的几个指标。
堆内存行使(GB) 内存资源的行使对用户来说是最为困扰的题目,由于它相对的不行猜测且也许导致历程瓦解。 显然,查询的处事器正在耗损内存,这很洪流平上归罪于查询引擎的开销,这一点可以看成往后优化的主题。总的来说,Prometheus 2.0 的内存耗损镌汰了 3-4 倍。约莫 6 小时之后,在 Prometheus 1.5 上有一个明明的峰值,与我们配置的 6 小时的保存界线相对应。由于删除操纵本钱很是高,以是资源耗损急剧晋升。这一点在下面几张图中均有浮现。 CPU 行使(焦点/秒) 相同的模式也表此刻 CPU 行使上,可是查询的处事器与非查询的处事器之间的差别尤为明明。每秒获取约莫 11 万个数据必要 0.5 焦点/秒的 CPU 资源,比起评估查询所耗费的 CPU 时刻,我们的新存储体系 CPU 耗损可忽略不计。总的来说,新存储必要的 CPU 资源镌汰了 3 到 10 倍。 磁盘写入(MB/秒) 迄今为止最引人注目和意想不到的改造示意在我们的磁盘写入操作率上。这就清晰的声名白为什么 Prometheus 1.5 很轻易造成 SSD 消费。我们看到最初的上升产生在第一个块被耐久化到序列文件中的时期,然后一旦删除操纵激发了重写就会带来第二个上升。令人惊奇的是,查询的处事器与非查询的处事器表现出了很是差异的操作率。 在另一方面,Prometheus 2.0 每秒仅向其预写日记写入约莫一兆字节。当块被压缩到磁盘时,写入按期地呈现峰值。这在总体上节减了:惊人的 97-99%。 磁盘巨细(GB) 与磁盘写入亲近相干的是总磁盘空间占用量。因为我们对样本(这是我们的大部门数据)险些行使了沟通的压缩算法,因此磁盘占用量该当沟通。在更为不变的体系中,这样做很洪流平上是正确地,可是由于我们必要处理赏罚高的序列分流,以是还要思量每个序列的开销。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |