代码之家  ›  专栏  ›  技术社区  ›  Harry

卡桑德拉的LWT和一致性

  •  0
  • Harry  · 技术社区  · 6 年前

    1) 我创建了一个复制因子为“3”的键空间

     CREATE KEYSPACE IF NOT EXISTS replicationtest WITH replication = {'class':'SimpleStrategy','replication_factor' : 3};
    

    注意:这是一个单节点集群,我仍然将复制因子保持为3,以便稍后向集群添加新节点

     cqlsh:replicationtest> CONSISTENCY ONE
    

    3) 我创建了一个“测试表”

    CREATE TABLE IF NOT EXISTS testtable("partitionId" text, "name" text, "value" text, primary key ("partitionId","name"));
    

    4) 现在我尝试简单的插入查询

    INSERT INTO testtable("partitionId", "name", "value") VALUES ('testtable','testname', 'testvalue');
    

    5) 现在我尝试用LWT插入查询(如果不存在)

    INSERT INTO testtable("partitionId", "name", "value") VALUES ('testtable','testnameanew', 'testvaluenew') IF NOT EXISTS; 
    

    现在它失败了 没有可用主机: 错误

    有人能解释一下怎么解决这个问题吗?如何执行一致性为1的LWT?

    1 回复  |  直到 5 年前
        1
  •  1
  •   Laxmikant    6 年前

    Lwt在引擎盖下使用串行一致的电平,由于RF是3,它期望s2节点是向上的。因此,操作如预期失败。阅读 this 了解更多信息。