gpt4 book ai didi

hangfire - 使用 Hangfire(共享任务/对象)的多个服务实例,是否可能?

转载 作者:行者123 更新时间:2023-12-04 04:11:20 30 4
gpt4 key购买 nike

出于冗余原因,我需要使用相同的数据库运行同一服务的多个实例。

我发现了一些关于“Hangfire 多个实例”的问题,但出于不同的目的,然后是我的:通常是关于在同一数据库上为不同的任务运行多个实例,或与此类似。

我需要知道当 2 个或多个 Hangfire 实例使用同一个数据库(我们想使用 MongoDB)时是否存在并发问题,以及这是否是使服务具有弹性的解决方案。
目标是让实例在另一个实例出现故障时处理所有作业。

任何建议都适用于覆盖这种情况。

最佳答案

在我们的环境中,我们有一个由大约 10 个 Hangfire 服务器使用的副本集。如果有多个 Hangfire 服务器为同一个队列服务,这意味着它们将分担负载,无论哪个 Hangfire 服务器先检查队列,然后拿起作业并继续。如果您删除除 1 个服务器之外的所有服务器,则作业将继续(只要有足够的工作人员,否则它们将保持排队状态,直到有工作人员可用)。

要回答您的问题,是的,您可以使用同一个 MongoDB 拥有 2 个或更多 Hangfire 服务器。 MongoDB 提供多线程支持,因此让不同的服务器访问同一个数据库后端是安全的。如果您有两台服务器,两台服务器都将处于事件状态,如果一个实例离线,另一个实例(基于队列)将继续处理队列中的作业。

请记住,Hangfire 服务器处理特定队列中的作业。如果两台服务器都属于同一个队列,那么您就是在两台服务器之间对作业进行负载平衡。如果它们属于不同队列,那么您会了解每个 Hangfire 实例处理不同作业的场景(因为它们属于不同队列)。

Read about configuring Job Queues here

关于hangfire - 使用 Hangfire(共享任务/对象)的多个服务实例,是否可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61662950/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com