如何在 Rexster 配置中将多个 cassandra 节点配置为 storage.backend?

How configure multiple cassandra nodes as storage.backend in Rexster config?

我在机器上有 Titan/Rexter 运行 和 Cassandra 的 3 节点集群作为 Titan 图形数据库的 storage.backend。我想配置 Rexster,以便连接到 Cassandra 集群的所有 3 个节点。我列出了 cassandra 所有节点的 ip 地址,以逗号分隔,如下所示。

<graph>
    <graph-name>graph</graph-name>
    ...
    <properties>
        <storage.backend>cassandrathrift</storage.backend>
        <storage.hostname>10.240.182.197,10.240.166.40,10.240.78.153</storage.hostname>
        ...
        </properties>
</graph>

但似乎 Rexster 仅连接到第一个节点“10.240.182.197”,这意味着如果我关闭节点 - 10.240.182.197,Rexster 将无法连接到其他节点并引发异常

Rexster 启动日志

[INFO] RexsterApplicationGraph - Graph [graph] - configured with allowable namespace [tp:gremlin]
**[INFO] GraphConfigurationContainer - Graph graph - titangraph**[cassandrathrift:10.240.182.197]** loaded**
[INFO] RexsterApplicationGraph - Graph [tinkergraph] - configured with allowable namespace [tp:gremlin]
[INFO] GraphConfigurationContainer - Graph tinkergraph - tinkergraph[vertices:0 edges:0 directory:data/graph-example-1] loaded

[更新] 我将配置从 "cassandrathrift" 更改为 "cassandra",现在它能够连接到所有节点。

现在我的问题是为什么 "cassandrathrift" API 无法连接到其他节点? 使用 "cassandrathrift" 和 "cassandra" 有什么区别?优点缺点? 哪个更快地加载和检索数据到图表中?

"Cassandrathrift" 适配器本身没有负载平衡或节点发现的智能。它总是尝试连接到第一个列出的主机 ip,没有负载平衡,当 ip1 出现故障时,Rexster 停止。 使用 astyanax 适配器,将获得自动环发现和故障检测。将 storage.backend 设置为 "cassandra",如下所示。

修改配置(rexster.xml):-

<graph>
    <graph-name>graph</graph-name>
    ...
    <properties>
        <storage.backend>cassandra</storage.backend>
        <storage.hostname>10.240.182.197,10.240.166.40,10.240.78.153</storage.hostname>
        ...
        </properties>
</graph>

在此反弹后 titan/rexster 并连接到所有节点。

参考:Aurelius › Rexster/Titan-Cassandra high availability