0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

华为自研分布式时序数据库集群:初始GaussDB(for Influx)

清欢科技 来源:清欢科技 作者:清欢科技 2022-12-02 09:08 次阅读

前言

随着云计算规模越来越大,以及物联网应用逐渐普及,在物联网(AIoT)以及运维监控(AIOps)领域,存在海量的时序数据需要存储管理。以华为云监控服务(Cloud Eye Service,CES)为例,单个Region需要监控7000多万监控指标,每秒需要处理90万个上报的监控指标项,假设每个指标50个字节,一年的数据将达到PB级。另以地震监测系统为例,数万监测站点24小时不间断采集数据,平均每天要处理的指标数据达到TB级,一年的数据同样达到PB级,并且数据需要永久存储。传统的关系型数据库很难支撑这么大的数据量和写入压力,Hadoop等大数据解决方案以及现有的开源时序数据库也面临非常大的挑战。对时序数据实时交互、存储和分析的需求,将推动时序数据库在架构、性能和数据压缩等方面不断进行创新和优化。

GaussDB(for Influx)时序数据库依靠华为在数据存储领域多年的实践经验,整合华为云的计算、存储、服务保障和安全等方面的能力,大胆在架构、性能和数据压缩等方面进行了技术创新,达到了较好的效果,对内支撑了华为云基础设施服务,对外以服务的形式开放,帮助上云企业解决相关业务问题。

云原生存储与计算分离架构

poYBAGOIxhyAA-NNAACwXT4sHII952.png

GaussDB(for Influx)接口完全兼容InfluxDB,写入接口兼容OpenTSDB、Prometheus和Graphite。从架构上看,一个时序数据库集群可以分为三大组件。它们分别是:

Shard节点:节点采用无状态设计,主要负责数据的写入和查询。在节点内,除了分片和时间线管理之外,还支持数据预聚合、数据降采样和TAG分组查询等专为时序场景而优化的功能。

Config集群:存储和管理集群元数据,采用三节点的复制集模式,保证元数据的高可靠性。

分布式存储系统:集中存储持久化的数据和日志,数据采用三副本方式存放,对上层应用透明。存储系统为华为自研,经过多年产品实践检验,系统的高可用和高可靠性都得到了验证。

poYBAGOIxiGAQqNTAAD6nNHkdDc634.png

相比InfluxDB等开源时序数据库,采用存储与计算分离的云原生数据库设计具备以下优势:

容忍N-1节点故障,更高可用。存储与计算分离,可以复用成熟的分布式存储系统,提供系统的极致可靠性。时序数据通常会持续高性能写入,同时还有大量的查询业务,任何系统故障导致业务中断甚至数据丢失都会造成严重的业务影响,而利用经过验证的成熟的分布式存储系统,能够显著的提升系统可靠性,降低数据丢失风险。

分钟级计算节点扩容,秒级存储扩容。解除在传统Shared Nothing架构下,数据和节点物理绑定的约束,数据只是逻辑上归宿于某个节点,使的计算节点无状态化。这样在扩容计算节点时,可以避免在计算节点间迁移大量数据,只需要逻辑上将部分数据从一个节点移交给另一个节点即可,可以将集群扩容的耗时从以天为单位缩短为分钟级别。

消除多副本冗余,降低存储成本。通过将多副本复制从计算节点卸载到分布式存储节点,可以避免用户以Cloud Hosting形态在云上自建数据库时,分布式数据库和分布式存储分别做3副本复制导致总共9副本的冗余问题,能够显著降低存储成本。

pYYBAGOIxiaAGHWCAACTVrapZ98005.png

GaussDB(for Influx)采用云原生存储与计算分离架构,具有支持亿级时间线、极致写入性能、低存储成本、高性能多维聚合查询和极致弹性扩缩容等5大特性。

支持亿级时间线

poYBAGOIxiqAYsRXAACrR5MsaZc155.png

