druid-docs-cn/Design/Processes.md

107 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- toc -->
## 进程和服务
### 进程类型
Druid有以下几种进程类型
* [Coordinator](./Coordinator.md)
* [Overlord](./Overlord.md)
* [Broker](./Broker.md)
* [Historical](./Historical.md)
* [MiddleManager](./MiddleManager.md) 和 [Peons](./Peons.md)
* [Indexer(可选)](./Indexer.md)
* [Router(可选)](./Router.md)
### 服务类型
Druid进程可以按照您喜欢的任何方式部署但是为了便于部署我们建议将它们组织成三种服务器类型
* **Master**
* **Query**
* **Data**
![](img/druid-architecture.png)
本节描述Druid进程和建议的Master/Query/Data server组织如上面的架构图所示。
#### Master服务
Master服务管理数据的摄取和可用性它负责启动新的摄取作业并协调下面描述的"Data服务"上数据的可用性。
在Master服务中功能分为两个进程Coordinator和Overlord。
**Coordinator进程**
[Coordinator](./Coordinator.md) 监视Data服务中的Historical进程它们负责将数据段分配给特定的服务器并确保数据段在各个Historical之间保持良好的平衡。
**Overlord进程**
[Overlord](./Overlord.md) 监视Data服务中的MiddleManager进程并且是Druid数据接收的控制器。它们负责将接收任务分配给MiddleManager并协调数据段的发布。
#### Query服务
Query服务提供用户和客户端应用程序交互将查询路由到Data服务或其他Query服务以及可选的代理Master服务请求
在Query服务中功能上分为两个进程Broker和Router。
**Broker进程**
[Broker](./Broker.md)从外部客户端接收查询并将这些查询转发到Data服务器, 当Broker接收到子查询的结果时它们会合并这些结果并将其返回给调用者。用户通常查询Broker而不是直接查询Data服务中的Historical或MiddleManager进程。
**Router进程可选**
Router进程是*可选*的进程相当于是为Druid Broker、Overlord和Coordinator提供一个统一的API网关。Router是可选的因为也可以直接与Druid的Broker、Overlord和Coordinator。
Router还运行着[Druid控制台](../Operations/manageui.md)一个用于数据源、段、任务、数据进程Historical和MiddleManager和Coordinator动态配置的管理UI。用户还可以在控制台中运行SQL和本地Druid查询。
#### Data服务
Data服务执行摄取作业并存储可查询数据。
在Data服务中根据功能被分为两个进程Historical和MiddleManager。
#### Historical进程
[Historical](./Historical.md) 进程是处理存储和查询"Historical"数据包括系统中已提交足够长时间的任何流数据的工作程序。Historical进程从深层存储下载段并响应有关这些段的查询他们不接受写操作。
#### MiddleManager进程
[MiddleManager](./MiddleManager.md) 进程处理将新数据摄取到集群中的操作, 他们负责读取外部数据源并发布新的Druid段。
**Peon进程**
[Peon](./Peons.md) 进程是由MiddleManagers生成的任务执行引擎。每个Peon运行一个单独的JVM负责执行一个任务。Peon总是和孕育它们的MiddleManager在同一个主机上运行。
#### Indexer进程可选
[Indexer](./Indexer.md) 进程是MiddleManager和Peon的替代方法。Indexer在单个JVM进程中作为单个线程运行任务而不是为每个任务派生单独的JVM进程。
与MiddleManager + Peon系统相比Indexer的设计更易于配置和部署并且能够更好地实现跨任务的资源共享。Indexer是一种较新的功能由于其内存管理系统仍在开发中因此目前被指定为[实验性的特性](../Development/experimental.md)。它将在Druid的未来版本中继续成熟。
通常您可以部署MiddleManagers或indexer但不能同时部署两者。
### 服务混合部署的利弊
Druid进程可以基于上面描述的Master/Data/Query服务组织进行混合部署这种部署方式通常会使大多数集群更好地利用硬件资源。
但是对于非常大规模的集群可以分割Druid进程使它们在单独的服务器上运行以避免资源争用。
本节介绍与进程混合部署相关的指南和配置参数。
#### Coordinator和Overlord
Coordinator进程的工作负载往往随着集群中段的数量而增加。Overlord的工作量也会根据集群中的分段数而增加但程度要比Coordinator小。
在具有非常大量的段的集群中可以将Coordinator进程和Overlord进程分开以便为Coordinator进程的分段平衡工作负载提供更多资源。
**统一进程**
通过设置 `druid.Coordinator.asOverlord.enabled` 属性Coordinator进程和Overlord进程可以作为单个组合进程运行。
有关详细信息,请参阅[Coordinator配置](../Configuration/configuration.md#Coordinator)。
#### Historical和MiddleManager
对于更高级别的数据摄取或查询负载将Historical进程和MiddleManager进程部署在不同的主机上以避免CPU和内存争用。
Historical还受益于为**内存映射段**提供可用内存这也是分别部署Historical和MiddleManager进程的另一个原因。