Navigation

    西南IT社区
    • Register
    • Login
    • Search
    • 主页
    • 问答
    • 话题
    • 热门
    • 圈子
    • 工作机会
    • 活动
    • 项目

    go语言snowflake雪花算法

    开源推荐
    go语言 snowflake雪花算法
    1
    1
    91
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • 卫恩赋
      卫恩赋 last edited by

      依据Go 语言实现的 Snowflake 算法,能够为分布式系统生成唯一ID,单机测试1秒可生成20万ID。

      Snowflake雪花算法产生的背景是为了解决twitter高并发环境下对唯一ID生成的需求,并且得益于twitter内部牛逼的技术,实际在业务中,会需要使用一些唯一的ID,用来记录我们某个数据的标识。

      最常用的记录方式无非以下几种:UUID方式、数据库自身自增主键、Redis的Incr命令等方法来获取一个唯一的值。

      Snowflake雪花算法的原始版本是scala版,最开始的存在是用于生成分布式ID,以纯数字的方式,并且按照时间顺序,应用在实际中还可以生成订单编号等。

      数据库自增ID:劣势在于对于数据敏感场景不宜使用,且不适合于分布式场景。 GUID:使用时会采用无意义字符串,且数据量增大时造成访问过慢,最大的缺陷在于不宜排序。

      Snowflake 结构是一个 64bit 的 int64 类型的数据。在应用到实际情况时可以根据自己的业务情况进行调整。

      Snowflake雪花算法的实现步骤是非常简单的,首先需要获取当前的毫秒时间戳;并且用当前的毫秒时间戳和上次保存的时间戳进行比较;此时会出现两种情况,如果和上次保存的时间戳相等,那么对序列号 sequence 加一;如果不相等,那么直接设置 sequence 为 0 即可;然后通过或运算拼接雪花算法需要返回的 int64 返回值。

      项目地址:
      https://gitee.com/GuaikOrg/go-snowflake

      ff5dacaf-1413-42a9-b061-f9e777dbde1a-image.png

      1 Reply Last reply Reply Quote 0
      • First post
        Last post
      使用HTML构建办公软件 使用HTML构建办公软件 使用HTML构建办公软件
      1
      光
      A
      庆
      小
      U
      Y
      L
      I
      Z
      I
      Y
      C
      Z
      E
      Y
      U
      I
      A
      Z
      Y
      Y
      罗
      R

      西南地区IT社群(QQ)
      云南
      【昆明网页设计交流吧】243627302
      【昆明nodejs交流吧】 243626749
      【VUE】838405306
      【云南程序员总群】343606807
      【昆明UI设计】104031254
      【云南软件外包】15547313
      贵州
      【PHP/java源码/站长交流群】55692114
      四川
      【成都Java/JavaWeb交流】86669225
      【vaScript+PHP+MySql】116270060
      【UI设计/设计交流学习群】135794928
      重庆
      【诺基亚 JAVA游戏博物馆】 559479780
      【PHP,Java,Python,C++接单】 442103442
      西藏
      社群
      昆明网页设计交流吧
      友情链接
      • Funtask
      • Funtask 社区
      • SUWIS
      ©2019-2021 滇ICP备20006698号