本人开发了一个全局唯一订单id生成器
package main
import (
"fmt"
"github.com/codewangz/goutils/idworker"
)
func main() {
idx := idworker.NewIdworker(100) //表示队列长度,默认生成100个,避免生成过多的id
fmt.Println(idx.GetId())
}
输出结果 2413932347658692
实现思路
- 使用chan类型带缓冲,做队列使用,预先生成ID,放到队列中
- time 纳秒级时间戳,确保ID的唯一性,采用纳秒时间戳加偏移量生成id,毫秒级生成ID,这也是其他语言不具有特性。
git地址 github.com/codewangz/goutils/idworker
欢迎大家使用和建议,我会根据建议升级包