Service Fabric 远程调用无状态服务不返回,卡住

Service Fabric remote calls to stateless service not returning, stuck

在我们的应用程序中,我们有一个调用另一个无状态服务的有状态参与者。无状态服务会进行一些处理,然后 returns 将响应返回给参与者。该服务有时需要 1-2 小时才能完成处理。

间歇性地,我们看到服务已成功完成处理但响应未返回给参与者的情况。我的意思是控制不会返回给演员,整个演员处理会卡住,不会进一步进行。 我们在服务端或参与者端都找不到任何异常。

寻找进一步调查问题的指示。任何帮助将不胜感激。

我建议将您的体系结构更改为事件驱动模型。例如,通过使用此 pub/sub library。 这样,服务可以响应来自参与者的事件并开始处理。完成后,它会触发另一个事件,该事件可以由 actor 接收和处理。

这样,参与者只能在事件 sending/receiving 期间存活,从而使您的集群能够承载更多的工作负载。它还可以防止您的演员必须等待数小时才能调用 return,这会阻止其他进程使用它。

要解决您当前的问题,我建议您采取以下步骤:

  • 在后台进行服务操作 运行,return 相关标记(例如随机 guid)
  • 将服务更改为有状态服务。存储处理进度以便查询。
  • 使用 Actor Reminders 使用令牌定期检查是否有结果。