关于多数据中心部署中路由表的注意事项
使用官方 Neo4j 驱动程序意味着您可以利用驱动程序完整的集群路由功能。这意味着您的请求将自动路由到适当的实例。
-
如果您的请求是写操作:它将被路由到 Leader 实例。
-
如果您的请求是读操作:它将被路由到 Follower/Read Replica 实例。
社区驱动程序也存在于许多语言中,但在功能集、成熟度和支持方面差异很大。要了解有关社区驱动程序的更多信息,请访问 https://neo4j.ac.cn/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
来调整此值。
-
此页面有帮助吗?