我正在构建一个解决方案,我们将在其中将(服务结构)无状态服务部署到 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
有没有通过or涉及纯配置的解决方案ServiceManifest.xml
?