天天JAVA:UUID是什么?

53 篇文章 0 订阅
53 篇文章 0 订阅

title: UUID是什么?
tags: UUID
categories: Java基础


UUID

由来

每个个体都是独一无二的存在
  • 指纹信息:与生俱来的独有印记。
  • 身份证号码:你的唯一标识,世界给你的独有编码。
  • 世界的秩序、个体间的沟通交流,都离不开独一无二的你。
分布式系统中,每个元素也都是独一无二的存在
  • 分布式系统需要建立秩序。(有序的)
  • 分布式系统中的元素需要沟通交流。(互动的)
  • 所以,分布式系统中的所有元素都需要唯一的辨识信息。(唯一标识)
  • 并且,我们希望这个唯一的辨识信息是”指纹信息“,而不是”身份证号码“。(自发的)
  • 因为,”身份证号码“需要有中央控制端来统一管控,相比之下,还是与生俱来方便一些。(自发的)
  • 那么,如何设定与生俱来的指纹信息?(唯一的,自发的)

能力

  • UUID:Universally Unique Identifier(通用唯一识别码)
  • UUID可以让分布式系统中的元素具有唯一性和自发性。
  • 兼顾时间和空间,你可以自发拥有属于自己的唯一标识,之后畅游分布式系统的世界尽享欢乐时光,激不激动,刺不刺激!
  • 那么,如何保证自发性和唯一性?

实现

  • UUID是16字节128位长的数字,通常以36字节的字符串表示。
  • 示例:3F1504E0-6F89-11D3-9A0C-0905E82C3306
编码规则
  • 1~8位:采用系统时间,精确到毫秒。(时间唯一性)
  • 9~16位:采用底层IP地址。(服务集群唯一性)
  • 17~24位:当前对象HashCode值。(内部对象唯一性)
  • 25~32位:随机数。(一个对象内毫秒级唯一性)

对比

  • UUID具有多个版本(方式)去实现。
基于时间的UUID:当前时间戳+随机数+机器MAC地址
  • 使用MAC地址好处:全球范围唯一。劣势是:安全性问题。
  • 如果应用在局域网使用,可以退而求其次,用IP地址代替MAC地址。(Java的UUID往往是这样实现)
基于名字的UUID:MD5(计算机名字+名字空间)散列值
  • 缺点是计算机名字和名字空间都相同的情况会重复。
随机数UUID:根据随机数生成UUID
  • 但有极小概率导致重复。

应用

  • 消息系统发送消息的唯一标识码。

总结

  • 人们的思维方式源于生活,无论是现实世界还是虚拟世界,都离不开独一无二的你我。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值