比较 HA 集群与因果集群
自 Neo4j 3.5 版本起,传统的 HA 集群模式已被弃用,并将在 4.0 版本中彻底移除,4.0 预计在 2019 年底发布。
此外,根据 Neo4j 支持条款,Neo4j 在发布后提供 18 个月的补丁支持。
这意味着,尽管客户仍可在最新的 3.5.x 版本中使用 HA 功能,但今后不会再为 HA 组件提供新特性发布,所有开发工作都将转向因果集群。因果集群已存在近 3 年,并已在数百家生产环境客户中使用。
因此,所有新的集群实现以及现有的 HA 实现应在可行时迁移至因果集群。
下面的表格提供了 HA 集群与因果集群的高层对比概览,列出了主要差异。
因果集群 |
高可用性 (HA) 集群 |
Raft 协议 |
Paxos 协议 |
最少 3 台实例 |
最少 1 台实例 + 可选仲裁者 |
核心节点集合(3、5 或 7 台)+ 只读副本 |
主节点 (1) + 从节点 (0 或更多) |
事务在集群中多数核心服务器(2N+1)接受后即提交 |
事务首先在主节点提交,然后乐观地推送到从节点(不保证从节点提交) |
无分支 |
可能导致分支 (/docs/operations-manual/current/ha-cluster/architecture/#_branching) |
通过 Bolt 驱动实现内置负载均衡和路由(驱动维护所有核心领袖、跟随者以及只读副本的路由表) |
需要额外的负载均衡层 |
集群内部加密 |
None |
多集群 |
None |
多数据中心 |
None |
最大差异之一在于因果集群提供的额外保护层,确保零分支和零数据损坏的可能性,而 HA 由于其底层架构容易出现分支或数据损坏。
另一个值得关注的点是因果集群中的 “bolt+routing” 功能,它为连接集群的应用提供内置的自动负载均衡,从而无需像 HA 集群那样额外配置负载均衡层,使整体架构更简洁、更可靠。
在从使用 HA 集群的旧版 Neo4j 实现迁移时,请注意 REST API (/docs/rest-docs/current) 已在 Neo4j 3.4 起被弃用,并将在 Neo4j 4.0 中移除。因此建议改用 Cypher 或过程式调用,可通过官方驱动的 Bolt(Bolt+routing)或 HTTP API 实现。
在选择客户端层(如 HTTP(s) API 与 Bolt)时,需要注意 Bolt 不仅提供了 Python、Java、JavaScript、.Net 和 Go 的官方驱动,浏览器以及其他工具(如 cypher-shell 或 Neo4j Bloom)也全部使用 Bolt 与数据库通信。
作为额外的安全考虑,Bolt 可以使用 TLS,并可在客户端配置加密,同时使用服务端证书。
以下几篇文章提供了关于 bolt、http 与因果集群之间差异的更多见解。
话虽如此,对于现有的 HA 应用,客户可以通过一次简单的备份/恢复以及少量配置更改,首先迁移到因果集群;随后再根据需要对负载均衡或 Bolt 与 HTTP 的选择进行重新架构。
要查看每个 3.x 版本中引入的全部新特性的完整列表,请参考下面的表格。

此页面有帮助吗?