在时序数据库系统中,存在大量并发查询和写入操作,合理控制内存的使用量显得十分重要。开源时序数据库VictoriaMetrics和InfluxDB在写入数据的时间线增加到千万级别时,进程会因内存耗尽而OOM退出。为了避免写入海量时间线数据导致内存资源被耗尽,GaussDB(for Influx)做了如下优化:

●在内存分配上,大量使用内存池复用技术,减少临时对象内存申请,降低内存碎片;

●在内存回收上,实现算法根据内存负载,动态调整GC频率,加快内存空间回收;

●在单查询上,实行Quota控制,避免单查询耗尽内存;

●在缓存使用上,针对不同节点规格提供不同的最优配置。

经过改进,在海量时间线下,系统写入性能保持稳定,大幅超出InfluxDB开源实现。对于涉及海量时间线的聚合查询,如高散列聚合查询,查询性能提升更为显著。

极致写入性能:支持每天万亿条数据写入

pYYBAGOIxi-AfsfsAAB3D-o1xzs894.png

相比单机模式,集群模式可以将写入负载分散到集群中各个计算节点上,从而支持更大规模的数据写入。GaussDB(for Influx)支持每天万亿条数据写入,在工程实现上进行了以下优化:

首先,时序数据按照时间线做Hash Partition,利用所有节点并行写入,充分发挥集群优势。

其次,Shard节点采用针对写场景优化的LSM-Tree布局,写WAL后确保日志持久化,再写入内存Buffer即可返回。

最后,数据库多副本复制卸载到分布式存储,降低计算节点到存储节点的网络流量。

在大规模写入场景下,GaussDB(for influx)的写入性能线性扩展度大于80%。

低存储成本:只需1/20的存储成本

在时序数据库面对的AIOps运维监控和AIoT物联网两个典型应用场景中,每天会产生数GB甚至数TB的时序数据。如果无法对这些时序数据进行很好的管理和压缩,那将会给企业带来非常高的成本压力。

GaussDB(for Influx)对数据采用列式存储,相同类型的数据被集中存储,更有利于数据压缩。采用自研的时序数据自适应压缩算法,在压缩前对数据进行抽样分析,根据数据量、数据分布以及数据类型选择最合适的数据压缩算法。在压缩算法上,相比原生的InfluxDB,重点针对Float、String、Timestamp这三种数据类型进行了优化和改进。

Float数据类型:对Gorilla压缩算法进行了优化,将可以无损转换的数值转为整数,再根据数据特点,选择最合适的数据压缩算法。

String数据类型:采用了压缩效率更好的ZSTD压缩算法,并根据待压缩数据的Length使用不同Level的编码方法。

Timestamp数据类型:采用差量压缩方法,最后还针对数据文件内的Timestamp进行相似性压缩,进一步降低时序数据存储成本。

下图是分别采用实际业务场景的事件日志数据(数据集1)和云服务器监控指标数据 (数据集2)与InfluxDB进行了数据压缩效率的性能对比。

poYBAGOIxjWAGzEXAACRdZhlHqA625.png

节约存储成本并非只有数据压缩一种办法。针对时序数据越旧的数据被访问的概率越低的特点,GaussDB(for Influx)提供了时序数据的分级存储,支持用户自定义冷热数据,实现数据的冷热分离。热数据相对数据量小,访问频繁,被存储在性能更好、成本较高的存储介质上;冷数据相对数据量大,访问概率低,保存时间较久,被存储在成本较低的存储介质上,进而达到节约存储成本的目的。根据实际业务数据测算,相同数据量下存储成本仅有关系型数据库的1/20。

高性能多维聚合查询

多维聚合是时序数据库中较为常见,且会定期重复执行的一种查询,例如AIOps运维监控场景中查询CPU、内存在指定时间范围内的平均值。

