知识库

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

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

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

  • 从 Neo4j 浏览器

  • 通过 Neo4j 指标

  • 通过 JMX MBean

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

从 Neo4j 浏览器

  • 键入 :sysinfo 并按 Enter 键

  • 在“事务”框架中,找到参数“Last Tx 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 MBean 检查最后提交的事务 ID

请检查

  • LastCommittedTxId

如果您愿意,可以使用 curl 执行此操作

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

有关支持的 Neo4j JMX MBean 以及如何以编程方式或通过 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/