根据官方的文档,我们整理出了下面的这张进程的图。
在集群的部署环境下,你可以按照每个服务器来部署,换句话说就是有 3 台服务器,但是每台服务器上有 2 个进程。
你也可以每个进程部署一台服务器,那么这里将会需要有 6 台服务器。
主服务器(Master Server)
简单来说,主服务器的功能主要是对元数据进行维护和在不同进程之间进行数据的协调。
在这个服务器上,通常定义有下面 2 个进程:
Coordinator 和 Overlord 进程。
这 2 个进程可以合并在同一个服务器上,将会负责处理 metadata 数据和在你集群中进行协调。
数据服务器(Data server)
从字面上来看就是对数据进行处理的。
在这个服务器上定义有 2 个进程:
Historicals 和 MiddleManagers 进程
Historicals 通常被考虑用来处理历史数据,MiddleManagers 通常被考虑在当前的数据情况,段情况和对数据进行导入。
这 2 个进程可以合并在同一个服务器上,这个 2 个进程在你的集群中用于处理实际的数据。通常来说越大 CPU, RAM, SSDs硬盘越好。
查询服务器(Query server)
按照字母的理解来说,查询服务器就是为查询服务的,通常会从界面或者 HTTP 或者命令行中获得需要查询的脚本,然后将脚本处理成可用 JSON 格式,或者在处理的时候有错误需要返回给请求的发送者。
为了加快查询的效果,我们可能会对查询以及查询的结果缓存到内存中,因此 Druid Brokers 可以接受查询,并且将接受的查询发送到集群中处理。
同时他们也负责维护内存中的查询缓存, 常来说越大的 CPU, RAM 越好。
Router 这个进程如果从字面来看会有点困惑,你可能会认为是为了对查询进行调度使用的,其实 Router 就是在 Druid 提供 UI 界面的。
可以理解为 Router 是应因为服务,在这里 Router 启动后可以对 Druid 当前的情况进行查询,同时也可以进行查询,使用的是 NodeJs 部署的。
正是因为这样,Druid 的编译就只能在 Linux 下面完成,可以尝试在 Windows 环境下进行编译,但是你可能会遇到 NodeJS 的错误。
要跳过这个错误,就不编译 UI 界面就行。