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