与 Neo4j 集群一起使用
Kafka Connect Neo4j 连接器是将 Kafka 与 Neo4j 集成的推荐方法,因为 Neo4j Streams 不再处于积极开发状态,并且在 Neo4j 4.4 版之后将不再受支持。 Kafka Connect Neo4j 连接器的最新版本可以在这里找到 这里。 |
概述
Neo4j 集群 是企业版中提供的一项功能,它允许数据库高可用性。
Neo4j 插件
当 Neo4j Streams 插件与 Neo4j 集群一起使用时,需要注意以下几点
-
该插件必须存在于**所有集群成员**的插件目录中,而不仅仅是一个。
-
配置设置必须存在于
-
4.0.7
之前版本的**所有 neo4j.conf 文件**中,而不仅仅是一个; -
4.0.7
及其之后的版本的**所有 streams.conf 文件**中,而不仅仅是一个。
-
在集群生命周期中,领导者可能会发生变化;因此,插件必须存在于任何地方,而不仅仅是在领导者上。
插件会检测领导者,并且不会尝试对 follower 执行写入操作(例如,在使用者的情况下),因为在那里操作会失败。插件会根据需要检查集群拓扑。
此外,对于 CDC,需要注意的是,从 Neo4j 3.5 开始,已提交的事务也仅在领导者上发布。实际上,这意味着当新的数据提交到 Neo4j 时,如果配置了生产者,则领导者将把该数据发布回 Kafka。
neo4j 流实用程序过程,特别是CALL streams.publish
,可以在任何集群成员或只读副本上工作。CALL streams.consume
也可在任何集群成员上使用,但是需要注意的是,由于 Neo4j 中集群的工作方式,将streams.consume
与写入操作一起使用在集群 follower 或只读副本上将不起作用,因为只有领导者才能处理写入操作。
远程客户端
有时会有远程应用程序通过官方驱动程序与 Neo4j 通信,并且希望使用流功能。在这些情况下,最佳实践是
-
在客户端应用程序中与集群通信时,始终使用
neo4j://
驱动程序 URI。 -
在客户端应用程序中使用显式写入事务,当使用诸如
CALL streams.consume
之类的过程调用时,以确保路由驱动程序将查询路由到领导者。