尝试横向扩展用作 Python-RQ
任务服务器的 Redis 实例.
据我所知,最好的方法是将分片逻辑(最有可能使用 Consistent Hashing )添加到自定义 ConnectionPool
和/或 Connection
类。我宁愿使用用于一致性哈希机制的库 - 因为它看起来应该是可用的,并且很可能比本土解决方案更好/经过更多实战检验。
做这样的事情什么是好的模式?有没有我应该研究的图书馆?有什么我应该考虑的遗漏吗?
非常感谢!
最佳答案
我认为您应该牢记几件事。
第一个是关于你的瓶颈在哪里以及为什么你应该在一个 Python-Rq 范例下在你的 Redis 后端上提供分区架构方式。我认为 Redis 有足够的 performance相信瓶颈应该在于您的 worker 数量和您希望在给定时间处理的工作数量。
你可以说:我可以等多少时间才能处理完这个作业?如果你能算出这个值,延迟。您将拥有向架构中添加/删除更多节点的 key 。
顺便说一句,如果您正在寻找使用具有一致性哈希的分片解决方案来改进您的基础架构,则必须考虑删除或添加新节点时重新平衡 key 背后的问题。
例如,一个当前工作人员可能会为一个已经存在的作业连接到错误的 Redis 服务器,因为在该新作业开始之后和结束之前添加或删除了新服务器。
关于python - 使用 Python 水平扩展或分片 Python-RQ 或 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15301172/