【发布时间】:2017-08-26 08:01:07
【问题描述】:
我在多个与分布式内存缓存集群通信的 Web 服务器上运行应用程序,我在应用程序服务器上生成独占锁 ID——问题是在并行执行的高并发性中,有可能在所有服务器上执行多个操作将生成相同的伪随机锁值。
这个想法是使用分布式缓存集群中的递增种子为每个应用程序池启动 Random 类的单个实例,并在生成线程安全随机数的每个辅助方法达到特定的调用次数。
有兴趣看看您对此有何想法。
【问题讨论】:
-
我实际上不确定这个问题是否可以回答,但您是否考虑过仅使用 GUID 或在服务器上放置一个 single 随机实例(所有客户端都要求下一个随机数)所以每个人都在循环相同的 RNG?
-
我想知道是否生成一个以 GUID 作为种子的 Random 实例就足够了。
-
鉴于 GUID 具有更多的熵,并且无论您一次生成多少个,都设计是唯一的,我会直接使用 GUID。随机总是有机会发生碰撞
-
虽然这个问题没有意义(因为随机和唯一不能一起使用),但您可能正在寻找某种分布式自动增量序列生成器。一些起点可以在stackoverflow.com/questions/7258619/…
标签: c# asp.net web random web-farm