gpt4 book ai didi

c# - 消息路由、分区和并行处理

转载 作者:行者123 更新时间:2023-12-02 15:20:48 25 4
gpt4 key购买 nike

我正在尝试解决一组传入消息的分区和并行化问题。我想根据用户 ID 进行分区,它是一个整数。

因此,假设我有十万个用户,并且我想要 X 个执行线程或分区,我希望能够使用分区规则(如 userid < 10000、userid > 100000 < 50000 等)创建 X 个线程,并能够验证这一点这些分区覆盖整个用户集,并且不存在重复项(即每个分区规则表示的集合之间没有交集)。

如何实现一种算法来验证 C#(或任何 .NET 语言,如 F#)中的分区规则?

因此,如果我有 10 个用户 ID(1,2,3,4,5,6,7,8,9,10),则线程总数必须只有 10 个用户 ID,并且更多中没有重复的用户 ID多于 1 个线程

感谢您到目前为止的回复,但我想澄清一下,我并没有考虑在所有现有用户之间均匀分区。相反,我希望能够创建一个分区规则表来定义如何完成分区。该表可能看起来像这样:

Thread 1: UserId > 0 < 100
Thread 2: UserId >= 100 < 200
Thread 3: UserId > 300

我想要的是一种算法,可以验证这组规则是否详尽(涵盖所有用户 id)并且不包含重复项(没有用户 id 不会分配给多个线程)

最佳答案

我认为实现这种分区逻辑的最简单方法是按模除法进行分区。IE。如果您有 n 个分区可以将用户分配到 - 只需将 UserId 除以 n 即可。这将为您提供 0..(n-1) 的剩余部分,并且通过该剩余部分,每个 UserId 都会自动映射到您的 n 个分区(线程)之一。

如果 UserId 均匀分布,则此分区方案甚至还将在统计上均匀地将所有用户分布在现有分区上。

这个分配方案根据定义是详尽的,因为对于这样的模除法只能有 0..(n-1) 的其余部分,并且每个 UserId 都有这样的模除法的定义结果。

关于c# - 消息路由、分区和并行处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56167230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com