阿里云InfluxDB®之不限数据库数量

简介: 作为阿里在APM和IOT领域的重要布局,时序数据库承载着阿里对于物理网和未来应用监控市场的未来和排头兵,作为业内排名第一的时序数据库InfluxDB,其在国内和国际都拥有了大量的用户,阿里适逢其时,重磅推出了阿里云 InfluxDB®。

简介

    作为阿里在APM和IOT领域的重要布局,时序数据库承载着阿里对于物理网和未来应用监控市场的未来和排头兵,作为业内排名第一的时序数据库InfluxDB,其在国内和国际都拥有了大量的用户,阿里适逢其时,重磅推出了阿里云 InfluxDB®。
         限于篇幅,本文仅就InfluxDB的其中一个功能:不限数据库数量进行介绍。

为什么开发不限数据库数量的功能

这得从InfluxDB的snapshot机制说起:

Snapshot机制

InfluxDB采用的是TSM引擎,TSM 存储引擎主要由几个部分组成: cache、wal、tsm file、compactor

TSM存储引擎,其核心思想类似于LSM Tree,它会将最近的数据缓存在磁盘中,在达到预设的阈值之后就会触发snapshot,也就是我们常说的快照刷盘。
使用内存的作用是为了缓存,加速查询。snapshot主要是解决数据持久化落盘问题。

开源的InfluxDB为什么需要限制数据库的数量?

因为在开源的方案中,Cache是否做snapshot和限制写入是仅仅以单个cache占用大小来判断的。而这个大小的阈值是一个预先配置的固定参数:
详见配置文件:

# CacheMaxMemorySize is the maximum size a shard's cache can
# reach before it starts rejecting writes.
# Valid size suffixes are k, m, or g (case insensitive, 1024 = 1k).
# Values without a size suffix are in bytes.
# cache-max-memory-size = "1g"

# CacheSnapshotMemorySize is the size at which the engine will
# snapshot the cache and write it to a TSM file, freeing up memory
# Valid size suffixes are k, m, or g (case insensitive, 1024 = 1k).
# Values without a size suffix are in bytes.
# cache-snapshot-memory-size = "25m"

默认情况下:cache-max-memory-size = "1g" ,而cache-snapshot-memory-size = "25m", 单单凭借着两个阈值的对于不同的用户场景而言是很难做到好的平衡的。尤其是对于数据库个数不确定的情况下(例如增加了数据库,减少了数据库等情况)很难适应。比方说,为了提高内存的利用率,我们倾向于一开始就设定较高的阈值,结果当某一天,用户的数据库数量增长时,可能会导致整体的内存占用超出,从而进一步导致InfluxDB服务不稳定的情况的出现。除此之外,不同的用户,使用的数据库数量本身是不一样的,如果设置一个统一的阈值,这显然无法将多数用户的内存利用率保持在一个较优的水平上。

阿里云InfluxDB®的解决方案

方案

基于前面的分析,我们知道,需要一套整体的全局解决方案,来适应不同的用户之间,以及同一个用户不同场景下的需求。
我们的处理方案主要思路是通过对于全局Cache的统计分析来做,具体的话分为两个部分:

在处理Write请求时:

image.png
写入请求时检查是否超出了全局内存控制的Limit阈值,如果超出,则直接返回错误。以全局限流的方式实现对于内存使用量上升趋势的控制,并以此来强化系统的稳定性。

在判定是否需要做snapshot时:

image.png

在判断是否需要做snapshot时,先判断全局的Cache占用的大小是否超出了阈值,如果没有,直接跳过snapshot。
只有在全局的Cache需要做snapshot && 单个cache也需要做snapshot的时候,才去触发snapshot。

效果

在我们阿里云的4c16g,8c32g,16c64g的机器上进行的对比测试中,与限制DB数的版本想比较,不限DB数之后,其实现的snapshot的机制其效果基本上等同于前者。但同时,在用户的数据库数据量进行变化的时候,又能够自适应的动态调整单个snapshot的阈值,效果符合我们的预期。同时我们发现,对于不同数据库之间内存占用差异明显的场合,还能够提升写入的阈值,从而提升写入性能。

总结

阿里云InfluxDB基于开源InfluxDB做了很多提升与完善。本文介绍的不限数据库解决方案是其中重要的一环。它一定程度上化解了开源InfluxDB的配置参数缺乏整体性和自适应性的缺陷,既提升了内存的利用率,又很好地兼容了稳定性的要求,并且在数据库数量量差异较大的场景下做到了对于写入性能的提升。
未来阿里云InfluxDB还将在内存管理方面继续探索和优化,给用户提供最佳的服务和体验。

商业化

