cassandra-无法实现一致性级别仲裁问题

z18hc3ub  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(300)

我在这个项目中使用cassandradb有几个目的。我正在尝试更新comments表中的count of voces\u up列。但我得到了这个错误。
在此处输入图像描述
我的评论表结构是。

CREATE TABLE opspot.comments (
    entity_guid varint,
    parent_guid_l1 varint,
    parent_guid_l2 varint,
    parent_guid_l3 varint,
    guid varint,
    access_id varint,
    attachments map<text, text>,
    body text,
    container_guid varint,
    flags map<text, boolean>,
    has_children boolean,
    owner_guid varint,
    owner_obj text,
    replies_count varint,
    score varint,
    time_created timestamp,
    time_updated timestamp,
    votes_down set<varint>,
    votes_up set<varint>,
    PRIMARY KEY (entity_guid, parent_guid_l1, parent_guid_l2, parent_guid_l3, guid)
) WITH CLUSTERING ORDER BY (parent_guid_l1 ASC, parent_guid_l2 ASC, parent_guid_l3 ASC, guid DESC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99PERCENTILE';

Cassandra正在使用一个数据中心,即datacenter1。图片如下。
在此处输入图像描述
当前的一致性级别是1。有1个节点。
有人能告诉我为什么我会有这个法定人数错误吗?根据我的研究,要获得稳定的仲裁状态,需要多个节点。更新记录时出现此错误。在没有创建副本的情况下,如何处理一个节点的这种情况?

xxe27gdn

xxe27gdn1#

QUORUM & LOCAL_QUORUM 是根据复制因子计算的,而不是根据群集中的节点数计算的,因此单节点群集中的仲裁是完全正确的。
在您的情况下,最可能的情况是您的节点没有按时应答,例如,由于垃圾收集或其他原因,在这种情况下,它没有达到必要的一致性级别。同样的问题也可能存在 ONE .
我不擅长使用php驱动程序,但在其他驱动程序中,您通常可以强制重试,通常应该使用默认重试策略—您只需要将语句标记为幂等(请参阅java驱动程序中有关重试策略的文档)。

相关问题