Microsoft Orleans 中的 grain 故障转移自动重试

Automatic Retry on grain fail-over in Microsoft Orleans

所以我们正在测试 Grain 故障转移的工作原理,以防某些筒仓由于某种原因(服务器关闭等)没有响应。目前我们在两台不同的机器上有两个筒仓 运行,每台机器上都激活了谷物。然后我们继续杀死其中一个筒仓(出乎意料)。我们尝试在 DEAD silo 上调用 grain,并在超时(我相信总共 3 分钟左右)后抛出一个异常,说明 Silo 正在拒绝连接。现在,我们相信在一个筒仓被宣布为 DEAD 之后,只有当我们重试激活时,谷物才会在另一个筒仓上被激活。这对我们来说很好。但是,我们想知道是否有某种方法可以自动重试而不是我们自己执行逻辑。

首先,3 分钟听起来太多了。如果您使用默认的活性设置,它应该是几十秒。这是什么系统商店?

如果你想自动重试,你最好将所有客户端 grain 调用包装在一个包装器中,例如,它将以指数退避重试。自己重试会给你更多的控制权,以及重试什么和如何重试。