雪花演算法生成分布式ID

2021-09-18 03:56:07 字數 1534 閱讀 6554

package top.sponger.common.util;

import lombok.data;

/** * 描述: twitter的分布式自增id雪花演算法snowflake

* **/

public class snowflake

if (machineid > max_machine_num || machineid < 0)

this.datacenterid = datacenterid;

this.machineid = machineid;

}/**

* 產生下乙個id

** @return

*/public synchronized long nextid()

if (currstmp == laststmp)

} else

laststmp = currstmp;

return (currstmp - start_stmp) << timestmp_left //時間戳部分

| datacenterid << datacenter_left //資料中心部分

| machineid << machine_left //機器標識部分

| sequence; //序列號部分

}private long getnextmill()

return mill;

}private long getnewstmp()

public static void main(string args)

system.out.println(system.currenttimemillis() - start);

}}

package top.sponger.userservice.util;

import org.springframework.beans.factory.annotation.value;

import top.sponger.common.util.snowflake;

public class guuidutil ")

private static long machineid;

@value("$")

private static long datacenterid;

/*** 單例模式建立學法演算法物件

* */

private enum snowflakesingleton

public snowflake getinstance()

}public static long getuuid()

public static void main(string args)

system.out.print("雪花演算法用時: ");

system.out.println(system.currenttimemillis() - start);

}}

SnowFlake雪花演算法生成分布式id

author twitter 雪花演算法snowflake created on 2019 3 14.author twitter public class idsnowflake 起始的時間戳 private final static long start stmp 1480166465631l ...

工具類 雪花演算法生成分布式ID

工具類 雪花演算法生成分布式id snowflake 演算法,是 twitter 開源的分布式 id 生成演算法。其核心思想就是 使用乙個 64 bit 的 long 型的數字作為全域性唯一 id。在分布式系統中的應用十分廣泛,且id 引入了時間戳,基本上保持自增的,後面的 中有詳細的註解。這 64...

分布式ID生成器(雪花演算法)

目前微服務架構盛行,在分布式系統中的操作中都會有一些全域性性id的需求,所以我們不能使用資料庫本身的自增功能來產生主鍵值,只能由程式來生成唯一的主鍵值。我們採用的是開源的twitter 非官方中文慣稱 推特.是國外的乙個 是乙個社交網路及微部落格服務 的snowflake 雪花 演算法。各個段解析 ...