m0_37545770
yaoyuanloo1
采纳率100%
2019-05-30 17:57

我想问一下这雪花算法 ID是连续的 安全性是不是不好

5
已采纳

分布式ID生成系统 UUID与雪花(snowflake)算法
Leaf——美团点评分布式ID生成系统 -
https://tech.meituan.com/MT_Leaf.html

网游服务器中的GUID(唯一标识码)实现-基于snowflake算法-云栖社区-阿里云
https://yq.aliyun.com/articles/229420

UUID_STRING — Snowflake Documentation
https://docs.snowflake.net/manuals/sql-reference/functions/uuid_string.html

Twitter的分布式自增ID算法snowflake (Java版) - relucent - 博客园
https://www.cnblogs.com/relucent/p/4955340.html

雪花算法(snowflake) - 明月阁 - CSDN博客
https://blog.csdn.net/u011499747/article/details/78254990

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • u012737673 明教第三十四代觉主 2年前

    hello题主,我个人也经常用这个算法,简单说下我个人的理解。
    首先这个算法核心是依靠时间戳然后结合自增序列以及机器号等等构成,我们说的连续应该是指在一个毫秒内他是相对连续的,
    随着时间的增长,生成的id总体趋势是增长的,但是增长规律并不像mysql自增主键那样是严格自增的。
    其次,这个算法是可以进行扩展的,我们可以对算法进行一些改进,使其生成的id在单位时间内并不是“连续的”(如将自增序列打乱等等手段)
    ,这样可以增加其安全性,防止被外部“猜到”我们业务数据的规模。
    如果我们作为mysql主键来用(innodb),相对连续的主键索引性能也更好嘛。
    所以,主要还是结合我们自身的业务场景来使用,如果是内部系统做主键,那连续生成也无所谓的,如果是作为业务单号,暴露到
    外部,可以对算法做适当的改进,增加安全性。希望能帮到你,纯手打。^^

    点赞 3 评论 复制链接分享