Java实现分布式环境下生产唯一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
ID的结构
我们来实现下我们的服务,首先创建一个工程easyid。其中有这么几个模块:
intf: 接口模块,可以对外提供和内部实现client:客户端暂时用于测试service:核心的服务,实现了intf中的接口