Druid本质是一个分布式时序数据库,其设计恰好满足这个场景:
-
Historical数据存储使用HDFS等成熟的分布式文件系统方案,高可用、水平扩容
-
Lambda架构,Realtime部分使用LSM-Tree实现,满足流数据的即时查询需求
下面从2方面,整理一下Druid的关键技术点:
-
Druid架构设计
-
数据摄入
-
几个重要配置
当业务中出现以下情况时,Druid 是一个很好的技术方案选择:
-
需要交互式聚合和快速探究大量数据时;
-
需要实时查询分析时;
-
具有大量数据时,如每天数亿事件的新增、每天数 10T 数据的增加;
-
对数据尤其是大数据进行实时分析时;
-
需要一个高可用、高容错、高性能数据库时。
一、Druid架构设计
Druid自身包含下面4类节点:
-
Realtime Node:即时摄入实时数据,生成Segment(LSM-Tree实现与Hbase基本一致,不再赘述)文件。
-
Historical Node:加载已生成好的数据文件,以供数据查询。
-
Broker Node:对外提供数据查询服务,并同时从Realtime Node和Historical Node查询数据,合并后返回给调用方。
-
Coordinator Node:负责Historical Node的数据负载均衡,以及通过Rule管理数据生命周期。