分布式/并行蓄水池抽样 (Distributed/Parallel Reservoir Sampling)
一道电面题目,分为两问:设计一个系统,不断接收数据包(数据内容可以简单想成一个int值).给定常量M,要求从所有获取的数据中随机抽样M个,每个样本被抽取的概率相等.如果已接收数据包的数量还未超过M个,则将它们全部返回.接收数据包的总量是未知的,可能非常大.机器的存储空间有限,无法存储所有数据包.但是存储M个数据包还是绰绰有余的.假如有K台机器,如何将第一问的算法做成分布式的,以最大化吞吐量?第一问