neo4j 方案与 Bolt 方案——有什么区别,什么时候应该使用其中一种而不是另一种

The*_*Pea 2 neo4j

我正在设置 neo4j aura 数据库

\n

我有两种方案可供选择:

\n
    \n
  • neo4j+s://
  • \n
  • bolt+s://
  • \n
\n

有哪些相似之处?

\n
    \n
  • 它们似乎都有安全变体,使用“针对系统\xe2\x80\x99s 本地 CA 存储的加密和完整证书检查”。
  • \n
  • 他们似乎都支持ssc(自签名证书)变体
  • \n
\n

有什么区别?

\n
    \n
  • 此页面提到neo4j方案具有“路由”,但bolt没有\n
      \n
    • 但是这个页面提到了该bolt+routing计划
    • \n
    • 无论如何,“路由”是如何相关的,路由是否只适用于我们谈论 Neo4j 节点的“集群”与“单实例”配置(分布在许多服务器之间,而不是一台服务器)?
    • \n
    \n
  • \n
  • 我可以找到的页面说它bolt是“基于持久 TCP 的二进制协议”,表明它是“高性能”,那么它比 Neo4j 方案更好吗?\n
      \n
    • 其他页面说 Bolt 也可以通过 WebSocket 连接进行操作
    • \n
    \n
  • \n
  • 一些页面建议“该neo4j://方案取代bolt+routing://并可用于集群和单实例配置......”
  • \n
\n

连接到 Neo4j 托管 Aura 的实例,用户可以在 Neo4j+s 和 Bolt+s 方案之间进行选择

\n

Rol*_*olf 5

  • bolt+routing是该方案的祖先neo4j,在 Neo4j 3.x 版本中(其中 和+s+ssc通过显式配置指定的,而不是通过方案指定的)
  • neo4j, neo4j+s,neo4j+ssc暗示(客户端)路由,驱动程序将定期获取路由信息(最初从目标服务器)并适当地路由进一步的查询
  • bolt, bolt+s,bolt+ssc表示直接连接目标服务器

在 Neo4j 4 之前,单服务器实例不支持该neo4j方案,它们将无法返回路由信息。现在情况不再如此,这就是为什么使用该neo4j方案(或其变体)通常是一个很好的默认值,因为单实例和集群都支持它。

bolt在高度动态的集群环境中使用该方案是一个糟糕的主意。集群拓扑可以很快改变。例如,最初的目标服务器可能从领导者角色变为跟随者角色。当发生这种情况时,服务器开始无法提供写入服务。

neo4j方案(或其变体)避免了这个问题,因为驱动程序将保持集群拓扑的最新视图并相应地路由查询。

所有官方驱动程序都支持基于原始 TCP 的 Bolt。JavaScript 驱动程序还支持基于 Websocket 的 Bolt。Go 驱动程序还支持 Unix 套接字上的 Bolt。