当前位置: 首页 > 知识库问答 >
问题:

java如何生成分布式ID?

祁建明
2023-11-21

如何自定义生成固定长度的字符串ID,8-12个字符

格式:业务标记_xxxxxxxxxx
如:user_Nuxq23s24dxa1ScSx
要求:1ms生成100W个

或有什么现成的库可以使用,麻烦老大们贴下代码

共有3个答案

贾沛
2023-11-21
https://hutool.cn/docs/#/core/%E5%B7%A5%E5%85%B7%E7%B1%BB/%E5...
↑直接看到Snowflake雪花算法示例那里
import cn.hutool.core.lang.Snowflake;import cn.hutool.core.util.IdUtil;public static void main(String[] args) {    Snowflake snowflake = IdUtil.getSnowflake(1, 1);    String str = snowflake.nextIdStr();    System.out.println(str);}

image.png
不想用全数字类型那你可以和UUID等截断拼接嘛

堵乐
2023-11-21

雪花算法

满玉泽
2023-11-21

在Java中生成分布式ID,常见的方法是使用UUIDAtomicLongSnowflake等库。

对于你的需求,这里有一种使用UUID的方式,可以生成满足你要求的字符串ID。UUID的长度是固定的128位,但我们只需要其中的一部分,所以可以将UUID按照一定的格式进行截断。以下是一种可能的实现:

import java.util.UUID;public class IDGenerator {    public static String generateID(int length) {        String id = UUID.randomUUID().toString();        return id.substring(0, length);    }}

这个类中的generateID方法可以接受一个参数length,用来指定生成的ID的长度。UUID.randomUUID().toString()会生成一个128位的UUID,然后我们使用substring方法截取其中的一部分。例如,如果你想生成一个8-12个字符的ID,你可以调用generateID(12)来生成一个12个字符的ID。

这个方法的性能很好,UUID的生成速度非常快,几乎可以在1ms内生成100W个。而且由于UUID是随机生成的,所以生成的ID的冲突率也很低。

请注意,由于UUID的格式是固定的,所以你可以预分配一个UUID,然后截取你需要的一部分,这样可以在一定程度上提高性能。但是这种方法可能会在极端情况下导致ID的冲突,所以在生产环境中使用时需要谨慎。

 类似资料:
  • 主要内容:1.UUID,2.数据库自增Id,3.基于数据库集群模式,4.基于数据库的号段模式,5.Redis,6.Snowflake,7.百度(uid-generator),8.Leaf,9.TinyId生成方式: 1.UUID 2.数据库自增ID 3.数据库多主模式 4.号段模式 5.Redis 6.雪花算法(SnowFlake) 7.滴滴出品(TinyID) 8.百度 (Uidgenerator) 9.美团(Leaf) 1.UUID UUID的生成简单到只有一行代码,输出结果 c2b8c2b

  • 有时我们需要能够生成类似MySQL自增ID这样不断增大,同时又不会重复的id。以支持业务中的高并发场景。比较典型的,电商促销时,短时间内会有大量的订单涌入到系统,比如每秒10w+。明星出轨时,会有大量热情的粉丝发微博以表心意,同样会在短时间内产生大量的消息。 在插入数据库之前,我们需要给这些消息、订单先打上一个ID,然后再插入到我们的数据库。对这个id的要求是希望其中能带有一些时间信息,这样即使我

  • 我将需要初始化一个'n'数量的类,将有一个随机值附加到他们从1到100。 我知道如何创建一个介于1和100之间的随机值,但我如何使所有的值都落在一个正态分布模式?

  • 提示 GatewayWorker提供的所有接口都是支持分布式调用的,所以业务代码不需要任何更改,直接就可以分布式部署。 如何分布式GatewayWorker GatewayWorker通过Register服务来建立划分集群。同一集群使用相同的Register服务ip和端口,即Gateway 和 businessWorker的注册服务地址($gateway->registerAddress $bus

  • 《分布式 Java》是一本关于 Java 分布式应用的学习教程,是对市面上基于 Java 的分布式系统最佳实践的技术总结。图文并茂,并通过大量实例让你走近 Java 的世界!

  • 本文向大家介绍python如何生成各种随机分布图,包括了python如何生成各种随机分布图的使用技巧和注意事项,需要的朋友参考一下 在学习生活中,我们经常性的发现有很多事物背后都有某种规律,而且,这种规律可能符合某种随机分布,比如:正态分布、对数正态分布、beta分布等等。 所以,了解某种分布对一些事物有更加深入的理解并能清楚的阐释事物的规律性。现在,用python产生一组随机数据,来演示这些分布