GDS 与 Neo4j 集群

此功能在 AuraDS 中不可用。

可以在 Neo4j 集群部署中运行 GDS。由于 GDS 使用系统的全部资源执行大规模计算,因此不适合在负责处理集群事务性工作负载的实例上运行。

部署

我们利用从属 (Secondary) 实例来部署 GDS 库并处理分析工作负载。对 GDS write 过程的调用会通过服务端路由 (server-side routing) 在内部定向到我们正在操作的数据库的 Writer(写入者)集群实例。

Neo4j 5.x 支持同一集群实例上的不同数据库充当集群的 Primary(主)或 Secondary(从)成员。为了使 GDS 能够正常工作,安装 GDS 的实例上的所有数据库都必须是 Secondary,包括 system 数据库(请参阅 server.cluster.system_database_modeinitial.server.mode_constraint)。GDS 具有计算密集型的 OLAP 工作负载,可能会干扰集群操作,因此我们建议将 GDS 安装在不负责处理事务性负载且不参与 Leader(领导者)选举的实例上。

请参阅 Neo4j 官方文档以了解有关如何设置 Neo4j 分析集群的详细信息。请注意,该链接指向最新版本的 Neo4j 文档,其配置设置可能与早期版本有所不同。

  • 集群必须至少包含一台 Secondary(从属)机器。

    • 单个 Primary(主)和一个 Secondary(从)是有效的方案。

    • 如果存在多个 Secondary 实例,GDS 工作负载不会进行负载均衡。

  • 集群应配置为使用 服务端路由 (server-side routing)

  • GDS 插件部署在 Secondary 实例上。

    • 必须在 Secondary 实例上安装并配置有效的 GDS 企业版许可证。

    • 驱动程序连接到所操作的 GDS 时,应使用 bolt:// 协议连接到 Secondary 实例。

有关设置、配置和管理 Neo4j 集群的更多信息,请参阅 相关文档

在处理集群配置时,应注意 Neo4j 中的 严格配置验证 (strict config validation)

在为 Secondary 实例配置 GDS 时,你需要在 neo4j.conf 中引入 GDS 特定的配置——这是可以的,因为安装了 GDS 插件后,Neo4j 可以正常验证这些配置项。

但是,你可能无法将同一个配置文件逐字复用到核心集群成员上,因为那里并没有安装 GDS 插件,因此 Neo4j 无法验证 GDS 特定的配置项。验证失败会导致 Neo4j 拒绝启动。

当然,也可以关闭严格验证功能。

我们利用 Read Replica(只读副本)实例来部署 GDS 库并处理分析工作负载。对 GDS write 过程的调用会通过服务端路由在内部定向到集群的 LEADER(领导者)实例。

请参阅 Neo4j 官方文档以了解有关如何设置 Neo4j 因果集群 (Causal Cluster) 的详细信息。请注意,该链接指向最新的 Neo4j 4.x 版本文档,其配置设置可能与早期版本有所不同。

  • 集群必须至少包含一个 Read Replica(只读副本)实例。

    • 单个 Core member(核心成员)和一个 Read Replica(只读副本)是有效的方案。

    • 如果存在多个 Read Replica 实例,GDS 工作负载不会进行负载均衡。

  • 集群应配置为使用 服务端路由

  • GDS 插件部署在 Read Replica 上。

    • 必须在 Read Replica 上安装并配置有效的 GDS 企业版许可证。

    • 驱动程序连接到所操作的 GDS 时,应使用 bolt:// 协议,或通过服务器策略路由 (server-policy routed) 连接到 Read Replica 实例。

有关设置、配置和管理 Neo4j 因果集群的更多信息,请参阅 相关文档

GDS 配置

以下可选设置可用于控制事务大小。

属性 默认

gds.cluster.tx.min.size

10000

gds.cluster.tx.max.size

100000

写入节点属性的批处理大小是根据这两个值、配置的并发度以及节点总数计算得出的。写入关系的批处理大小使用两个设置中的较小值。有些过程支持批处理大小配置,如果过程调用参数中提供了该配置,则以参数为准。