【问题标题】:Can i trust Microsoft BackgroundService to be always alive?我可以相信 Microsoft BackgroundService 始终存在吗?
【发布时间】:2021-09-07 22:03:03
【问题描述】:

我正在使用 blazor 构建多人视频游戏。

这个游戏非常基础,可以通过网络浏览器玩。 艰苦的工作是为了使玩家之间的实时交流成为可能。我过去曾经使用过 red5 之类的套接字服务器。

今天,我想使用 Microsoft 工具构建这个视频游戏:Blazor 和 signalr。

我的问题是我在服务器端需要一些线程。该线程将管理游戏逻辑。我试图创建一个 BackgroundService 任务。它工作正常。我可以通过信号集线器与玩家交流。但我对BackgroundService 的某些事情感到害怕:它们附加到http 服务器进程。有时 IIS 会杀死并创建新进程。那么我如何确定我的 BackgroundService 将永远存在? (即使没有连接播放器,例如在晚上)。我如何确定我的 BackgroundService 不会被 IIS 杀死和重新创建?

我尝试使用 kestrel Web 服务器并将其作为 nginx 代理。我的 BackgroundService 永远不会被杀死。但我想知道红隼是否旨在同时处理大量网络客户端......

BackgroundService 对象有替代品吗?我想创建一个单独的程序,但我更喜欢整体方法...

非常感谢

【问题讨论】:

    标签: signalr blazor blazor-server-side signalr-hub kestrel-http-server


    【解决方案1】:

    如果这是您所要求的,我认为您的网络应用程序不会自动重新启动。它重新启动的唯一时间是您部署或手动重新启动或停止/启动。所以我认为将后台服务用于轻量工作负载是安全的。

    但如果您打算进行任何类型的缩放,我建议您查看Hangfire

    【讨论】:

    • 后台服务的负载会很低。但是我会在网络服务器上有很高的负载。你认为我可以和红隼一起工作吗?谢谢
    • 据我所知,红隼非常时尚。我们在我以前的公司使用它来处理一些相当高的吞吐量,所以我会说你很安全。
    • 非常感谢您的回答@tiny town software。您是否将红隼放在 nginx 代理或类似的东西后面?您是否必须对红隼本身进行一些性能调整?谢谢
    • 我个人没有参与构建它,但是是的,我们使用了 nginx。我不确定性能调整。我建议你让它开始工作,看看它是如何开箱即用的,然后根据需要进行调整。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多