Java STORM:当许多工作人员同时创建文件时,如何命名文件?

Java STORM:当许多工作人员同时创建文件时,如何命名文件?,java,concurrency,apache-storm,Java,Concurrency,Apache Storm,对不起,我的英语很差。 有一个很大的风暴集群,工作人员总是同时创建一些文件,问题是我不想重复那个文件名。 我的老板让我创建一个文件名,格式为“timestamp random othername”,timestamp是一个从1970-1-1 00:00:00开始的数字,random是一个从00000到99999的五位数。大约有数千名工人在运行……在不同的机器上运行。我正在寻找一种方法,使随机数不一样时,时间戳是相同的 要确保唯一性,您需要 使用共享资源,例如共享目录、消息或数据网格 使其不太可

对不起,我的英语很差。 有一个很大的风暴集群,工作人员总是同时创建一些文件,问题是我不想重复那个文件名。
我的老板让我创建一个文件名,格式为“timestamp random othername”,timestamp是一个从1970-1-1 00:00:00开始的数字,random是一个从00000到99999的五位数。大约有数千名工人在运行……在不同的机器上运行。我正在寻找一种方法,使随机数不一样时,时间戳是相同的

要确保唯一性,您需要

  • 使用共享资源,例如共享目录、消息或数据网格
  • 使其不太可能,例如使用UUID
  • 给每个工人一个唯一的id,并在文件名中使用该id

您可以尝试使用当前系统毫秒数和随机数
这样地:
System.currentTimeMillis()+String.format(“%05d”,random.nextInt(99999))

在storm中,一类螺栓有其唯一的id,可能可以工作,谢谢你的第三种方式..虽然通常是随机的,如果在同一毫秒内有数千个,则会出现重复。如果在同一时间内真正编辑一个文件,则可以在redis中放置一个基本num,那么当用户编辑它时,1您将获得一个num 2 do incr方法3下一个用户将获得一个从不重复的num