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

目录
相关文章
|
10天前
|
存储 人工智能 数据管理
|
3天前
|
存储 人工智能 数据管理
媒体声音|专访阿里云数据库周文超博士:AI就绪的智能数据平台设计思路
在生成式AI的浪潮中,数据的重要性日益凸显。大模型在实际业务场景的落地过程中,必须有海量数据的支撑:经过训练、推理和分析等一系列复杂的数据处理过程,才能最终产生业务价值。事实上,大模型本身就是数据处理后的产物,以数据驱动的决策与创新需要通过更智能的平台解决数据多模处理、实时分析等问题,这正是以阿里云为代表的企业推动 “Data+AI”融合战略的核心动因。
|
24天前
|
存储 NoSQL 关系型数据库
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
我们的风控系统引入阿里云数据库MongoDB版后,解决了特征类字段灵活加减的问题,大大提高了开发效率,极大的提升了业务用户体验,获得了非常好的效果
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
|
1月前
|
缓存 物联网 数据库
InfluxDB vs TDengine :2025 年了,谁家用的数据库还不能高效读缓存?
在工业互联网和物联网的大数据应用场景中,实时数据的写入和查询性能至关重要。如何快速获取最新设备状态并实时处理数据,直接影响到业务的高效运转。本文将深入分析 TDengine 和 InfluxDB 在缓存机制上的差异,帮助读者更好地理解这两款主流时序数据库在性能优化方面的优劣。
72 1
|
11天前
|
人工智能 Cloud Native 关系型数据库
双位数增长,阿里云连续五年领跑关系型数据库
阿里云蝉联中国关系型数据库整体市场份额第一,在公有云业务双位数增长的驱动下,阿里云同时在公有云关系型数据库市场取得了38%的市场份额,连续五年位居首位。
|
2月前
|
Cloud Native 关系型数据库 Serverless
阿里云数据库获中国计算机学会“科技进步一等奖”!
阿里云数据库获中国计算机学会“科技进步一等奖”!
38 0
|
3月前
|
缓存 弹性计算 NoSQL
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
|
3月前
|
安全 NoSQL 关系型数据库
阿里云数据库:助力企业数字化转型的强大引擎
阿里云数据库:助力企业数字化转型的强大引擎
|
3月前
|
存储 NoSQL MongoDB
基于阿里云数据库MongoDB版,微财数科“又快又稳”服务超7000万客户
选择MongoDB主要基于其灵活的数据模型、高性能、高可用性、可扩展性、安全性和强大的分析能力。