public abstract class AbstractIntervalWorkerId extends Object implements WorkerIdAssigner
限定符和类型 | 字段和说明 |
---|---|
protected AtomicBoolean |
active
心跳原子标识
|
protected Long |
interval
心跳间隔
|
protected String |
pidName
名称格式为:ip_port
|
protected Long |
workerId |
构造器和说明 |
---|
AbstractIntervalWorkerId(Long interval,
String pidHome,
Integer pidPort) |
限定符和类型 | 方法和说明 |
---|---|
long |
assignWorkerId()
分配一个worker id
|
protected abstract Long |
assignWorkerIdByMiddleware()
依靠中间件分配一个worker id
|
protected abstract long |
averageTime()
获取机器节点列表的活跃时间平均值
|
void |
init()
在初始化workerId的过程中,会执行如下处理:
1、判断之前是否分配了workerId,如果已经分配,那么继续使用上一次分配的workerId,否则新分配一个workerId。
|
protected abstract void |
initEnv()
初始化环境
|
protected abstract long |
lastTime()
依靠中间件获取上一次记录的时间
|
protected abstract Long |
loadWorkerIdFromMiddleware()
从中间件获取已分配的worker id
|
protected abstract void |
registerNode()
注册节点到节点列表中
|
protected abstract void |
report()
心跳上报
|
protected void |
startHeartBeatThread()
心跳线程,用于每隔一段时间上报一次临时节点时间
|
protected AtomicBoolean active
protected Long interval
protected String pidName
protected Long workerId
@PostConstruct public void init() throws Exception
Exception
protected void startHeartBeatThread()
protected abstract Long loadWorkerIdFromMiddleware() throws Exception
Exception
protected abstract Long assignWorkerIdByMiddleware() throws Exception
Exception
protected abstract long averageTime()
protected abstract void report()
public long assignWorkerId()
WorkerIdAssigner
assignWorkerId
在接口中 WorkerIdAssigner