知识库

比较 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) 接受该事务后才提交

事务首先在主服务器上提交,并乐观地推送到从服务器 (不保证从服务器提交)

无分支

可能导致分支 (https://neo4j.ac.cn/docs/operations-manual/current/ha-cluster/architecture/#_branching)

通过 Bolt 驱动程序内置负载均衡和路由 (驱动程序维护所有核心服务器领导者、跟随者和读取副本的路由表)

需要额外的负载均衡器层

集群内加密

多集群

多数据中心

最大的区别之一是因果集群提供了额外的保护层,以确保不会出现分支或数据损坏,而 HA 由于其底层架构而容易受到这些问题的影响。

另一个值得注意的方面是因果集群中的“bolt+routing”功能,该功能为连接到集群的应用程序提供内置的自动负载均衡,从而消除了对 HA 集群通常需要的任何额外负载均衡层的需求,从而实现了更简单、更强大的整体架构。

从使用 HA 集群的旧版 Neo4j 实现迁移时,请注意,REST API ( https://neo4j.ac.cn/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 应用程序,客户可以通过简单的备份/还原和一些简单的配置更改作为第一步,从 HA 迁移到因果集群,并且可以稍后解决有关负载均衡或 bolt 与 HTTP 选择的应用程序层重新架构。

有关每个 3.x 版本中引入的所有新功能的完整列表,请参阅下表

image