SELECTmean(usage_cpu), mean(usage_mem)
FROMcpu_info
WHEREtime >= '2020-11-01T06:05:27Z' and time < '2020-11-01T18:05:27Z' 
GROUPBYtime(1h), hostname

poYBAGOIxjmAOFZPAACDqriar_8569.png

在提升聚合查询整体性能方面,GaussDB(for Influx) 做了如下优化:

●采用MPP架构:一条查询语句可以在多节点及多核并发执行。

●向量化查询引擎:在查询结果数据量很大时,传统的火山模型每次迭代返回一条数据,存在过多的开销导致性能瓶颈。GaussDB(for Influx)内部实现了向量化查询引擎,每次迭代批量返回数据,大大减少了额外开销。

●增量聚合引擎:基于滑动窗口的聚合查询,大部分从聚合结果缓存中直接命中,仅需要聚合增量数据部分即可。

●多维倒排索引:支持多维多条件组合查询,避免大量Scan数据。

●存储摘要索引,加快数据查询中过滤无关数据。

poYBAGOIxj2AVkPAAACQbzOSTIo590.png

相同节点规格,GaussDB(for Influx)的聚合查询性能是InfluxDB Enterprise的10倍,是Timescale的2到5倍。

分钟级弹性扩缩容

pYYBAGOIxkCAZnRBAACNJXv025A483.png

在时序数据库的运行过程中,随着业务量的增加,常常需要对数据库进行在线扩容,以满足业务的要求。传统数据库中的数据存储在本地,扩容后往往需要迁移数据。当数据量达到一定规模时,数据迁移所耗费的时间往往按天计算,给运维带来了很大的困难。

如上图所示,每个Database逻辑上由多个Partition组成,每个Partition独立存储,且都可自描述。所有Partition数据都存储在分布式共享存储上,数据库Shard节点和数据没有物理绑定关系。扩容时首先offload源节点Partition,再在目标节点assign即可。

总结

时序数据应该存储在专门为时序数据进行优化的时序数据库系统中。华为云某业务从Cassandra切换到GaussDB(for Influx)后,计算节点从总共39个(热集群18个,冷集群9个,大数据分析集群 12个)降低到了9个节点,缩减4倍计算节点。存储空间消耗从每天1TB降低到100GB以内,缩减10倍存储空间消耗。

GaussDB(for Influx)提供了独特的数据存储管理解决方案,云原生的存储与计算架构,可根据业务变化快速扩容缩容;高效的数据压缩能力和数据冷热分离设计,可大幅降低数据存储成本;高吞吐的集群,可满足大规模运维监控和物联网场景海量数据写入和查询性能要求。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 华为
    +关注

    关注

    215

    文章

    34246

    浏览量

    250948
  • 云计算
    +关注

    关注

    39

    文章

    7701

    浏览量

    137095
  • 数据库
    +关注

    关注

    7

    文章

    3750

    浏览量

    64219
