想象一下,我们想要一个按点范围划分的有状态服务, 目标是按点对每个分区进行排序(通常,我们希望在分区之间划分排序任务)。我们希望用户能够在分区之间进行良好分配。 理想的是在用户访问时改变每个分区的范围。点数变化。但这是不可能的,因为我们不能动态地改变分区的范围。
一个想法是拥有一个管理点范围的单一有状态服务,并使用一个映射来告诉其他服务应该为特定点请求哪个分区。但这可能意味着对这项新服务的大量访问,这可能会使服务过载。
有没有更好的想法?
编辑1:
目标1:按排序块(分区)排序排名,这些排序将由其他服务汇总。
目标2:为给定数量的积分提供临时职位。
答案 0 :(得分:0)
我建议您通过userid对服务进行分区。例如,使用userid的模数partitioncount来确定分区索引。 通过这种方式,可以始终在可预测的分区中找到用户,并且您的用户将得到良好的分发(假设您拥有的用户多于分区)。
您可以使用pub/sub mechanism将更改分数发布到其他(无状态)服务,以保存当前高分的视图。