我们目前正在使用MSSQL中的Hangfire,并且希望通过迁移到Redis来提高任务的吞吐量。
通过键散列进行切分(分区)非常简单,可伸缩,易于维护.我们目前无法访问Redis集群。因此,我们想要满足两个要求:
这样,我们就可以将任意数量的作业分配给'n‘个Redis服务器。
我意识到Hangfire有两部分:存储和工作。我很好奇这两个组件如何在Redis共享的环境中工作。
我意识到,第三方组件(如Twemproxy )有助于解决这些问题,但由于关键散列方法是如此直接,我认为在实现Twemproxy之前我会用尽该方法。
谢谢!
发布于 2015-06-24 08:14:08
你正确地辨别了韩火的两个部分:引擎对仓库一无所知,反之亦然。
作业是使用锁机制从存储中获取的:
当Hangfire启动时,它会按配置的线程数(工作人员编号)进行拆分。然后,每个工作人员请求存储是否有要处理的作业,并将它们移动到处理状态。该操作必须使用某种锁定机制。
如何实现这个锁取决于存储本身,我认为在SQL Server上,存储使用UPDATE合并SQL语句,而正式的Redis版本使用阻塞命令(BRPOPLPUSH和alikes),而其他类似于我的版本则使用Redis发布-订阅机制。
关于您的需求,我可以谈谈那 Redis实现。
"redis0:6380,redis1:6380,allowAdmin=true" (详见此页 )我在生产中使用带有Redis的复制Hangfire服务器,但我只使用Redis主从故障转移,而不是Redis群集。
https://stackoverflow.com/questions/30919761
复制相似问题