Spring data neo4j多服务器
我正在为我的neo4j数据库使用spring data neo4j框架,我已经按照如下方式配置了neo4j服务器:Spring data neo4j多服务器,spring,neo4j,spring-data-neo4j,Spring,Neo4j,Spring Data Neo4j,我正在为我的neo4j数据库使用spring data neo4j框架,我已经按照如下方式配置了neo4j服务器: <bean id="graphDatabaseService" class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase"> <constructor-arg value="http://localhost:7474/db/data" />
<bean id="graphDatabaseService"
class="org.springframework.data.neo4j.rest.SpringRestGraphDatabase">
<constructor-arg value="http://localhost:7474/db/data" />
</bean>
<neo4j:config graphDatabaseService="graphDatabaseService" />
<neo4j:repositories base-package="sample" />
我的问题是如何在SDN中配置多个neo4j服务器,因为neo4j数据库支持HA,我们可以有多个从服务器和一个主服务器。SDN不允许您配置HA服务器列表,以便在使用
SpringRestGraphDatabase
类时向其发出请求。这意味着,如果您想要管理一个服务器集群,那么您需要将它们放在一个入口点后面。通常,您要做的是设置集群,然后在集群前面放置一个负载平衡器,让负载平衡器处理将读取请求路由到它喜欢的主/从节点(这可能只是循环),并将请求写入主节点。有一些文档说明如何配置HAProxy来实现这一点
一旦集群运行且负载平衡器路由请求满足,您就需要修改SDN配置,以负载平衡器为目标,这意味着更换http://localhost:7474/db/data
带有负载平衡器的地址
原始答案-SDN作为嵌入式HA服务器
假设您的SDN应用程序将成为集群中的一个服务器,那么您需要创建一个使用稍微不同模式的HighlyAvailableGraphDatabase:
<util:map id="config">
<entry key="ha.server_id" value="1"/>
<entry key="ha.initial_hosts" value="yourotherserver1:5001,yourotherserver2:5001"/>
</util:map>
<bean id="graphDbFactory"
class="org.neo4j.graphdb.factory.HighlyAvailableGraphDatabaseFactory"/>
<bean id="graphDbBuilder" factory-bean="graphDbFactory"
factory-method="newHighlyAvailableDatabaseBuilder">
<constructor-arg value="/path/to/local/filesystem/store"/>
</bean>
<bean id="graphDbBuilderFinal" factory-bean="graphDbBuilder" factory-method="setConfig">
<constructor-arg ref="config"/>
</bean>
<bean id="graphDatabaseService" factory-bean="graphDbBuilderFinal"
factory-method="newGraphDatabase" destroy-method="shutdown" />
<neo4j:config graphDatabaseService="graphDatabaseService"
base-package="your.graph.package"/>
这假设您有另外两台运行Neo HA节点的服务器,它们的值不是1。集群运行后,只要ha.server_id值不同,就可以插入新实例(用于水平扩展)
关于水平扩展的一个重要注意事项是,您仍然希望仅通过主服务器(您可以向从属服务器写入,但速度较慢),这需要在面向应用程序的负载平衡器上进行一些智能配置,或者在运行SDN时,使用一些定制代码延迟从属服务器上的写入。有关SDN和了解主/从设置的说明,请参见此
设置独立HA节点在本文档中有详细说明。
上有很多关于可用参数(用于配置映射)的文档。您是否打算将Spring应用程序用作Neo4J集群中的服务器?不,我说的是Neo4J数据库的水平扩展,我可以有多个数据库服务器,如何在SDN中配置它们??如果SDN不是集群的一部分,那么它不知道集群,您需要为其提供一个单独的(负载平衡器)端点。我将在回答中更清楚地说明这一部分。如何使用HA代理将所有写请求定向到主机?