如何更改Janusgraph客户端读取一致性?

如何更改Janusgraph客户端读取一致性?,graph,cassandra,janusgraph,consistency,quorum,Graph,Cassandra,Janusgraph,Consistency,Quorum,我不熟悉Janusgraph,使用Cassandra作为后端数据库。我有一个查询,它使用查找节点的所有传入边。为此,我需要在Janusgraph配置中将读取一致性设置为1。我尝试了以下配置,但无法获得正确的读取一致性: public static JanusGraph create() { JanusGraphFactory.Builder config = JanusGraphFactory.build(); config.set("storage.backend", "cas

我不熟悉Janusgraph,使用Cassandra作为后端数据库。我有一个查询,它使用查找节点的所有传入边。为此,我需要在Janusgraph配置中将读取一致性设置为1。我尝试了以下配置,但无法获得正确的读取一致性:

public static JanusGraph create() {
    JanusGraphFactory.Builder config = JanusGraphFactory.build();
    config.set("storage.backend", "cassandrathrift");
    config.set("storage.cassandra.keyspace", "cs_graph");
    config.set("storage.cassandra.read-consistency-level","ONE");
    config.set("storage.cassandra.write-consistency-level","ONE");
    config.set("storage.cassandra.frame-size-mb", "128");
    config.set("storage.cassandra.thrift.cpool.max-wait", 360000);
    config.set("storage.hostname", "10.XXX.1.XXX");
    config.set("connectionPool.keepAliveInterval","360000");
    config.set("storage.cql.only-use-local-consistency-for-system-operations","true");

    graph = config.open();
    System.out.println("Graph = "+graph);
    traversalSource = graph.traversal();
    System.out.println("traversalSource = "+traversalSource);
    getAllEdges();
    return graph;
}
但是,客户端仍在仲裁级别上显示CassandraTransaction的一致性

以下是日志:

16:40:54.799[主]调试o.j.d.cassandra.Cassandrat传输- 创建CassandraTransaction@25e2a451[读=法定人数,写=法定人数] 16:40:54.800[主]调试o.j.d.cassandra.Cassandrat传输- 创建CassandraTransaction@1698ee84[读=法定人数,写=法定人数]全部 边缘=100000 16:40:55.754[主]调试 o、 j.g.database.StandardJanusGraph-关闭图形 使用停机挂钩的标准JanusGraph[cassandrathrift:[10.70.1.167]] 线程[Thread-5,5,main]16:40:55.755[main]调试 o、 j.d.cassandra.Cassandrat交易-已创建 CassandraTransaction@3e5499cc[读=法定人数,写=法定人数]16:40:55.755 [main]调试o.j.d.cassandra.CassandraTransaction-已创建 CassandraTransaction@67ab1c47[读=法定人数,写=法定人数]16:40:56.113 [main]调试o.j.d.cassandra.CassandraTransaction-已创建 CassandraTransaction@6821ea29[读=法定人数,写=法定人数]16:40:56.542 [main]调试o.j.d.cassandra.CassandraTransaction-已创建 CassandraTransaction@338494fa[读=法定人数,写=法定人数]16:40:56.909 [main]信息o.j.d.c.t.CassandraThriftStoreManager-封闭式储蓄 连接池


关于如何将其更改为一个或本地一致性级别的任何建议???

首先,我会切换到通过CQL连接,而不是节俭。Thrift已经被弃用了,因此它没有看到任何缺陷修复改进的好处。换句话说,如果它天生就坏了,它就不会被修复。所以你最好使用CQL

config.set("storage.backend", "cql");
config.set("storage.cql.keyspace", "cs_graph");
storage.cql.read-consistency-level=ONE
storage.cql.write-consistency-level=ONE
其次,您需要确保始终使用存储后端的配置属性。不幸的是,JanusGraph和Cassandra很容易混淆

config.set("storage.cassandra.read-consistency-level","ONE");
config.set("storage.cassandra.write-consistency-level","ONE");
....
config.set("storage.cql.only-use-local-consistency-for-system-operations","true");
在上面的示例中,您已经在
storage.cassandra
(节俭)和
storage.cql
(cql)配置上设置了属性

如果仍然不起作用,请尝试添加此设置:

log.tx.key-consistent=true
将事务日志设置为密钥一致将覆盖其默认的
QUORUM
一致性访问(如果显示为
QUORUM