2.2.3 分布式时间戳方式

本方式提供一个基于Zookeeper(也可以本地配置)的分布式ID生成器,可以生成全局唯一的63位二进制ID。

2.2.3.1 位模式

序列值是64bits的整数。整数的位模式如下:

a.9bits

b.5bits

c.4bits

d.6bits

e.39bits </tr> </tbody> </table> 其中:

  • a - e为从高位到低位。

  • a为线程id的低9位值。

  • b为5位实例 id值(根据配置, 此值为配置文件中的INSTANCEID值或者从zookeeper服务器获取的值, 参见1.7.3 分布式time序列)。

  • c为4位数据中心id值(即配置文件中的CLUSTERID的值,参见1.7.3 分布式time序列)。

  • d为6位自增长值

  • e为系统当前时间戳的低39位值(可以使用17年)。

2.2.3.2 退化的分布式时间序列

如果配置文件中的INSTANCEID值不为'ZK', 序列的维护仅依赖于单实例(主要是INSTANCEID值的维护),此时序列类似于时间戳方式(参见2.2.2 时间戳方式)。

2.2.3.3 分布式时间序列

如果配置文件中的INSTANCEID值为'ZK',序列的维护(主要是INSTANCEID值的维护)用zookeeper作为分布式协调器,从dble集群中选出一个leader,进而在这个选出的leader存活周期内确定一个唯一的INSTANCEID值用作序列生成中的实例id值。leader的选举周期为3秒,即每三秒进行一次leader选举。如果从dble集群中只有一个实例, 序列同样成退化的分布式序列,类似于时间戳方式(参见2.2.2 时间戳方式)。

results matching ""

    No results matching ""