比较 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 版本中引入的所有新功能的完整列表,请参阅下表
此页面对您有帮助吗?