0

看了 Janusgraph 的文档,了解到高可用只存在于存储系统或后端。(卡桑德拉)。但是,GremlinServers 上是否有高可用性?

例如在模式 16.3 中。Gremlin 服务器的远程服务器模式。我明白带齿的轮子是我的应用

建筑形象

如果我的 Gremlin 服务器断电,则连接到 gremlinserver 的两台服务器将无法提供服务。gremlinserver 中没有故障转移或容错功能?

我使用带有两个参数的属性文件:

GremlinServerHost = 127.0.0.1
GremlinServerPort = 8182

用 DI 设置弹簧

<bean id="gremlinCluster" class="[FQDN].pool.GremlinCluster" scope="singleton" destroy-method="destroy">
    <constructor-arg name="server"><value>${GremlinServerHost}</value></constructor-arg>
    <constructor-arg name="port"><value>${GremlinServerPort}</value></constructor-arg>
</bean>

private Cluster init() {
..
..
        Cluster cluster = Cluster.build(server).port(port)
..
;

..

和一个实现

Cluster cluster = gremlinCluster.getCluster();
        Client client = null;
        try {
            client = cluster.connect();
            String gremlin = "[Query Gremlin ...   ]"
4

1 回答 1

2

Gremlin Server 实例彼此不了解,但是根据您在应用程序中配置 TinkerPop 驱动程序的方式,您将获得某种程度的故障转移,即如果驱动程序发现死服务器,它会注意到这一点并且然后只向您配置的其他可用服务器发送请求。在后台,它将不断尝试重新连接到死服务器,如果它重新联机,它将把它包含在它将向其发送请求的服务器池中。

因此,在您提出的场景中,只要有可用的服务器,您的应用程序就不应该知道其中的区别。当然,这意味着剩余的活动服务器将承担应用程序其他部分的负载。

请注意,如果您在驱动程序中使用会话,则已关闭的服务器的会话将丢失。Gremlin Server 实例之间不共享会话信息。因此,要获得任何形式的高可用性,您需要确保使用无会话通信。

于 2017-11-22T12:01:06.977 回答