使用Python水平扩展或分割Python-RQ或Redis

Jua*_*oto 6 python scalability sharding redis consistent-hashing

尝试水平扩展用作任务服务器的Redis实例Python-RQ.

据我所知,最好的方法是将分片逻辑(最有可能使用Consistent Hashing)添加到自定义ConnectionPool和/或Connection类中.我宁愿使用一个库来实现Consistent Hashing机制 - 因为它似乎应该是可用的东西,并且最有可能比本土解决方案更好/更多的战斗测试.

做这样的事情会有什么好处?我应该研究一些图书馆吗?有什么我想念的东西,我应该考虑到吗?

非常感谢!

小智 4

我认为你应该记住几件事。

第一个是关于你的瓶颈在哪里,以及为什么你应该在一个 Python-Rq 范例下在 Redis 后端上提供分区架构方式。我认为 Redis 具有足够的性能,因此我们相信,瓶颈应该在于您的工作人员数量以及您想要在给定时间处理的作业数量。

您可以说:我可以等待多少时间才能处理该作业?如果你能算出这个值,那就是延迟。您将拥有在架构中添加/删除更多节点的密钥。

顺便说一句,如果您正在寻求使用一致性哈希的分片解决方案来改善基础设施,则必须考虑删除或添加新节点时重新平衡密钥背后的问题。

例如,对于一项已存在的作业,当前的工作人员可能会连接到错误的 Redis 服务器,因为在新作业启动之后和结束之前已添加或删除了新服务器。