收藏 人收藏

    评论

    相关推荐

    一文讲清什么是分布式云化数据库

    分布式云化数据库是一种先进的数据管理系统,它将传统的数据库技术与分布式计算、云计算和大数据处理技
    的头像 发表于 10-14 10:06 163次阅读

    某证券公司智能云投资交易云集群高性能分布式存储应用

    某证券公司智能云投资交易云集群高性能分布式存储应用
    的头像 发表于 09-27 09:57 215次阅读
    某证券公司智能云投资交易云<b class='flag-5'>集群</b>高性能<b class='flag-5'>分布式</b>存储应用

    分布式云化数据库的优缺点分析

    分布式云化数据库的优点主要体现在高可用性和容错性、可扩展性、体系结构、数据一致性、成本、升级迭代等方面。同时也存在一些缺点,如通信开销较大、数据的存取结构复杂、
    的头像 发表于 09-14 09:42 211次阅读

    软件系统数据库的分库分表设计

    分布式集群,实现分库分表功能,解决数据库中海量数据存储和查询性能的问题。MyCat 还是一个数据库
    的头像 发表于 08-22 11:39 268次阅读
    软件系统<b class='flag-5'>数据库</b>的分库分表设计

    基于分布式存储WDS的金融信创云承载数据库类关键应用

    基于分布式存储WDS的金融信创云承载数据库类关键应用
    的头像 发表于 08-16 09:42 223次阅读
    基于<b class='flag-5'>分布式</b>存储WDS的金融信创云承载<b class='flag-5'>数据库</b>类关键应用

    鸿蒙开发接口数据管理:【@ohos.data.distributedData (分布式数据管理)】

    分布式数据管理为应用程序提供不同设备间数据库分布式协同能力。通过调用分布式数据各个接口,应用程
    的头像 发表于 06-07 09:30 859次阅读
    鸿蒙开发接口<b class='flag-5'>数据</b>管理:【@ohos.data.distributedData (<b class='flag-5'>分布式</b><b class='flag-5'>数据</b>管理)】

    时序数据库是什么?时序数据库的特点

    时序数据库是一种在处理时间序列数据方面具有高效和专门化能力的数据库。它主要用于存储和处理时间序列数据,比如传感器数据、监控
    的头像 发表于 04-26 16:02 583次阅读

    HarmonyOS开发实例:【分布式手写板】

    使用设备管理及分布式键值数据库能力,实现多设备之间手写板应用拉起及同步书写内容的功能。
    的头像 发表于 04-17 21:45 426次阅读
    HarmonyOS开发实例:【<b class='flag-5'>分布式</b>手写板】

    鸿蒙HarmonyOS开发实例:【分布式关系型数据库

    使用[@ohos.data.relationalStore]接口和[@ohos.distributedDeviceManager] 接口展示了在eTS中分布式关系型数据库的使用,在增、删、改、查的基本操作外,还包括分布式数据库
    的头像 发表于 04-11 09:52 782次阅读
    鸿蒙HarmonyOS开发实例:【<b class='flag-5'>分布式</b>关系型<b class='flag-5'>数据库</b>】

    分布式锁的三种实现方式

    ,下面将分别介绍三种常见的实现方式。 一、基于数据库实现的分布式锁 在分布式系统中,数据库是最常用的共享资源之一。因此,可以通过数据库的特性
    的头像 发表于 12-28 10:01 831次阅读

    鸿蒙原生应用开发——分布式数据对象

    申请权限,用户点击授权即可赋予应用相应的权限啦~ 06、上手分布式数据对象代码开发 登录了同一华为帐号的 HarmonyOS 设备已经默认了进行了组网认证,所以在进行分布式
    发表于 12-08 10:01

    分布式系统硬件资源池原理和接入实践

    和音频驱动信息,存入分布式数据库。如果 AB 两个设备建立了可信关系并且通过软总线组网上线成功,分布式数据库会在 AB 两个设备之间自动同步各自的本地外设数据信息,这样,设备 A 分布式
    发表于 12-06 10:02

    怎么区分分布式服务器和集群服务器?

      如何区分分布式服务器和集群服务器?许多朋友在选择服务器时不知道分布式服务器和集群服务器的区别,所以他们不知道如何选择它们。本文将告诉您分布式
    的头像 发表于 11-29 15:20 638次阅读

    NoSQL 数据库如何选型

    什么是NoSQL数据库?为什么要使用NoSQL数据库?键值数据库内存键值数据库文档数据库列式数据库
    的头像 发表于 11-26 08:05 422次阅读
    NoSQL <b class='flag-5'>数据库</b>如何选型

    分布式数据恢复-hbase+hive分布式存储误删除文件的数据恢复方案

    仓库。 hbase+hive分布式存储故障&初检: 数据库文件被误删除,数据库无法使用。 通过现场对该分布式环境的初步检测,发现虚拟机还可以正常启动,虚拟机里面的
    的头像 发表于 11-24 15:55 395次阅读