1

マシン上で Titan/Rexter を実行し、Titan グラフ DB の storage.backend として Cassandra の 3 ノード クラスターを使用しています。Cassandra クラスターの 3 つのノードすべてに接続するように Rexster を構成したいと考えています。以下に示すように、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 がバウンスし、すべてのノードに接続されました。

参照 : Aurelius › Rexster/Titan-Cassandra の高可用性

于 2015-04-09T11:21:04.027 に答える