maxmall-common/maxmall-common-zk/src/main/java/com/maxmall/zk/generator/UniqueIdGenerator.java

(开头部分) 3KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

package com.maxmall.zk.generator;

/**
 * 分布式唯一ID生成器
 *
 * @author maxmall.net@gmail.com
 */
public class UniqueIdGenerator implements IdGenerator {

	/**
	 * 开始使用该算法的时间为: 2017-01-01 00:00:00
	 */
	private static final long START_TIME = 1483200000000L;

	/**
	 * worker id的bit数,最多支持8192个app和host的组合(即在N个服务器上每个服务器部署M个项目,总共部署N*M=8192)
	 */
	private static final int APP_HOST_ID_BITS = 13;
	/**
	 * 序列号,支持单节点最高1000*1024的并发
	 */
	private final static int SEQUENCE_BITS = 10;

	/**
	 * 最大的app host id,8091
	 */
	private final static long MAX_APP_HOST_ID = ~(-1L << APP_HOST_ID_BITS);

	/**
	 * 最大的序列号,1023
	 */
	private final static long MAX_SEQUENCE = ~(-1L << SEQUENCE_BITS);

	/**
	 * app host编号的移位
	 */
	private final static long APP_HOST_ID_SHIFT = SEQUENCE_BITS;

	/**
	 * 时间戳的移位
	 */
	private final static long TIMESTAMP_LEFT_SHIFT = APP_HOST_ID_BITS + APP_HOST_ID_SHIFT;

	/**
	 * 该项目的app host id,对应着为某台机器上的某个项目分配的serviceId(注意区分Span中的serviceId)
	 */
	private long appHostId;

	/**
	 * 上次生成ID的时间戳
	 */
	private long lastTimestamp = -1L;

	/**
	 * 当前毫秒生成的序列
	 */
	private long sequence = 0L;

	/**
	 * 单例
后面还有 92 行代码,购买后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读 AI

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。