登录
首页 >  Golang >  Go问答

确保在多台机器上跨表生成唯一的键

来源:stackoverflow

时间:2024-04-12 17:45:28 299浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《确保在多台机器上跨表生成唯一的键》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

我想使用这个 Go 包 https://github.com/bwmarrin/snowflake 为 Postgresql 中的表生成主 int64 键。如果我的应用程序服务器至少在两台机器上运行,我如何防止生成重复的密钥?


解决方案


因此 Snowflake 提供了以 int64 形式存储的 63 位整数。根据文档,每个节点 ID 每毫秒可以生成 4096 个唯一 ID。让我们采用默认实现。即每毫秒 4096 * 1023 = 40961023 个 id,如果您在一秒钟内计算,您可以在多个节点上生成数十亿个唯一 id,并且很少会发生冲突。

所以我认为如果你在服务器的环境变量中传递一个节点ID并根据它生成ID你应该是安全的。

它还有助于根据实体或域向 id 添加一些前缀,以便获得更多的熵,从而减少冲突。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>