




















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

雪花算法的原始版本是scala版,用于生成分布式ID(纯数字,时间顺序),订单编号等。
自增ID:对于数据敏感场景不宜使用,且不适合于分布式场景。
GUID:采用无意义字符串,数据量增大时造成访问过慢,且不宜排序。

算法描述:
using System;
namespace System
{
/// <summary>
snowflake.go
package snowflake
// twitter 雪花算法
// 把时间戳,工作机器ID, 序列号组合成一个 64位 int
// 第一位置零, [2,42]这41位存放时间戳,[43,52]这10位存放机器id,[53,64]最后12位存放序列号
import "time"
var (
machineID int64
main.go
package main
import (
"fmt"
"reflect"
"snowflake"
"time"
)
func main() {
注意:在分布式系统中给每台机器设置一个int64的机器码,可以是IP编号+随机数,如
192168011234(192.168.0.1+1234)
测试结果:
结论:
理论上生成速率为kw/秒,所以完全满足一般企业级应用, 算法可靠(去重处理在此也是多此一举);
性能:100W+/秒;
参考:
https://blog.csdn.net/u011499747/article/details/78254990
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。