【问题标题】:How to generate UUID(Long) using cassandra timestamp in cluster environment?如何在集群环境中使用 cassandra 时间戳生成 UUID(Long)?
【发布时间】:2015-06-02 12:37:51
【问题描述】:

我有一个要求,我们需要使用基于集群中的 Cassandra 时间戳的 Java 将 UUID 生成为 Long 值。谁能帮助如何使用 java 和 cassandra 集群时间戳组合来生成它?

【问题讨论】:

    标签: cassandra uuid


    【解决方案1】:

    使用TimeUUID cql3数据类型:

    timeuuid 类型的值是类型 1 UUID。 1 类 UUID 包括其生成时间并按时间戳排序,因此非常适合在需要无冲突时间戳的应用程序中使用。例如,您可以使用此类型通过时间戳标识列(例如博客条目),并允许多个客户端同时写入同一个分区键。不会发生可能会覆盖原本不打算被覆盖的数据的冲突。

    在 Java 中,您可以使用来自 com.datastax.driver.core.utils.UUIDsUUIDs 辅助类:

    UUIDs.timeBased()
    

    【讨论】:

    • 我可以使用下面的代码在应用程序中生成唯一的长 ID 吗?此代码可能同时命中多个客户端。 UUID uuid = UUIDs.timeBased(); Long id = uuid.timestamp();如果我们有任何其他选项来生成 UUID,您能帮我吗?
    • 基于时间的 uuid 包含两部分(两个 Long 值,不是一个!):时间戳和一些与节点相关的随机字节,以防止时间戳冲突。所以 TimeUUID 是在分布式环境中生成唯一时间戳的最佳选择:冲突概率非常低。
    • 你能分享 TimeUUID api 来生成唯一的时间戳吗?
    • 对不起,我以为 TimeUUID 是 api 类 :) 将使用相同的。谢谢
    • 是否可以从纪元时间戳值生成类型 1 UUID ?像 UUIDs.timeBased(epochTimeStamp) 之类的东西?
    猜你喜欢
    • 2021-01-30
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 2011-03-15
    相关资源
    最近更新 更多