如何水平扩展或分片 Python-RQ 或用 Python 操作 Redis

7 投票
1 回答
1404 浏览
提问于 2025-04-17 18:26

我正在尝试横向扩展一个Redis实例,这个实例作为任务服务器在运行Python-RQ

根据我的了解,最好的方法是添加分片逻辑(很可能是使用一致性哈希)到一个自定义的ConnectionPool和/或Connection类中。我更倾向于使用一个库来实现一致性哈希机制,因为这听起来应该是一个现成的解决方案,而且可能比自己开发的更好、更可靠。

那有什么好的模式可以实现这个吗?有没有什么库是我应该关注的?我有没有遗漏什么需要考虑的事情?

非常感谢!

1 个回答

4

我觉得你需要考虑几个方面。

首先,要搞清楚你的系统瓶颈在哪里,以及为什么在使用Python-Rq的情况下,Redis后端应该采用分区架构。我认为Redis的性能足够好,所以瓶颈应该出现在你的工作进程数量和你想要同时处理的任务数量上。

你可以问自己:我能等多久才能处理这个任务?如果你能算出这个时间,也就是延迟时间,你就能找到增加或减少架构中节点的关键。

顺便说一下,如果你想通过一些分片解决方案来改善你的基础设施,比如使用一致性哈希,你需要考虑在添加或删除新节点时,重新平衡键值可能带来的问题。

举个例子,当前的一个工作进程可能会连接到错误的Redis服务器,处理一个已经存在的任务,因为在这个新任务开始后、结束前,可能有新的服务器被添加或移除。

撰写回答