Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring data neo4j多服务器_Spring_Neo4j_Spring Data Neo4j - Fatal编程技术网

Spring data 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" />

我正在为我的neo4j数据库使用spring data neo4j框架,我已经按照如下方式配置了neo4j服务器:

    <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代理将所有写请求定向到主机?