首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Redis中使用Hangfire,是否有一种使用密钥散列将作业划分到各个Redis服务器的简单方法?

在Redis中使用Hangfire,是否有一种使用密钥散列将作业划分到各个Redis服务器的简单方法?
EN

Stack Overflow用户
提问于 2015-06-18 15:32:31
回答 1查看 1.9K关注 0票数 0

我们目前正在使用MSSQL中的Hangfire,并且希望通过迁移到Redis来提高任务的吞吐量。

通过键散列进行切分(分区)非常简单,可伸缩,易于维护.我们目前无法访问Redis集群。因此,我们想要满足两个要求:

  • 有一个通过配置文件传递给Hangfire的Redis服务器列表。
  • 有任何给定的密钥可预测地转到任一服务器(类似于Memcached)

这样,我们就可以将任意数量的作业分配给'n‘个Redis服务器。

我意识到Hangfire有两部分:存储和工作。我很好奇这两个组件如何在Redis共享的环境中工作。

我意识到,第三方组件(如Twemproxy )有助于解决这些问题,但由于关键散列方法是如此直接,我认为在实现Twemproxy之前我会用尽该方法。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-24 08:14:08

你正确地辨别了韩火的两个部分:引擎对仓库一无所知,反之亦然。

作业是使用锁机制从存储中获取的:

当Hangfire启动时,它会按配置的线程数(工作人员编号)进行拆分。然后,每个工作人员请求存储是否有要处理的作业,并将它们移动到处理状态。该操作必须使用某种锁定机制。

如何实现这个锁取决于存储本身,我认为在SQL Server上,存储使用UPDATE合并SQL语句,而正式的Redis版本使用阻塞命令(BRPOPLPUSH和alikes),而其他类似于我的版本则使用Redis发布-订阅机制。

关于您的需求,我可以谈谈 Redis实现。

  • Redis服务器的列表通过存储连接字符串传递给存储端,如"redis0:6380,redis1:6380,allowAdmin=true" (详见此页 )
  • 据我所知,Redis客户端支持Redis集群及其工作原理是对键进行切分,并让客户端连接到正确的Redis实例。

我在生产中使用带有Redis的复制Hangfire服务器,但我只使用Redis主从故障转移,而不是Redis群集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30919761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档