阅读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 ... ]"
答案 0 :(得分:2)
Gremlin Server实例彼此之间并不了解,但是根据您在应用程序中配置TinkerPop驱动程序的方式,您将获得一定程度的故障转移,如果驱动程序找到死机,它将会请注意,然后仅将请求发送到您配置的其他可用服务器。在后台,它将不断尝试重新连接到死服务器,如果它重新联机,它将把它包含在它将发送请求的服务器池中。
因此,只要有可用的服务器,您所提出的场景中,您的应用程序就不应该知道其中的差异。当然,这意味着剩余的活动服务器将承担应用程序其他部分的负载。
请注意,如果您正在使用与驱动程序的会话,则对于已关闭的服务器,会话将丢失。 Gremlin Server实例之间不共享会话信息。因此,要获得任何形式的高可用性,您需要确保使用无会话通信。