如何用阿里云HiTSDB时序数据库实现百万级海量数据点秒级读写

  1. 云栖社区>
  2. 博客>
  3. 正文

如何用阿里云HiTSDB时序数据库实现百万级海量数据点秒级读写

yq传送门 2017-06-13 10:29:27 浏览8214 评论3

摘要: 2017云栖大会·上海峰会上,阿里云发布了面向物联网场景的HiTSDB时序数据库,可支持每秒1000万时序数据点写入;具备PB级别的数据存储能力,提供高效压缩算法,整体存储成本降低90%;提供时序数据插值计算,降精度计算,时间纬度聚合计算,空间纬度聚合计算的能力。

2017云栖大会·上海峰会上,阿里云发布了面向物联网场景的HiTSDB时序数据库,可支持每秒1000万时序数据点写入;具备PB级别的数据存储能力,提供高效压缩算法,整体存储成本降低90%;提供时序数据插值计算,降精度计算,时间纬度聚合计算,空间纬度聚合计算的能力。

HiTSDB的能力脱胎于阿里巴巴多年的实践,面对集群规模拥有独特的分析计算能力,本文将从电商视角对HiTSDB进行深度剖析。

阿里巴巴拥有着全球最大的电商交易平台,2016双十一单日成交额突破了1207亿。而这个庞大的业务规模的背后是由上千个应用服务,几万台服务器,每天上亿的服务调用来支撑的。

image

如此大规模的应用监控需要全局监控服务APM(ApplicationPerformance Monitoring)来完成,通过采集各个服务和机器的运行数据和业务指标进行数据跟踪监控,就可以全局的掌握业务和服务运行情况,帮助进行故障诊断和业务评估。

阿里的全局监控服务叫做Ali360,通过Ali360可以进行全局的业务和服务监控。Ali360技术挑战题在于集群规模。最初面临的规模就是几百个应用,几万台的机器规模,要对每一台机器进行QPS等相关服务指标监控,应用系统依据Metric规范产生数据,上千万的数据点写入,上百万的数据点查询,这个规模是相当惊人的。

image
(天猫双11大屏也是APM的一部分)

同时,Ali360的平均写入维持在200W/S,每个数据点平均大小为200字节,那么每秒写入量在0.4G,每天就要产生34T的数据,而APM这种常见的时序领域的应用,通常数据写入都是持续进行的,按照这样的写入速度,那么每年业务存储所需存储成本变得非常的巨大,迫切需要进行成本的优化。

image

面对这个巨大的挑战,我们必须要寻找一条最合适的路。

最先排除掉的方案是通过关系型数据库的方案。百万级别的数据写入给关系数据库带来的写入压力巨大,由于关系数据库为了支持多维查询而创建的索引导致写入效率下降,同时索引存储空间也造成了整个方案的成本巨大,性能也不理想。

第二个排除的方案是NoSQL的存储方案。KV的问题在于数据的append操作通常是转化为get 和put的操作,比较适合大量小的热数据,并不适合这种监控数据的大数据写入,数据写入的效率也非常差。

从监控的业务形态和数据特点来分析,最终我们找到了阿里云HiTSDB 时序数据库来解决这个问题。由于业务监控数据最终的呈现形态都是基于时间纬度的监控数据,技术领域对这些呈现的数据统称为“TimeSeries Data 时序数据”,对于某一个指标的一系类持续数据点系列称为“TimeLine 时间线”。那么监控系统最终呈现的就是一系列的TimeLines。而时序数据库则是针对时序数据的管理进行特殊优化的数据库产品。

image

系统按照Metric的规范的通过HiTSDB提供的接口进行任意的数据写入。写入的信息可以包括任意的Tag,如:机房,区域,IP,应用,服务,方法名等以及写入指标如:异常数,QPS,TPS等,通过HiTSDB接口将时序数据写入到HiTSDB存储,HiTSDB支持任意纬度的时序数据监控应用进行监控指标的查询,以时间线的方式对应用提供服务。

image

阿里云HiTSDB 引入了倒排索引技术可支持每秒1000万时序数据点写入,可以充分满足Ali360的600W/S 数据点写入量的业务高峰。同时HiTSDB采用分布式的架构,可以进行横向的水平扩展,理论上是不存在任何的性能瓶颈,而在实际的业务应用中,资源利用率水平维持在60%以下。

同时由于每秒写入的数据点达到几百万且监控数据是24小时不断的持续写入,实际每天要产生T级别的数据,这些数据的存储成本变得非常高。

image

HiTSDB采用Gorilla的压缩算法,可以把一个时间点压缩到1.37字节,实际应用中可以做到2字节以内,那么实际只需占用1%的存储空间,1T的原始数据写入,只需要10G左右的存储空间,整体节约了90%以上的存储成本,这个压缩效果对于业务来说节省的成本非常可观,也可以提升查询速度。

Ali360的业务里包括一项业务趋势数据的查询分析功能,通常查询的时间跨度比较丰富,比如半小时、1小时、1天,设置1个月的趋势数据。同时还要提供特定纬度的计算,如将每秒的服务调用量,按照分钟级别进行sum计算,每分钟的系统负载按照AVG进行平均计算,当查询的时间线数量增加,时间跨度拉长的时候,需要查询和计算的数据规模就迅速增长。

HiTSDB提供多种计算能力,包括时序数据插值计算、降精度计算、时间纬度聚合计算和空间纬度聚合计算等,百万数据点计算响应时间小于5秒,可以充分的满足业务查询计算需求。

除了提供接口级别的数据查询外,HiTSDB也可以和Grafana以及其他的可视化系统对接,快速实现数据的展现,对于非定制化的监控系统来说可以大大提高业务分析决策的效率。

image

事实上,除了APM应用分析外,这种对于时序数据数据的管理和使用场景也广泛应用于IoT和实时分析领域,都可以通过HiTSDB 来解决,目前这款产品即将公测,欢迎有类似需求的团队试用。

本文作者:阿里巴巴资深工程师 凤豪
原文链接

【云栖快讯】一站式开发者服务,海量学习资源免费学  详情请点击

网友评论

yq传送门
文章835篇 | 关注15748
+ 关注