相关疑难解决方法(0)

分布式序列号生成?

我一般在过去使用数据库序列实现序列号生成.

例如,使用Postgres SERIAL类型http://www.neilconway.org/docs/sequences/

我很好奇,因为如何为没有数据库的大型分布式系统生成序列号.对于多个客户端,是否有任何经验或建议以线程安全的方式生成序列号生成的最佳实践?

java sequences apache-zookeeper

97
推荐指数
7
解决办法
7万
查看次数

可以使用MapReduce进行2 ^ 32个数字的随机随机播放

排序2 32个数字的典型算法是:

  1. 创建一个包含2 32个数字的数组,并从0到2 32 -1 填充它们
  2. 设n =数组中的项数= 2 32
  3. 随机选择一个从0到n-1的数字,从数组中删除数字,并将其推入堆栈
  4. 现在,n减1,堆栈大小增加1
  5. 转到3.直到数组为空,最后的堆栈才是解决方案

2 32 = 4,294,967,296项

2 32*4 = 17,179,869,184字节,如果我们使用4字节无符号整数

由于我在一台机器上没有那么多内存,因此使用memmap()可能是一个很好的选择(可能是最直接的方法).

出于好奇,我想知道我是否可以使用MapReduce来解决这个问题?Map和Reduce功能会是什么样的?

这个想法在我脑海中浮现,因为虽然我在一台机器上没有那么多内存,但我在局域网上的所有盒子里肯定都有那么多内存.MapReduce中数据的分布式特性可能会有所帮助.

虽然可以选择适合MapReduce的等效算法,但可能很难想出一个不会降低上述算法随机性的算法.

algorithm mapreduce

2
推荐指数
1
解决办法
592
查看次数

标签 统计

algorithm ×1

apache-zookeeper ×1

java ×1

mapreduce ×1

sequences ×1