【问题标题】:setting consistency level from property从属性设置一致性级别
【发布时间】:2021-10-16 15:29:15
【问题描述】:

我正在使用 dse 驱动程序 3.6.8、java 8、spring 3.2.18 我正在尝试为每个表设置不同的一致性级别 所需的一致性级别存储在属性文件中

<entry key="consistency.level.strongWriteLevel">EACH_QUORUM</entry>
<entry key="consistency.level.strongReadLevel">LOCAL_QUORUM</entry>
<entry key="consistency.level.lightWriteLevel">TWO</entry>
<entry key="consistency.level.lightReadLevel">ONE</entry>

我试过了

@Component
@Table(name = "someName",
        readConsistency = "${consistency.level.strongReadLevel}",
        writeConsistency = "${consistency.level.strongWriteLevel}")
public class MMBaseLoginHistory {

但它没有用。 我知道我可以在覆盖@Table CL 的映射器上设置 CL,但我至少想知道它是否可能。

我尝试了这段代码的多种变体,有或没有@Component 通过添加字段

@Value("${consistency.level.strongReadLevel}")
private String strongReadLevel;

然后尝试引用它

@Component
@Table(name = "someName",
        readConsistency = strongReadLevel)
public class MMBaseLoginHistory {

以前的都没有用

编辑: 我找到了这个解决方案,但它一点也不让我满意

import static com.cardlinkin.mm.model.beans.MMBaseLoginHistory.writeConsistencyLevel;
import static com.cardlinkin.mm.model.beans.MMBaseLoginHistory.readConsistencyLevel;

@Component
@Table(name = "someName",
        writeConsistency = writeConsistencyLevel,
        readConsistency = readConsistencyLevel)
public class MMBaseLoginHistory {

    @Value("${consistency.level.strongWriteLevel}")
    public static final String writeConsistencyLevel = "";
    @Value("${consistency.level.strongReadLevel}")
    public static final  String readConsistencyLevel = "";

【问题讨论】:

    标签: cassandra datastax-java-driver


    【解决方案1】:

    这不是您问题的直接答案,但我想指出,我们的一般建议是使用LOCAL_QUORUM 进行读取和写入。在非常有限的极端情况下,其他一致性级别(例如 ONE)是合适的选择。

    例如,EACH_QUORUM 非常昂贵,您需要充分了解在 Cassandra DC 位于不同地理位置的情况下会招致的惩罚。要求来自远程 DC 的仲裁确认的代价可能会非常昂贵,因为网络上的延迟越高。

    如果 C* DC 位于相同的物理位置,或者如果 DC 之间的距离/延迟非常小,那么 EACH_QUORUM 的成本很低,您应该期望突变被成功复制,所以没有使用昂贵的 CL 的真正好处。

    同样,ONE 的一致性仅推荐用于一致性并不重要的用例。例如,如果一个帖子没有出现在某人的时间线上,它不会产生太大的影响,因为用户下次刷新他们的提要时会看到该帖子。干杯!

    【讨论】:

    • 感谢@Erick,事实是我不是负责选择 CL 的人。我只是被要求“参数化”这些,但毫无疑问我会在下次会议上提出你的观点
    • 我完全理解。 ?但我需要为将来会遇到这篇文章的其他用户指出这一点。干杯!
    猜你喜欢
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    相关资源
    最近更新 更多