我一般在过去使用数据库序列实现序列号生成.
例如,使用Postgres SERIAL类型http://www.neilconway.org/docs/sequences/
我很好奇,因为如何为没有数据库的大型分布式系统生成序列号.对于多个客户端,是否有任何经验或建议以线程安全的方式生成序列号生成的最佳实践?
排序2 32个数字的典型算法是:
2 32 = 4,294,967,296项
2 32*4 = 17,179,869,184字节,如果我们使用4字节无符号整数
由于我在一台机器上没有那么多内存,因此使用memmap()可能是一个很好的选择(可能是最直接的方法).
出于好奇,我想知道我是否可以使用MapReduce来解决这个问题?Map和Reduce功能会是什么样的?
这个想法在我脑海中浮现,因为虽然我在一台机器上没有那么多内存,但我在局域网上的所有盒子里肯定都有那么多内存.MapReduce中数据的分布式特性可能会有所帮助.
虽然可以选择适合MapReduce的等效算法,但可能很难想出一个不会降低上述算法随机性的算法.