阿里云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)。

目录
相关文章
|
12天前
|
缓存 弹性计算 NoSQL
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
|
12天前
|
安全 NoSQL 关系型数据库
阿里云数据库:助力企业数字化转型的强大引擎
阿里云数据库:助力企业数字化转型的强大引擎
|
12天前
|
存储 NoSQL MongoDB
基于阿里云数据库MongoDB版,微财数科“又快又稳”服务超7000万客户
选择MongoDB主要基于其灵活的数据模型、高性能、高可用性、可扩展性、安全性和强大的分析能力。
|
15天前
|
人工智能 Cloud Native 关系型数据库
阿里云关系型数据库连续五年蝉联榜首
全球领先的IT市场研究和咨询公司IDC发布了《2023年下半年中国关系型数据库软件市场跟踪报告》,2023年阿里云整体市场份额(公有云+本地部署模式)稳居第一,其中公有云市场份额高达39.2%,自2019年起连续5年蝉联榜首。
|
15天前
|
安全 NoSQL 关系型数据库
阿里云数据库:构建高性能与安全的数据管理系统
在企业数字化转型过程中,数据库是支撑企业业务运转的核心。随着数据量的急剧增长和数据处理需求的不断增加,企业需要一个既能提供高性能又能保障数据安全的数据库解决方案。阿里云数据库产品为企业提供了一站式的数据管理服务,涵盖关系型、非关系型、内存数据库等多种类型,帮助企业构建高效的数据基础设施。
34 2
|
23天前
|
存储 分布式计算 数据库
阿里云国际版设置数据库云分析工作负载的 ClickHouse 版
阿里云国际版设置数据库云分析工作负载的 ClickHouse 版
|
12天前
|
存储 NoSQL MongoDB
小川科技携手阿里云数据库MongoDB:数据赋能企业构建年轻娱乐生态
基于MongoDB灵活模式的特性,小川实现了功能的快速迭代和上线,而数据库侧无需任何更改
|
12天前
|
运维 NoSQL BI
简道云搭载阿里云MongoDB数据库,帮助数以万计企业重构业务系统
通过与MongoDB和阿里云团队的合作,让简道云少走了弯路,保障了线上服务的长期稳定运行,提高了吞吐效率,并相应降低了线上运行成本
|
15天前
|
NoSQL 数据管理 关系型数据库
利用阿里云的尖端数据库解决方案增强游戏数据管理
利用阿里云的尖端数据库解决方案增强游戏数据管理
|
2月前
|
存储 监控 数据挖掘
飞轮科技携手观测云亮相云栖大会,全方位展示阿里云数据库 SelectDB 版核心优势
飞轮科技技术副总裁姜国强于「数据分析与洞察」专场分享[阿里云数据库 SelectDB 版在日志存储分析、实时报表生成、用户行为分析及 Lakehouse 场景应用方案
飞轮科技携手观测云亮相云栖大会,全方位展示阿里云数据库 SelectDB 版核心优势