broker part

This commit is contained in:
liujianhuan 2020-04-06 18:19:30 +08:00
parent d732562eef
commit eb0e10054d
2 changed files with 32 additions and 6 deletions

View File

@ -1 +1,27 @@
<!-- toc -->
<!-- toc -->
## Broker
### 配置
对于Apache Druid Broker的配置请参见 [Broker配置]()
### HTTP
对于Broker的API的列表请参见 [Broker API]()
### 综述
在分布式的Druid集群中Broker是一个查询的路由进程。Broker了解所有已经发布到ZooKeeper的元数据了解在哪些进程存在哪些段然后将查询路由到以便它们可以正确命中的进程。Broker还将来自所有单个进程的结果集合并在一起。在启动时Historical会在Zookeeper中注册它们自身以及它们所服务的段。
### 运行
```
org.apache.druid.cli.Main server broker
```
### 转发查询
大多数Druid查询都包含一个interval对象该对象指示请求数据的时间跨度。同样Druid[段](./Segments.md)被划分为包含一定时间间隔的数据并且段分布在集群中。假设有一个具有7个段的简单数据源其中每个段包含一周中给定一天的数据对数据源发出的任何查询如果超过一天的数据都将命中多个段这些段可能分布在多个进程中因此查询可能会命中多个进程。
为了确定将查询转发到哪个进程Broker首先从Zookeeper中的信息构建一个全局视图。Zookeeper中维护有关 [Historical](./Historical.md) 和流式摄取 [Peon](./Peons.md) 过程及其所服务的段的信息。对于Zookeeper中的每个数据源Broker都会构建一个段的时间线以及为它们提供服务的进程。当接收到针对特定数据源和间隔的查询时Broker将对与查询数据源关联的查询间隔时间线执行查找并检索包含所查询数据的进程。然后Broker将查询向下转发到所选进程。
### 缓存
Broker使用具有LRU缓存失效策略的缓存Broker缓存按段存储结果。缓存可以是每个Broker的本地缓存也可以使用外部分布式缓存如 [memcached](http://memcached.org/) )跨多个进程共享。每次Broker进程收到查询时它首先将查询映射到一组段这些段结果的子集可能已经存在于缓存中并且可以直接从缓存中提取结果。对于缓存中不存在的任何段结果Broker将查询转发到Historical。一旦Historical返回其结果Broker将把这些结果存储在缓存中。实时段从不被缓存因此对实时数据的请求总是被转发到实时进程。实时数据一直在变化缓存结果是不可靠的。

View File

@ -2,10 +2,10 @@
## Historical
### 配置
对于Apache Druid Historical的配置请参见[Historical配置]()
对于Apache Druid Historical的配置请参见 [Historical配置]()
### HTTP
Historical的API列表请参见[Historical API]()
Historical的API列表请参见 [Historical API]()
### 运行
```
@ -16,9 +16,9 @@ org.apache.druid.cli.Main server historical
每个Historical都保持与Zookeeper的持续连接并监视一组可配置的Zookeeper路径以获取新的段信息。Historical不直接与Coordinator通信而是依赖Zookeeper进行协调。
[Coordinator](./Coordinator.md) 负责通过在与Historical关联的加载队列路径下创建一个短暂的Zookeeper条目来将新的段分配给Historical。有关Coordinator如何将段分配给Historical的更多信息请参阅[Coordinator](./Coordinator.md)。
[Coordinator](./Coordinator.md) 负责通过在与Historical关联的加载队列路径下创建一个短暂的Zookeeper条目来将新的段分配给Historical。有关Coordinator如何将段分配给Historical的更多信息请参阅 [Coordinator](./Coordinator.md)。
当Historical在其加载队列路径中注意到新的加载队列条目时它将首先检查本地磁盘目录缓存以获取有关段的信息。如果缓存中不存在有关段的信息Historical将从Zookeeper下载有关新段的元数据此元数据包括段在深层存储中的位置以及如何解压缩和处理段的规范。有关段的元数据和一般的Druid段的更多信息请参见[段](./Segments.md)。一旦一个Historical完成了对一个段的处理这个段就会在Zookeeper中与该进程相关联的服务段路径下被宣布同时该段可供查询。
当Historical在其加载队列路径中注意到新的加载队列条目时它将首先检查本地磁盘目录缓存以获取有关段的信息。如果缓存中不存在有关段的信息Historical将从Zookeeper下载有关新段的元数据此元数据包括段在深层存储中的位置以及如何解压缩和处理段的规范。有关段的元数据和一般的Druid段的更多信息请参见 [](./Segments.md)。一旦一个Historical完成了对一个段的处理这个段就会在Zookeeper中与该进程相关联的服务段路径下被宣布同时该段可供查询。
### 从缓存加载和服务段
@ -28,6 +28,6 @@ org.apache.druid.cli.Main server historical
### 查询段
有关查询Historical的详细信息请参阅[查询]()。
有关查询Historical的详细信息请参阅 [数据查询]()。
Historical可以被配置记录和报告每个服务查询的指标。