知识库

比较 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 版本中引入的全部新特性的完整列表,请参考下面的表格。

image

© . This site is unofficial and not affiliated with Neo4j, Inc.