Druid系统架构
Historical
历史节点对历史数据进行存储和查询,从Deep Storage下载Segment,然后响应Broker对于Segment的查询将查询结果返回给Broker节点,通过Zookeeper来声明自己存储的节点,同时也通过zookeeper来监听加载或删除Segment的信号,不接受写入操作。
MiddleManager
MiddleManager节点摄入新的数据到集群中,从外部数据源中读取数据并生成新的Segment。
Broker
Broker节点从外部客户端接收查询,并将这些查询转发给Historicals和MiddleManagers。当Brokers收到返回的结果时,它会合并这些结果并将它们返回给调用者。Druid的查询时通过请求Broker节点,而不是直接查询Historicals或MiddleManagers。
Coordinator
协调节点负责监控历史节点,将Segment分配给特定服务器,确保Segment在历史节点之间保持平衡。
Overlord
Overlord节点负责监控MiddleManager节点并控制数据摄入到Druid中。它将摄入数据的任务分配给MiddleManager节点,并协调Segment的发布。
Router
Router是一个可选的进程,在Brokers、Overlords和Coordinators前提供统一的网关。
外部依赖
Deep storage
Druid使用它来存储已被摄入系统的任何数据。通常是分布式存储系统,如S3、HDFS 或 a network mounted filesystem。
Metadata store
存储元数据,通常是传统的关系数据库,如:PostgreSQL、MySQL。
ZooKeeper
ZooKeeper用于内部服务发现,协调和领导者选举。