github.com/sony/sonyflake
最编程
2024-05-05 07:16:39
...
snoyflake侧重于多主机多实例的生命周期和性能,所以与snowflake使用了不同的位分配:
- 比snowflake更长的生命周期,174年
- 能运行在更多的实例上,216个
- 生成id的速度比snowflake慢,10ms内最多生成28个
snoyflake在启动阶段需要配置参数,主要是一个Setting结构体
type Settings struct { StartTime time.Time // 起始时间,默认2014-09-01 00:00:00 +0000 UTC MachineID func() (uint16, error) // 返回实例ID的函数,如果不定义此函外,默认用本机ip的低16位 CheckMachineID func(uint16) bool // 验证实例ID/计算机ID的唯一性,返回true时才创建 }
我们需要自己实现这两个函数:
func getMachineID() (uint16, error) { var machineID uint16 = 6 return machineID, nil } func checkMachineID(machineID uint16) bool { existsMachines := []uint16{1, 2, 3, 4, 5} for _, v := range existsMachines { if v == machineID { return false } } return true }
func main() { t, _ := time.Parse("2006-01-02", "2021-01-01") settings := sonyflake.Settings{ StartTime: t, MachineID: getMachineID, CheckMachineID: checkMachineID, } sf := sonyflake.NewSonyflake(settings) for i := 0; i < 10; i++ { id, err := sf.NextID() if err != nil { fmt.Println(err) os.Exit(1) } fmt.Println(id) } }
原文地址:https://www.cnblogs.com/aganippe/p/16114474.html
推荐阅读
-
github.com/sony/sonyflake
-
借助自动化工具,Powershell 免费向后卫开火 - https://github.com/komomon/Powershell_bypassAV
-
github | ssh拉取github仓库报错connect to host github.com port 22: Connection refused
-
IOS UI 自动化测试实践:pyhton-wda 环境设置篇-Xcode 版本:10.1iphone 版本:12.0.1OS 版本:10.13.6 实践开始 创建一个新目录并从 git 下载 WDA 项目代码。 git clone https://github.com/facebook/WebDriverAgent 并运行初始化脚本。 ./Scripts/bootstrap.sh 出现以下错误信息:原因:Carthage 需要下载相关的依赖项,而这些依赖项并未在本地安装。 解决方法通过 brew 下载并安装依赖项: brew install carthage 下载成功并初始化脚本后,出现以下错误:原因:需要 npm 来打包响应 js 文件,而机器上未安装该文件。 解决方案:通过 brew 下载并安装 npm(注:brew 真的是个好东西):brew install npm 安装成功后,继续初始化脚本。/Scripts/bootstrap.sh Xcode 相关操作
-
browse.php?u,xeHentai:绅士车站爬行者 镜像来自 https://github.com/fffonion/xeHentai
-
【Git】无法访问 https://github.com/xxx/xxx:HTTP/2 数据流 1 之前未关闭干净-报错内容
-
Sony Vegas Pro 12 标准教程 - 1.3 Vegas Pro 安装与设置
-
解决 ssh:连接到主机 github.com 端口 22:拒绝连接
-
从github.com找来的3款实用的Windows激活工具推荐
-
破解 Sony PlayMemories 相机应用:Sony-PMCA-RE 反向工程解析