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 转移),它会通过心跳的下行消息发送指令到Datanode
Datanode
不包含物理规划器(Physical planner)、优化器(optimizer)等组件(这些被放置在Frontend
中),用户对 一个或多个Table
的查询请求会在Frontend
中被转换为Region
的查询请求,Datanode
负责处理这些Region
查询请求- 一个
Region Manager
用来管理Datanode
上的所有Region
s - GreptimeDB 支持可插拔的多引擎架构,目前已有的 engine 包括
File Engine
和Mito Engine