编程实践Golang 实现雪花算法

Posted 禅与计算机程序设计艺术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程实践Golang 实现雪花算法相关的知识,希望对你有一定的参考价值。

1. 雪花算法

1.1.1. 关于雪花

雪花(snowflake)在自然界中,是极具独特美丽,又变幻莫测的东西:

  • 1.雪花属于六方晶系,它具有四个结晶轴,其中三个辅轴在一个基面上,互相以60度的角度相交,第四轴(主晶轴)与三个辅轴所形成的基面垂直;
  • 2.雪花的基本形状是六角形,但是大自然中却几乎找不出两朵完全相同的雪花,每一个雪花都拥有自己的独有图案,就象地球上找不出两个完全相同的人一样。许多学者用显微镜观测过成千上万朵雪花,这些研究最后表明,形状、大小完全一样和各部分完全对称的雪花,在自然界中是无法形成的。

1.1.2. 雪花算法

雪花算法的原始版本是scala版,用于生成分布式ID(纯数字,时间顺序),订单编号等。

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

1.1.3. 算法描述

  • 最高位是符号位,始终为0,不可用。
  • 41位的时间序列,精确到毫秒级,41位的长度可以使用69年。时间位还有一个很重要的作用是可以根据时间进行排序。
  • 10位的机器标识,10位的长度最多支持部署1024个节点

以上是关于编程实践Golang 实现雪花算法的主要内容,如果未能解决你的问题,请参考以下文章

编程实践使用golang 解析json字符串代码 / 使用 golang 实现一个HashSet / 使用C语言实现KMP算法,并加上非常详尽的注释。

架构实践使用 golang 实现一致性Hash算法代码

编程实践Golang 实现 Yaml编码和解码

编程实践Golang 实现中文分词

golang-raft算法理论与实践

Golang实践录:使用gin框架实现转发功能:一些负载均衡算法的实现