服务结构状态服务已分区 - 分布均匀

时间:2017-06-06 15:06:08

标签: azure azure-service-fabric

想象一下,我们想要一个按点范围划分的有状态服务, 目标是按点对每个分区进行排序(通常,我们希望在分区之间划分排序任务)。我们希望用户能够在分区之间进行良好分配。 理想的是在用户访问时改变每个分区的范围。点数变化。但这是不可能的,因为我们不能动态地改变分区的范围。

一个想法是拥有一个管理点范围的单一有状态服务,并使用一个映射来告诉其他服务应该为特定点请求哪个分区。但这可能意味着对这项新服务的大量访问,这可能会使服务过载。

有没有更好的想法?

编辑1:

目标1:按排序块(分区)排序排名,这些排序将由其他服务汇总。

目标2:为给定数量的积分提供临时职位。

1 个答案:

答案 0 :(得分:0)

我建议您通过userid对服务进行分区。例如,使用userid的模数partitioncount来确定分区索引。 通过这种方式,可以始终在可预测的分区中找到用户,并且您的用户将得到良好的分发(假设您拥有的用户多于分区)。

您可以使用pub/sub mechanism将更改分数发布到其他(无状态)服务,以保存当前高分的视图。