阿里云InfluxDB®现已正式商业化,欢迎访问购买页面(https://common-buy.aliyun.com/?commodityCode=hitsdb_influxdb_pre#/buy)与文档(https://help.aliyun.com/document_detail/113093.html?spm=a2c4e.11153940.0.0.57b04a02biWzGa)。

目录
相关文章
|
21天前
|
关系型数据库 Apache 流计算
手把手教你实现 OceanBase 数据到阿里云数据库 SelectDB 内核版 Apache Doris 的便捷迁移|实用指南
本文介绍了如何将数据从 OceanBase 迁移到阿里云数据库 SelectDB 内核版 Apache Doris。提供 3 种数据同步方法 1. 使用 DataX,下载 DataX 并编写配置文件,通过 OceanBaseReader 和 DorisWriter 进行数据迁移。 2. 利用 Apache Doris 的 Catalog功 能,将 OceanBase 表映射到 Doris 并插入数据。 3. 通过Flink CDC,设置 OceanBase 环境,配置 Flink 连接器,实现实时数据同步。
手把手教你实现 OceanBase 数据到阿里云数据库 SelectDB 内核版 Apache Doris 的便捷迁移|实用指南
|
4天前
|
Cloud Native 关系型数据库 分布式数据库
数据库性能诊断工具DBdoctor通过阿里云PolarDB产品生态集成认证
DBdoctor(V3.1.0)成功通过阿里云PolarDB分布式版(V2.3)集成认证,展现优秀兼容性和稳定性。此工具是聚好看科技的内核级数据库性能诊断产品,运用eBPF技术诊断SQL执行,提供智能巡检、根因分析和优化建议。最新版V3.1.1增加了对PolarDB-X和OceanBase的支持,以及基于cost的索引诊断功能。PolarDB-X是阿里巴巴的高性能云原生分布式数据库,兼容MySQL生态。用户可通过提供的下载地址、在线试用链接和部署指南体验DBdoctor。
|
7天前
|
存储 监控 Apache
查询提速11倍、资源节省70%,阿里云数据库内核版 Apache Doris 在网易日志和时序场景的实践
网易的灵犀办公和云信利用 Apache Doris 改进了大规模日志和时序数据处理,取代了 Elasticsearch 和 InfluxDB。Doris 实现了更低的服务器资源消耗和更高的查询性能,相比 Elasticsearch,查询速度提升至少 11 倍,存储资源节省达 70%。Doris 的列式存储、高压缩比和倒排索引等功能,优化了日志和时序数据的存储与分析,降低了存储成本并提高了查询效率。在灵犀办公和云信的实际应用中,Doris 显示出显著的性能优势,成功应对了数据增长带来的挑战。
查询提速11倍、资源节省70%,阿里云数据库内核版 Apache Doris 在网易日志和时序场景的实践
|
14天前
|
存储 SQL Apache
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
阿里云数据库内核 Apache Doris 基于 Workload Group 的负载隔离能力解读
|
14天前
|
弹性计算 运维 Serverless
Serverless 应用引擎产品使用之在阿里函数计算中,使数据库和阿里云函数计算位于同一个内网中如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
989 0
Serverless 应用引擎产品使用之在阿里函数计算中,使数据库和阿里云函数计算位于同一个内网中如何解决
|
15天前
|
安全 数据管理 数据库
数据管理DMS操作报错合集之阿里云DMS控制台上展示出了已经删除的数据库信息,如何解决
数据管理DMS(Data Management Service)是阿里云提供的数据库管理和运维服务,它支持多种数据库类型,包括RDS、PolarDB、MongoDB等。在使用DMS进行数据库操作时,可能会遇到各种报错情况。以下是一些常见的DMS操作报错及其可能的原因与解决措施的合集。
|
19天前
|
运维 容灾 关系型数据库
阿里云关系型数据库RDS
阿里云关系型数据库RDS概述
250 2
|
28天前
|
关系型数据库 MySQL 数据库
阿里云rds数据库简介和如何使用
该内容是一个关于如何在阿里云上准备和使用MySQL数据库的教程。首先,你需要注册阿里云账号并购买阿里云数据库MySQL服务,选择合适的配置如地域、版本和存储类型。然后,通过DMS(Data Management Service)管理数据库,包括查看数据库实例、登录、切换数据库、创建数据库和数据库导出。此外,还介绍了如何使用MySQL Workbench或命令行工具连接到RDS MySQL实例。教程详细提供了每一步的链接和操作指南。
|
1月前
|
Java 数据处理 调度
更高效准确的数据库内部任务调度实践,阿里云数据库SelectDB 内核 Apache Doris 内置 Job Scheduler 的实现与应用
Apache Doris 2.1 引入了内置的 Job Scheduler,旨在解决依赖外部调度系统的问题,提供秒级精确的定时任务管理。
|
1月前
|
弹性计算 关系型数据库 MySQL
阿里云数据库服务器价格表,数据库创建、连接和使用教程
阿里云数据库使用流程包括购买和管理。选择所需数据库类型如MySQL,完成实名认证后购买,配置CPU、内存和存储。确保数据库地域与ECS相同以允许内网连接。创建数据库和账号,设置权限。通过DMS登录数据库,使用账号密码连接。同一VPC内的ECS需添加至白名单以进行内网通信。参考官方文档进行详细操作。
132 3