UidGenerator:readme
https://github.com/lyg123/uid-generator/blob/master/README.zh_cn.md
leaf readme
https://tech.meituan.com/2019/03/07/open-source-project-leaf.html
tinyid https://github.com/didi/tinyid/wiki
Tinyid是用Java开发的一款分布式id生成系统,基于数据库号段算法实现,关于这个算法可以参考美团leaf或者tinyid原理介绍。Tinyid扩展了leaf-segment算法,支持了多db(master),同时提供了java-client(sdk)使id生成本地化,获得了更好的性能与可用性。Tinyid在滴滴客服部门使用,均通过tinyid-client方式接入,每天生成亿级别的id。
UidGenerator:百度开源的分布式ID服务(解决了时钟回拨问题)分析
https://mp.weixin.qq.com/s?__biz=MzU5ODUwNzY1Nw==&mid=100000822&idx=1&sn=fa522bf140585252a61b177e82296271&chksm=7e426dd04935e4c6fc76a38391b51571e4aed27b0f49e4bb448f28bca495595bb949a0e08295&xtrack=1&scene=0&subscene=10000&clicktime=1559118090&ascene=7&devicetype=android-28&version=2700043b&nettype=ctnet&abtest_cookie=BAABAAoACwASABMABgAjlx4AVpkeAM%2BZHgDcmR4A%2BZkeAAOaHgAAAA%3D%3D&lang=zh_CN&pass_ticket=dI0Xs6oN2UFYUhB6fSLJfzwUKRsQIc7xYbKotGUOhsl0%2FNyp3kmwNgNBcmEYFy1Y&wx_header=1
场景:订单id
分布式ID生成器介绍 里面有介绍雪花算法和它的位数怎么设置
https://mp.weixin.qq.com/s/qO84jWhQ5O2mPafsHrh2bA
时间回拨问题解决方案
1.备份workid,不依赖任何其他组件
https://www.jianshu.com/p/98c202f64652?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=weixin
2.美团 leaf-snowflake 开源组件 依赖zk组件,有监控
分享一线互联网大厂分布式唯一ID设计 之 snowflake方案
https://www.toutiao.com/i6687758757885116941/
userid
redis方案
漫画解读snowflake
https://blog.csdn.net/weixin_41235296/article/details/86649849
留此记录
我司引入的是百度uid,我详细分析了例子中的1W4怎么算出来的、我也提了个问题问作者大家可以看下
https://github.com/baidu/uid-generator/issues/36
例如节点采取用完即弃的WorkerIdAssigner策略, 重启频率为12次/天, 那么配置成{"workerBits":23,"timeBits":31,"seqBits":9}时, 可支持28个节点以整体并发量14400 UID/s的速度持续运行68年. 时间 2的31次方-1 / 86400 / 365 = 68年
序号 2的9次方 = 512
workid数 2的23次方 = 8388608
重启次数 68 乘上 365 乘上 12 天 = 297840
应用数 节点 除以 重启次数 = 8388608 / 297840 = 28
并发 28 乘上 512 = 14336
另一个例子
workid 30位 = 1073741824 (2位随机数+后两段ip)
time 29位 为17年
seq 4位 为16
重启次数 17 * 365 * 12 = 950460
应用 = workid数 / 重启数 = 1129
并发 1128 * 16 = 1W8
应用重启的时候时间回拨+随机数一样,概率很低
2位随机数+后两段ip代码如下
import com.baidu.fsg.uid.worker.WorkerIdAssigner;
import org.apache.commons.lang.StringUtils;
import java.util.Random;
public class IpRandomWorkIdAssigner implements WorkerIdAssigner {
private static final Random RANDOM = new Random();
private static final int[] random = new int[90];
public IpRandomWorkIdAssigner() {
for (int i = 10; i < 100; i++) {
random[i - 10] = i;
}
}
@Override
public long assignWorkerId() {
String ip = NetUtils.getLocalAddress();
String[] ips = ip.split("\\.");
StringBuilder sb = new StringBuilder();
sb.append(random[RANDOM.nextInt(90)]).append(StringUtils.leftPad(ips[2], 3, '0'))
.append(StringUtils.leftPad(ips[3], 3, '0'));
return Long.parseLong(sb.toString());
}
}
这里介绍下自己写的uid-spring-boot-starter
https://github.com/lyg123/uid-generator-spring-boot-starter
分享到:
相关推荐
雪花算法(Snowflake)是Twitter开源的一种分布式ID生成算法,它能有效地生成全局唯一的64位ID,这在很多场景下可以替代传统的UUID。 雪花算法的核心思想是将ID分为多个部分,分别是时间戳、工作节点ID和序列号,...
雪花算法是一种分布式ID生成策略,由Twitter开源,其设计目标是在分布式系统中生成具有全局唯一性、有序性和高并发性的ID。在MySQL中实现雪花算法,主要是通过自定义函数来模拟这个过程。 首先,我们需要创建一个名...
雪花算法是一种分布式ID生成系统,由Twitter开源,其设计目标是为海量数据提供全局唯一且不重复的ID。雪花算法的ID由64位的二进制数组成,分为以下几个部分: 1. **时间戳(41位)**:从1970年1月1日( Unix 纪元)...
这份《Renren-Fast开源框架开发文档2.0_完整版》是该框架的详尽指南,旨在帮助开发者深入了解和熟练运用此框架。 一、SpringBoot集成 1.1 SpringBoot简介:SpringBoot是Spring框架的一个扩展,它简化了Spring应用...
雪花算法是Twitter开源的一种分布式ID生成算法,它能够生成全局唯一、递增且无碰撞的64位整数ID。这个算法在分布式系统中非常适用,因为传统的序列号生成方式在分布式环境中往往难以解决冲突问题。下面我们将详细...
雪花算法(Snowflake Algorithm)是Twitter开源的一种分布式ID生成算法,其主要特点是全局唯一、顺序递增,并且具有良好的时间序列性。Rust版本的雪花算法实现,即snowflake-rs,是针对这个算法在Rust编程语言中的...
系统设计旨在为中小企业IT团队提供一个便捷、高效的API接口文档管理平台,通过在线填写文本框即可生成接口文档,支持文档的轻松管理和一键导出Word文档功能,方便在线和线下分享,有效提高了团队的工作效率。
Java 开源项目中文文档 20160820.epub
通常,源代码会分为几个部分:初始化设置、传感器数据读取、PID算法实现、电机控制接口以及可能的调试和日志记录功能。初始化设置包括STM32的外设配置,如GPIO、定时器、串口等;传感器数据读取涉及I2C或SPI通信协议...
libiec61850 1.3.3的库说明文档,自己整理了为chm,半离线状态,里面算是连接吧,看着有需要的就下载吧。官网也有的
ONLYOFFICE免费开源多人在线文档协作系统的部署与开发细节.pdf
标题中的“SimpleBGC32- 开源三轴无刷云台算法完全解说”表明了这是一个关于三轴无刷电机云台控制系统的详细介绍,重点在于其开源算法。这个系统基于STM32F103RC微控制器,结合了MPU6050六轴传感器,用于实现飞行器...
ONLYOFFICE免费开源多人在线文档协作系统的部署与开发细节
官方网址:http://www.renren.io/项目演示地址:http://fast.demo.renren.io/#/login 账号密码admin/adminrenren-fast是一个轻量级的 Spring Boot 快速开发...彻底杜绝 XSS 攻击实现前后端分离,通过 token 进行数据
标题中提到的“算法文档无代码非完美算法”可能指的是一个关于算法的文档,该文档中缺少了实际的代码实现,而只有算法的理论描述或者伪代码,因此被标记为“非完美”。这样的算法文档可能用于教育目的,帮助学习者...
教程 PHPRAP是一个PHP轻量级开源API接口文档管理系统,致力于提高前后端协作开发效率,打造PHP版的RAP.zip
快手开源数据集(推荐算法)快手开源数据集(推荐算法)快手开源数据集(推荐算法)快手开源数据集(推荐算法)快手开源数据集(推荐算法)快手开源数据集(推荐算法)快手开源数据集(推荐算法)快手开源数据集...
FlexPaper 是一个开源的Web文档在线阅读器,它允许用户在网页上以类似百度文库的方式查看和浏览文档。这个工具对于那些希望提供便捷、互动的在线文档阅读体验的网站开发者来说,是一个理想的选择。FlexPaper 支持...
【全开源】云贝餐饮源码 含VUE未编译前端后台可二开 亲测正常使用(前端+后台+数据库+搭建文档+操作文档) 此源码为全开源,未加密版本,可以二次开发,亲测可以正常使用,内附搭建说明,操作文档,打印机等硬件...
这部分提供了详细的代码示例和解释,帮助用户理解和实现特定功能,如初始化、控制算法和故障处理。 **从0开始焊接电路板** 对于喜欢DIY的爱好者,文档还提供了焊接电路板的步骤和注意事项,帮助他们构建自己的FOC...