关于多数据中心部署的路由表考虑
使用官方 Neo4j 驱动程序意味着您可以充分利用驱动程序的完整集群路由功能。这会使请求自动路由到适当的实例。
-
如果您的请求是写操作:它将被路由到 Leader 实例。
-
如果您的请求是读操作:它将被路由到 Follower/只读副本 实例。
|
社区驱动程序也支持多种语言,但在功能集、成熟度和支持方面差异很大。要了解更多关于社区驱动程序的信息,请访问 /developer/language-guides/。 |
在使用 1.3 版或以上的驱动程序并配合 3.2 版或以上的 Neo4j Causal Cluster 时,可以使用带有路由上下文的路由驱动程序。在这种设置下,路由驱动程序可以通过 bolt+routing URI 的查询部分包含首选路由上下文。 在标准 Neo4j 配置中,路由上下文由服务器策略在服务器端定义。因此,驱动程序以服务器策略的形式将路由上下文传递给集群,并依据该服务器策略从集群获取更精细的路由信息。
在部署多数据中心集群时,我们通常希望利用地理位置优势来降低延迟、提升性能。因此强烈建议将服务器组配置为能够映射到数据中心、可用区或运营者域中的任何其他重要拓扑元素。
然而,即使您已正确配置服务器组,仍可能在某些请求中观察到更高的延迟。如果出现这种情况,通常是路由表的填充导致的。当我们从 Core 服务器获取路由表时,是以随机方式进行的,而不遵循服务器策略。这样设计的原因是为了防止实例反复发送过期路由信息的情况。
驱动程序在以下 3 种情况下会拉取新的路由信息:
-
驱动对象创建时
-
driver driverObj = new driver( "bolt+routing://server:7687?policy=EU" )
-
-
连接失败时
-
当出现连接失败时,驱动程序会将路由表标记为过期,并从随机的 Core 节点拉取新表。
-
-
TTL(生存时间)到期时
-
TTL 过期时会重新获取路由表。默认值为 300 秒,您可以通过在
neo4j.conf中设置causal_clustering.cluster_routing_ttl来进行调节。
-
此页面有帮助吗?