1

我在机器上运行 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”有什么区别?优点缺点?哪一个在将数据加载和检索到图形时更快?

4

1 回答 1

0

“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 反弹并连接到所有节点。

Ref : Aurelius › Rexster/Titan-Cassandra 高可用性

于 2015-04-09T11:21:04.027 回答