java 两个项目 生成唯一id_Java实现分布式环境下生成唯一ID

本文介绍了如何使用Java实现基于Snowflake算法的分布式ID生成服务,满足唯一性、毫秒级有序性及高可用性需求。详细阐述了服务的ID结构、各个模块的功能以及核心类的实现,包括IdService、IdGenerateProvider和IdConverter等,并提供了测试案例和RESTful API的示例。
摘要由CSDN通过智能技术生成

df48f4a7418c2853c1da3374f58fe5d5.pngJava实现分布式环境下生产唯一ID

前文说过生成唯一ID的方式有很多,今天从零实现一个基于snowflake算法的分布式的Id生成服务。

生成Id服务满足以下要求

生产的ID唯一,这个是最基本的要求,ID粗略有序性,业务大多数情况下需要有序的ID,我们实现毫秒级有序。ID可解析,就是给处一个ID,我们能解析处各部分的信息服务高性能,每毫秒可生成4096个ID服务高可用,可以集群部署,一台宕机,服务可用先看下ID的结构,我们用long型存储ID,

最高为版本号1位,默认为0,毫秒时间为41位,可以使用69年,机器码是10位了,最多可以部署1024台机器序列号为12位,每毫秒可以生成4096个序列号,每秒可以生成400万个id

01ad509298094c5208663474b54ce226.pngID的结构

我们来实现下我们的服务,首先创建一个工程easyid。其中有这么几个模块:

intf: 接口模块,可以对外提供和内部实现client:客户端暂时用于测试service:核心的服务,实现了intf中的接口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值