我们需要建立一个系统,其中多个进程在同一个数据集上工作。这个想法是有一组可以被我们的工作进程(异步)拉取的元素(即没有重复的值)。进程可能分布在多台服务器上,因此我们需要一个分布式解决方案。
目前,我们正在考虑的模式是使用 Redis 来保存一个集合,该集合保存工作数据。每个进程都应该连接到集合,并从中弹出一个值。的随机功能spop
实际上对我们来说是一个加分项,因为我们需要随机访问集合中的元素。数据必须从我们的主 PostgreSQL 数据库中填充。
就像我说的,我们还有一个 PostgreSQL 数据库可供查询,进程可以在请求元素时访问它。但是,我们不知道在重负载下是否会成为瓶颈。我们确实期望在这个子系统上进行大量 - 到非常大量的并发访问(想想数百甚至数千个进程)。
如果它与此相关,我们将使用 PythonrQ
来处理异步任务(作业和工作人员)。
编辑:就大小而言,预计元素不会很大 - 顶部大小应该在 500 - 1000 字节左右。它们基本上是 URL,因此除非发生奇怪的事情,否则它们应该远低于该大小。元素的数量将取决于并发进程的数量,因此大约 10 - 50 K 的元素可能是一个不错的选择。请记住,这更像是一个暂存区域,因此应该更多地关注速度而不是大小。
总而言之,我的问题是:
使用多个进程时,Redis 是否为共享访问设置了一个好主意?是否有任何数据可以让我们知道该解决方案将如何扩展?如果是这样,您能否提供任何指示或建议?
在填充共享数据时,什么是好的更新策略?
非常感谢你!