使用UUID
UUID
是通用唯一识别码(Universally Unique Identifier
)的缩写,其目的是让分布式系统中的所有元素,都能有唯一的辨识信息。UUID
是由一组32位数的16进制数字构成,所以UUID理论上总数为16^32=2^128
。
UUID
有五个版本:
- 版本1:基于时间戳和mac地址
- 版本2:基于时间戳,mac地址和
POSIX UID/GID
- 版本3:基于MD5哈希算法
- 版本4:基于随机数
- 版本5:基于SHA-1哈希算法
格式为:xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx
(8-4-4-16),其中每个x是一个十六进制数字。例如:8ad85109-fa53-44f4-8719-e49821c718fc
。
优缺点
优点是代码简单,性能比较好,缺点是:uuid
没有排序,无法保证按序递增;其次uuid
比较长,存储数据库占用空间比较大,不利于检索和排序。
go的依赖包
package main
import (
"fmt"
"github.com/satori/go.uuid"
)
func main() {
u1 := uuid.Must(uuid.NewV4