gpt4 book ai didi

java - 使用 Cassandra 3.0 的序列生成器/自动增量

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:20:10 25 4
gpt4 key购买 nike

我阅读了大量 Cassandras 文档并检查了计数器更改等。但 Cassandra 并没有提供默认和标准的方式来即时生成增量序列。

我发现的只是通过比较和设置来使用 IF 语句/子句。

通过这种方式可以检查文档是否存在,如果不存在则生成一个。由于这是通过一个被视为集群的仲裁算法完成的,因此它应该易于使用且安全,但具有高延迟。

为了避免这种延迟,可以通过将 nextSequenceId 递增一千而不是一来生成(保留)一千个 ID。这样,只有在生成千个中的第一个时,才需要为延迟付费(或者如果过早完成,则几乎没有延迟)。

我知道这样做会造成热点或拥塞。

避免这种拥塞的一种方法是使用更多的序列号生成器,所有生成器都按不同的偏移量(模数)进行,并通过选择模数随机选择某个序列生成器来限制冲突的机会。

所以这将是我天真的实现。

自从 Cassandra 3.0 面世以来,我只想知道三件事:

  1. Cassandra 是否提供了一种更智能的序列实现方式。
  2. Cassandra 是否提供了一些东西来减轻实现这个的痛苦?我的意思是我做了一个阅读,然后我做了比较和设置。有没有更聪明的东西?
  3. 是否存在任何图书馆已经给我某种序列号?

最佳答案

Jonathan 已为此主题打开了一个 Jira - https://issues.apache.org/jira/browse/CASSANDRA-9200

3.0 尚未发布,但似乎提交者正在最终确定 3.0 的功能,并且 9200 似乎设置为 3.1(这实际上意味着“3.0 之后的某个时间”- 可能是 3.1,可能是 3.2,可能是 4.0)。

对于您的问题:

1) 不,目前没有在 cassandra 中进行排序的内置方法

2) 不,如果您可以容忍不严格递增的序列,您将不得不执行先读后写,或者屏蔽每个节点的序列部分

3) Twitter 曾发布过 Snowflake ( https://github.com/twitter/snowflake ),但现在已停用。通常,我倾向于使用类型 1 UUID,它们是基于时间戳的随机组件。即使 UUID 也不是万无一失的,但对于我们的工作负载来说,它们往往“足够好”。 Simpleflake ( http://engineering.custommade.com/simpleflake-distributed-id-generation-for-the-lazy/ ) 在我提供的链接中讨论了权衡,还提供了他们自己的生成器。

关于java - 使用 Cassandra 3.0 的序列生成器/自动增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29880476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com