Meta 服务Graph
本文介绍 Meta 服务的架构和功能。
Meta 服务架构Graph
Meta 服务是由 nebula-metad 进程提供的,用户可以根据场景配置 nebula-metad 进程数量:
- 测试环境中,用户可以在 NebulaGraph 集群中部署1个或3个 nebula-metad 进程。如果要部署3个,用户可以将它们部署在1台机器上,或者分别部署在不同的机器上。
- 生产环境中,建议在 NebulaGraph 集群中部署3个 nebula-metad 进程。请将这些进程部署在不同的机器上以保证高可用。
所有 nebula-metad 进程构成了基于 Raft 协议的集群,其中一个进程是 leader,其他进程都是 follower。
leader 是由多数派选举出来,只有 leader 能够对客户端或其他组件提供服务,其他 follower 作为候补,如果 leader 出现故障,会在所有follower 中选举出新的 leader。
Note
leader 和 follower 的数据通过 Raft 协议保持一致,因此 leader 故障和选举新 leader 不会导致数据不一致。更多关于 Raft 的介绍见附录。
Meta 服务功能Graph
管理用户账号Graph
Meta 服务中存储了用户的账号和权限信息,当客户端通过账号发送请求给Meta 服务,Meta 服务会检查账号信息,以及该账号是否有对应的请求权限。
更多 NebulaGraph 的访问控制说明,请参见Graph。
管理分片Graph
Meta 服务负责存储和管理分片的位置信息,并且保证分片的负载均衡。
管理图空间Graph
NebulaGraph 支持多个图空间,不同图空间内的数据是安全隔离的。Meta 服务存储所有图空间的元数据(非完整数据),并跟踪数据的变更,例如增加或删除图空间。
管理 Schema 信息Graph
NebulaGraph 是强类型图数据库,它的 Schema 包括 Tag、Edge type、Tag 属性和 Edge type 属性。
Meta 服务中存储了 Schema 信息,同时还负责 Schema 的添加、修改和删除,并记录它们的版本。
更多 NebulaGraph 的 Schema 信息,请参见Graph。
管理基于TTL的数据回收Graph
Meta 服务提供基于 TTL(Time To Live) 的自动数据回收和空间回收。
管理作业Graph
Meta 服务中的作业管理模块负责作业的创建、排队、查询和删除。