面试题:在分布式系统,你能想出来几种生成唯一ID的方案?(17)


           while (true)
           {
               long id = idWorker.nextId();
               if (!set.Add(id))
               {
                   Console.WriteLine(\"duplicate:\" + id);
               

               Thread.Sleep(1);
           
       

snowflake算法可以根据自身项目的需要进行一定的修改 。 比如估算未来的数据中心个数 , 每个数据中心的机器数以及统一毫秒可以能的并发数来调整在算法中所需要的bit数 。

优点: