Druid-Druid中Broker

  • 基于apache-druid-0.17

概述

  • 如果希望运行分布式集群,Broker是查询路由的流程。Broker可以读取并理解zookeeper集群上的元数据,这些元数据是关于哪些进程和路由查询上存在哪些段,以便它们能够访问正确的进程。此过程还将来自所有单个过程的结果集合并在一起。当启动的时候,Historical进程会在zookeeper中声明自己和他们所服务的Segment。

运行命令

org.apache.druid.cli.Main server broker

转发查询

  • 大多数的Druid查询都包含一个Interval对象,它表示请求数据的时间段。Druid的Segments被切割成一定时间间隔的数据,分布在一个集群中。假设一个简单的datasource包含7个Segment,其中每个Segment包含一周中某一天的数据。现在,向datasource中查询超过一天的数据,这会查询多个Segment。这些Segment可能会分布在多个进程中,因此,查询可能涉及多个进程。
  • 为了确定将查询转发给某个具体的进程,Broker进程首先会总zookeeper的元数据中读取相关信息。zookeeper中维护这关于Historical进程 、流式提取Peon进程、和他们服务的Segments信息。对于zookeeper中的每一个datasource,Broker会创建一个包含哪些Segment和服务哪些Segments的时间轴。当接收到特定datasource和时间间隔的查询时,Broker会在时间轴上查询时间间隔相关的datasource,并查询数据的进程。然后Broker会将查询转发给所选的进程中。

缓存

  • Broker进程会使用带有LRU缓存失效策略的缓存机制。Broker缓存存储Segment结果,缓存可以是每个Broker进程的本地缓存,也可以使用外部分布式缓存(如memcached)在多个进程之间共享。当Broker进程接收到一个查询query时,首先将查询映射到一组Segment。这一组Segment的一部分已经存在缓存中,并且可以直接从缓存中读取结果。对于不在缓存中Segment,Broker进程将查询转发给Historical进程。一旦Historical进程将查询结果返回,Broker进程会将结果缓存。Real-time segments 永远不会被缓存,因此对real-time数据的请求总是被转发给real-time进程。real-time数据是不断变化的,所以缓存的结果是不可靠的。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Druid.io(以下简称Druid)是面向海量数据的、用于实时查询与分析的OLAP存储系统。Druid的四大关键...
    大诗兄_zl阅读 6,560评论 0 9
  • 我们知道Druid能够同时提供对大数据集的实时摄入和高效复杂查询的性能,主要原因就是它独到的架构设计和基于Data...
    零度沸腾_yjz阅读 21,840评论 3 17
  • Druid io总体设计 1.Druid模块架构 1.1 Druid简介 最新版本的Druid采用了位图索引、字典...
    小武大讲堂阅读 1,928评论 0 2
  • 我们知道Druid能够同时提供对大数据集的实时摄入和高效复杂查询的性能,主要原因就是它独到的架构设计和基于Data...
    allin8116阅读 531评论 0 2
  • 基于apache-druid-0.17.0 Configuration和HTTP endpoints详见官网; 概...
    李小李的路阅读 853评论 0 1

友情链接更多精彩内容