尝试横向扩展Redis实例,作为Python-RQ的任务服务器。
据我所知,最好的方法是将分片逻辑(最可能使用Consistent Hashing)添加到自定义的ConnectionPool和/或Connection类中。我更喜欢使用一个库来实现一致的散列机制--因为它看起来应该是可用的,而且比起一个自主开发的解决方案来,它很可能更好/更久经考验。
做这样的事情有什么好的模式?有没有我应该去看看的库?我是不是遗漏了什么我应该考虑的东西?
非常感谢!
发布于 2013-03-11 19:26:07
我认为你应该考虑几件事。
第一个是关于你的瓶颈在哪里,以及为什么你应该在一个Python-Rq范式下给你的Redis后端提供一个分区架构的方式。我认为是这样的,Redis有足够的performance来相信,在给定的时间,你想要处理的工作和工作的数量应该是你的bootleneck。
您可以说:我可以等待多少时间,直到这个作业应该被处理?如果你能计算出这个值,延迟。您将拥有在您的架构中添加/删除更多节点的关键。
顺便说一句,如果您正在寻找使用具有一致散列的分片解决方案来改善您的基础架构,那么当新节点被删除或添加时,您必须考虑重新平衡密钥背后的问题。
例如,对于一个已经存在的作业,一个当前工作人员可能连接到错误的redis服务器,因为在该新作业启动之后和结束之前,已经添加或删除了一个新服务器。
https://stackoverflow.com/questions/15301172
复制相似问题