特点
集群范围内,全局单调唯一递增;
数据构成
ZXID是一个64位的数字,低32代表一个单调递增的计数器,高32位代表Leader周期。
ZXID变化
- 当有新的Leader产生时,Leader周期epoch加1,计数器从0开始;
- 每处理一个事务请求,计数器加1;
public class ZxidUtils {
static public long getEpochFromZxid(long zxid) {
return zxid >> 32L;
}
static public long getCounterFromZxid(long zxid) {
return zxid & 0xffffffffL;
}
static public long makeZxid(long epoch, long counter) {
return (epoch << 32L) | (counter & 0xffffffffL);
}
static public String zxidToString(long zxid) {
return Long.toHexString(zxid);
}
}