【发布时间】:2019-05-19 20:10:49
【问题描述】:
我正在构建一个解决方案,我们将在其中将(服务结构)无状态服务部署到 K 个实例。该服务的任务是处理一些工作负载(如查询),我想尽可能平均地分配它们之间的工作负载 - 我想让它成为一个动态解决方案,这意味着如果我决定明天从 K 个实例转到 N 个实例,我希望工作负载拆分以一种现在自动将负载分布到 N 个实例的方式进行。我没有为此服务指定任何分区。
举个例子-
假设我想查询数据库以检索特定的记录块。我有 5 个节点。我希望这 5 个节点检索不同 1/5 的记录集。这可以通过一些查询逻辑来实现,例如 (row_id % N == K),其中 N 是实例总数,K 是唯一的 instance_number。
我希望利用 FabricRuntime.GetNodeContext().NodeId - 但这会返回一个不太有用的 guid。
我正在寻找一种方法,我可以确定地说它是 N 中的实例编号 M(我需要能够通过 1..N 命名实例) - 所以我可以根据这个设置我的查询逻辑。其中一个要求是,如果该实例出现故障/崩溃等...当 SF 自动重新启动它时,它仍应标识为相同的实例 ID - 以便 2 个或更多节点不会查询同一组结果。
解决这个问题的最佳方法是什么?有没有通过ApplicationManifest.xml或ServiceManifest.xml进行纯配置的解决方案?
【问题讨论】:
标签: azure-service-fabric service-fabric-stateless