知识库

比较 HA 集群与因果集群

传统的 HA 集群模式自 Neo4j 3.5 版起已被弃用,并将在 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 或存储过程,可通过使用官方驱动程序或 HTTP API 的 Bolt (Bolt+routing) 方式实现。

在选择客户端层,例如 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

© . All rights reserved.