架构
RisingWave 是分布式系统。其拥有以下组件:
- 元节点(meta node)
- 工作节点(worker node)
- 计算节点(compute node)
- 压缩节点(compact node)
元节点存储元数据(metadata),例如数据库名、表名、列名、物化视图名、计算进度等等。元节点是整个系统中的大脑,一旦元数据丢失,会导致整个集群数据丢失或不可恢复。目前,RisingWave 采用 etcd 作为元节点存储。但在一些场景下,etcd 表现欠佳。因此已经在考虑使用其他服务替换 etcd。
工作节点可以被细分为计算节点与压缩节点。其中,计算节点负责流计算与随机查询。RisingWave 使用 LSM tree 结构管理计算内部状态。LSM tree 会不断对数据进行压缩打包,将数据从无序变为有序。LSM tree 中的压缩过程会消耗大量计算资源,因此 RisingWave 单独引入了压缩节点,将压缩过程卸载到专门的压缩节点上,以此减小 LSM tree 中的压缩对流计算的影响。
实际上,RisingWave 还有更多模块,包括专门的查询服务节点,以响应用户的高并发查询。尽管这些模块可以独立出来变成单独节点,但由于在大部分场景下用户不需要感知这类节点,因此我们就不在此描述。