我是 Azure Service Fabric 的新手,我正在尝试了解有状态服务的工作原理以及状态的管理方式。
假设一个具有这些副本的有状态服务:
- 一个主要
- 两个活跃的辅助
- 一个闲置的辅助设备
有状态服务具有开放的通信端点,可以从许多无状态服务中调用该端点。当主副本更改状态时,更改将复制到两个事件的辅助副本。我说得对吗?
是否可以从无状态服务之一调用辅助副本,或者只有主副本可以接受请求?
如果可以调用辅助副本,当主副本更改状态时是否会收到通知?我厌倦了 StateManagerChanged 和 DictionaryChanged 但只在主副本上调用?
另外,我希望在主副本和事件辅助副本之间划分请求?除了专门标记为辅助副本的请求之外,所有请求都转到主副本?
最佳答案
Microsoft 网站上有大量有关此内容的文档。
但是基本原理似乎是:
- 状态在多个副本中进行复制。
- 交易用于复制状态
- 主节点负责写入并向副本发送更新
- 服务结构执行批处理以提高效率
- 当主服务器因故障、负载平衡或升级而发生故障时,事件辅助服务器之一会在主服务器完成后立即接管。我的经验表明,一旦主节点即将宕机,您就无法保存任何状态。
- 有多种方法可以读取事件的辅助节点,但我自己还没有这样做
据我所知,底线是设计服务时假设它们会失败,但一切都会正常运行。当主服务器出现故障时,其中一个辅助服务器几乎会立即接管。
关于c# - Azure Service Fabric 可靠服务状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38657033/