当前位置 : 主页 > 编程语言 > java >

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

来源:互联网 收集:自由互联 发布时间:2022-12-23
一.我们的实践分为 号码段(1/3分享) 和 雪花算法(2/3分享) 两种类型: 1.对于号码段的实践使用的是滴滴tinyid项目基础上做了几个类的改造来实现的。 2.对于雪花算法参考了leaf和

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

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

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

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

三.雪花算法:

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

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

依据下面方案,工作机器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来扩展节点数量。

未完待续

上一篇:【测试】单元测试用await代替sleep
下一篇:没有了
网友评论