全局唯一ID

生成全局唯一ID

  1. 通过MySQL的自增主键,作为唯一id;
  2. 通过内存中变量AtomicLong的自增来得到唯一id;
  3. 通过Java的UUID来生成唯一id;

生成订单id:

集群id server ip 线程id timestamp Atomic Long
2 bit 8 bit 5 bit 10 bit 10 bit

每个集群中的多台机器上启多个worker线程,每个线程有自己的AtomicLong,这个是通过系统原子操作来实现的。从而保证了id的全局唯一性。

生成设备id:

字段 value
version id定义的版本
id mysql中表device的自动id
type 设备类型

将这个class对象的protobuf的字节数组做base64的url encode编码,即可得到唯一的设备id。

生成消息id:
java.util.UUID 这个类可生成random id全局唯一的,实际上UUID的内部实现原理跟上面提到的生成订单id的原理很类似。
根据机器的Mac地址,timestamp等信息拼成一个全局唯一的id,并转成统一长度的格式。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容