知识库

如何监控Follower是否与Leader(因果集群)同步

要监控 Follower 是否与其 Leader 同步,或了解其落后程度,可以检查 Leader 和 Follower 的 最后提交事务 ID

最后提交事务 ID 可以通过以下方式之一评估

  • 通过 Neo4j Browser

  • 通过 Neo4j 指标

  • 通过 JMX MBeans

1. 从 Neo4j Web 界面检查最后事务 ID

通过 Neo4j Browser

  • 输入 :sysinfo 并按回车键

  • 在“事务”框架中,找到参数“最后事务 ID”

您也可以通过以下方式调用 dbms.queryJmx 过程

call dbms.queryJmx("org.neo4j:instance=kernel#0,name=Transactions") yield attributes
return attributes["LastCommittedTxId"]

2. 通过 Neo4j 指标检查最后提交事务 ID

假设 Neo4j 的 CSV 指标已启用,您可以分析以下 CSV 文件:neo4j.transaction.last_committed_tx_id.csv

从 3.4 版本开始,指标默认启用。如果您运行的是 3.4 之前的任何版本,则需要在所有实例的 neo4j.conf 文件中启用指标。请参考 https://neo4j.ac.cn/docs/operations-manual/current/monitoring/metrics/#metrics-enable 来进行操作。

3. 通过 JMX MBeans 检查最后提交事务 ID

请查看

  • LastCommittedTxId

如果您愿意,可以使用 curl 完成此操作

$ curl -v https://:7474/db/manage/server/jmx/domain/org.neo4j/instance%3Dkernel%230%2Cname%3DTransactions

有关受支持的 Neo4j JMX MBeans 以及如何以编程方式或通过 JConsole 连接到 JMX 监控的更多信息,请参考 https://neo4j.ac.cn/docs/java-reference/current/jmx-metrics/

确定 Follower 落后于 Leader 的程度

要确定 Follower 落后于 Leader 的程度,您可以比较 Leader 和 Follower 的最后提交事务 ID(通过上述任何方法评估)

(Last Commited Transaction Id)_leader - (Last Commited Transaction Id)_follower

差异越大,Follower 落后越多(在已提交事务方面)。由于数据传播取决于事务大小、并发性、硬件、网络延迟等多种因素的组合,因此几乎不可能将所有这些关联到一个时间单位中。

重要提示:Neo4j 因果集群的一个要求是保护数据。核心服务器通过使用 Raft 协议复制所有事务来实现这一点。这确保了数据在向最终用户应用程序确认事务提交之前是安全持久的。实际上,这意味着一旦集群中大多数核心服务器 (N/2+1) 接受了事务,就可以安全地向最终用户应用程序确认提交。此安全要求会对写入延迟产生影响,因此在监控和确定是否存在问题时,请务必考虑到这一点。

您可以在此处阅读更多关于 Neo4j 因果集群的信息:https://neo4j.ac.cn/docs/operations-manual/current/clustering/introduction/

© . All rights reserved.