Datanode
Introduction
Datanode 主要的职责是为 GreptimeDB 存储数据,我们知道在 GreptimeDB 中一个 table 可以有一个或者多个 Region,
而 Datanode 的职责便是管理这些 Region 的读写。Datanode 不感知 table,可以认为它是一个 region server。
所以 Frontend 和 Metasrv 按照 Region 粒度来操作 Datanode。

Components
一个 datanode 包含了 region server 所需的全部组件。这里列出了比较重要的部分:
- 一个 gRPC 服务来提供对
Region数据的读写,Frontend便是使用这个服务来从Datanode读写数据。 - 一个 HTTP 服务,可以通过它来获得当前节点的 metrics、 配置信息等
Heartbeat Task用来向Metasrv发送心跳,心跳在 GreptimeDB 的分布式架构中发挥着至关重要的作用, 是分布式协调和调度的基础通信通道,心跳的上行消息中包含了重要信息比如Region的负载,如果Metasrv做出了调度 决定(比如 Region 转移),它会通过心跳的下行消息发送指令到DatanodeDatanode不包含物理规划器(Physical planner)、优化器(optimizer)等组件(这些被放置在Frontend中),用户对 一个或多个Table的查询请求会在Frontend中被转换为Region的查询请求,Datanode负责处理这些Region查询请求- 一个
Region Manager用来管理Datanode上的所有Regions - GreptimeDB 支持可插拔的多引擎架构,目前已有的 engine 包括
File Engine和Mito Engine