分布式ID策略实践-2/3

一.我们的实践分为 号码段(1/3分享) 和 雪花算法(2/3分享) 两种类型:

1.对于号码段的实践使用的是滴滴tinyid项目基础上做了几个类的改造来实现的。

2.对于雪花算法参考了leaf和uid-genetator的代码通过本地生成的方式来实现的。

二.号码段:在1/3中已经叙述过了

三.雪花算法:

自己创建了一个比较简练的项目:

依据下面方案,工作机器id设置为workerId(5),datacenterId(5),twepoch开始时间戳(毫秒)的设置。

个人认为http的远程访问确实是有点不太方便的,所有根据百度的uid方案,简化了一个简单方案,即将workerId做一个自增id,datacenterId可以固定设置,每个项目的ip+端口+项目名称作为workerId的区分。

???https://gitee.com/horizon_546262445/simple-snowflake??

每当项目启动时使用本服务的ip,端口,项目名称,datacenterId写入表中,返回主键,这个返回的主键就是workerId?。

当然这里因为设置的workerId分配了5位的长度,因此最大到32,当然也可以调整workerId和datacenterId的占用比例,这样对于小型项目的需求时足够的了。

为了便于管理对于同一个项目前提:

twepoch设置一致;

datacenterId设置一致;

workerId动态化(1-32);

服务的ip,端口可以考虑使用jar命令参数指定(脚本管理或者docker管理都可以实现)

这样,后面可以通过调整datacenterId来扩展节点数量。

未完待续

往事是尘封在记忆中的梦,而你是我唯一鲜明的记忆,

分布式ID策略实践-2/3

相关文章:

你感兴趣的文章:

标签云: