我们目前使用 ConsistentHashingPool 为特定类型的参与者提供粘性路由和节流:
var hashRouter = new ConsistentHashingPool(_hashPoolSize).WithHashMapping(o =>
{
var command = o as IMyCommand;
if (command == null)
{
return null;
}
return command.Id;
});
我们正在添加集群,并希望将此参与者的工作分布在多个节点上。我正在使用 ClusterRouterPool 并提供我现有的路由器作为本地 Pool 构造函数参数:
var clusterRouterPool = new ClusterRouterPool(hashRouter,
new ClusterRouterPoolSettings(1000, _hashPoolSize, true));
我不完全清楚 ClusterRouterPoolSettings 的构造函数参数是什么意思。文档说:
nr-of-instances:这是此路由器将首先部署的总路由的最大数量,然后路由到。
max-nr-of-instances-per-node:池路由器将部署到给定集群节点上的最大路由数。
请注意,nr-of-instances 定义了路由的总数,但不会超过每个节点的路由数,即如果您定义 nr-of-instances = 50 和 max-nr-of-instances-per-node = 2,路由器将为集群中的每个新节点部署 2 个路由,最多 25 个节点。
因此,如果我将实例数设置为 1000(如上所示),我会假设部署和路由到的数量不会超过集群中的实际节点数,对吗?
此外,每个节点的最大实例数似乎与 ConsistentHashingPool 的第一个构造函数参数冲突(或重叠)。在上面的代码中,我将两个值设置为相同。它会取两个值中的较小者吗?
编辑 我的印象是上面的代码有效,只是想了解它是否按照我的意图进行路由。
事实证明,上面的代码根本不起作用(部署了错误的分支)。