golang 的github.com/sony/sonyflake IP问题bug

发布时间 2023-12-25 09:35:13作者: 熊先生不开玩笑

使用容器部署golang项目时,饮用了 github.com/sony/sonyflake 生成snow id,初始化时不传入任何参数:

SnowId = sonyflake.NewSonyflake(sonyflake.Settings{})

在容器的ip设置设置为类似:192.18.10.8时,调用生成id存在空指针报错。

snowId, err := global_conf.SnowId.NextID()

处理方式,初始化时传入 MachineID 参数,MachineID如果实际业务中没有设计多个容器id,为避免重复可以使用随机数。

SnowId = sonyflake.NewSonyflake(sonyflake.Settings{MachineID: MachineID})
func MachineID() (uint16, error) {
	id := rand.Int63n(10000)
	return uint16(id), nil
}