海量时间序列数据的实时查询系统(Druid系统)概述

Druid是为处理海量时间序列数据而设计的一款开源的OLAP系统。它是分布式处理系统,在设计之初就采纳了线性扩容和高可用的设计方案。集群的规模可以随着业务的增长而动态增加。要查询的数据集都做了分片(partition)和副本(replication),可以在集群部分机器down机之后,查询服务依然可用。Druid采用模块化设计的理念,模块之间的依赖通过Guice依赖注入框架自动进行,Druid支持用户自定义的组件,方便用户扩展。

Druid擅长按照不同的时间粒度(Time Granularity)和各种维度(Dimensions)组合去查询聚合数据,不擅长原始数据的查询。Druid的实时性体现在两个方面。一是Druid查询的响应时间非常快,大部分查询会在10s以内返回。二是能够查询的数据的时效性非常高,进入Druid采集系统的数据,就能被立即查询到,延迟在ms级别。

数据源

Druid仅支持时间序列类型的数据源,例如


时间(timestamp)列标示事件发生的时间,必须存在。该数据在进入采集系统后,会按照配置的时间粒度(半小时,小时,天,周,月,年等)进行聚合。

维度(dimensions)列标示数据里面的维度信息,一般为string类型。

度量(metrics)数据标示数据里面的各种度量信息,数据一般为数据类型

Druid系统在做数据查询时,一般会按照时间粒度和维度做分组,然后在各个分组内部聚合度量数据,聚合的方法有sum,mean,max,min等。Druid系统也支持自定义的聚合函数。

核心服务

Druid的核心服务有两种:数据采集服务和数据查询服务,为了保证数据的时效性,所有采集服务的数据均可以被查询系统所查询。Druid系统服务内部有一系列相互独立的服务进程构成,进程之间不会直接通信(比如RPC),而是通过zookeeper进行间接通信。查询的接口以restapi的方式提供给上层。

数据采集服务

时间序列数据通过采集服务进入到Druid集群。Druid不保存时间序列的原始信息,仅保存聚合之后的数据集。聚合一般按照时间和数据维度进行。为了加快查询的速度,Dr

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值