Azure service fabric 对无状态服务的服务结构远程调用未返回、卡住

Azure service fabric 对无状态服务的服务结构远程调用未返回、卡住,azure-service-fabric,remoting,service-fabric-stateless,service-fabric-actor,Azure Service Fabric,Remoting,Service Fabric Stateless,Service Fabric Actor,在我们的应用程序中,有一个有状态的参与者调用另一个无状态服务。无状态服务执行一些处理并将响应返回给参与者。服务有时需要1-2小时才能完成处理 间歇性地,我们看到服务已成功完成处理,但响应未返回给参与者的场景。我的意思是,控件不会返回到actor,整个actor处理会被卡住,不会继续进行下去。 我们在服务端或参与者端找不到任何异常。 正在寻找进一步调查该问题的指针。任何帮助都将不胜感激。我建议将您的体系结构更改为事件驱动模型。例如,通过使用这个。 这样,服务可以响应参与者的事件并开始处理。完成后,

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

间歇性地,我们看到服务已成功完成处理,但响应未返回给参与者的场景。我的意思是,控件不会返回到actor,整个actor处理会被卡住,不会继续进行下去。 我们在服务端或参与者端找不到任何异常。


正在寻找进一步调查该问题的指针。任何帮助都将不胜感激。

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

这样,参与者只能在事件发送/接收期间活动,从而允许集群承载更多的工作负载。它还可以防止您的参与者必须等待数小时才能返回调用,这会阻止其他进程使用它

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

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

@LeokD-感谢您的投入。将探索更多关于图书馆的信息。然而,在当前的设计中,我们是否可以立即做出任何改变来缓解这个问题?我在答案中添加了一些想法