Azure Service Fabric 如何调整参与者和网络的大小
Azure Service Fabric how to size Actors and networks
应采用什么方法来确定 Azure 服务结构有状态参与者系统的正确参与者大小?
极端地说,我可以理论上 恰好有 1 个 actor 具有 所有状态 或者反过来使用 actor 来存储恰好 1 个字符串。显然这两种说法都是错误的。
对于单个参与者,如果测量数据的序列化大小,多少 千字节被认为是小的,多少 兆字节会被认为是大的?例如,10KB 是小的还是 10MB 是大的?
根据上述答案构建,假设一个演员网络受到 "small" 演员的威胁。什么构成小型网络与大型网络?再举个例子,100万是小的还是10亿是大的?
我强烈希望对这些测量结果应用某种引用。但是,我无法从 Azure 文档中获取任何特定信息。如果还没有发布具体信息,我会接受处理不同参与者网络实现的来源,而不是专门针对 ASF 的来源。
一般来说,actor 状态的原始大小不如它的范围和访问模式有趣。如果您将 actor 用作 "manager" 其他组件需要访问其各个部分的大量状态,那么您很可能会被 actor 模型的单线程性质绊倒为多个呼叫者尝试并行发出请求。另一方面,如果您有一个自然封装的 actor,需要利用大量状态来执行其任务,那么将所有状态存储在本地而不是发出一组网络请求可能是有益的。
如果您正在寻找一个非常粗略的经验法则,我希望大多数 actor 状态都以千字节为单位进行测量。如果您超过兆字节的阈值,则值得重新检查您的设计并确保您的演员没有扮演经理或迷你数据库角色,如果使用可靠的 service/reliable 字典会更好。
应采用什么方法来确定 Azure 服务结构有状态参与者系统的正确参与者大小?
极端地说,我可以理论上 恰好有 1 个 actor 具有 所有状态 或者反过来使用 actor 来存储恰好 1 个字符串。显然这两种说法都是错误的。
对于单个参与者,如果测量数据的序列化大小,多少 千字节被认为是小的,多少 兆字节会被认为是大的?例如,10KB 是小的还是 10MB 是大的?
根据上述答案构建,假设一个演员网络受到 "small" 演员的威胁。什么构成小型网络与大型网络?再举个例子,100万是小的还是10亿是大的?
我强烈希望对这些测量结果应用某种引用。但是,我无法从 Azure 文档中获取任何特定信息。如果还没有发布具体信息,我会接受处理不同参与者网络实现的来源,而不是专门针对 ASF 的来源。
一般来说,actor 状态的原始大小不如它的范围和访问模式有趣。如果您将 actor 用作 "manager" 其他组件需要访问其各个部分的大量状态,那么您很可能会被 actor 模型的单线程性质绊倒为多个呼叫者尝试并行发出请求。另一方面,如果您有一个自然封装的 actor,需要利用大量状态来执行其任务,那么将所有状态存储在本地而不是发出一组网络请求可能是有益的。
如果您正在寻找一个非常粗略的经验法则,我希望大多数 actor 状态都以千字节为单位进行测量。如果您超过兆字节的阈值,则值得重新检查您的设计并确保您的演员没有扮演经理或迷你数据库角色,如果使用可靠的 service/reliable 字典会更好。