【问题标题】:Set a limit to each shard?为每个分片设置限制?
【发布时间】:2020-11-04 00:52:03
【问题描述】:

下面是我在为我的机器人设置分片时尝试使用的当前代码。我目前可以在线获得 3 个,但有没有办法可以设置每个分片的限制?

  1. C:\Desktop\Test Bot>节点。 启动分片 0 机器人上线了! 已上线 shard 1 Bot 上线!已上线 shard 2 Bot 上线
    const { ShardingManager } = require('discord.js');
    const manager = new ShardingManager('./bot.js', {
        token: '-----',
        totalShards: 3 
    });
    
    
    manager.on('shardCreate', shard => console.log(`Launched shard ${shard.id}`));
    manager.spawn();
    

我想知道如何设置每个分片 1,500 个公会的限制?

【问题讨论】:

  • 或者在这种情况下我可以使用“自动”,它会为我设置分片上限吗?
  • 不,如果我没记错的话,'auto' 应该使用我提到的 soft 限制,将你的机器人所在的公会数除以 900(推荐公会数)

标签: javascript discord discord.js bots


【解决方案1】:

Discord API 不允许此类功能。而且有一个非常可行的原因。

“分片”的全部目的是使您能够在受控数量的进程/工作线程之间平均分配处理负载。

当你对分片实施公会限制时,你基本上是在取消分片的这两个关键因素:

  • 平均分配负载
  • 能够控制分片的数量

例如,假设您希望您的分片 1500 公会限制和 5 个分片。您的机器人在 10,000 个公会中。

会发生什么: ---总共5个分片---

  • 分片 A:1500 个公会
  • 分片 B:1500 个公会
  • 分片 C:1500 个公会
  • 分片 D:1500 个公会
  • 分片 E:4000 个公会

或者,如果您只是想要 1500 个公会的硬性限制: -- 总共 7 个分片 --

  • 分片 A - F:1500 个公会
  • 分片 G:1000 个公会

如果你想要一个限制,你可以根据你想要的限制对你的机器人所在的公会数量执行上限划分,然后产生相关数量的分片。

Math.ceil(10000 guilds / 1500 limit) 

相当于 7 个分片,每个分片大约有 1430 个公会。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-23
    • 2015-03-04
    • 2015-07-30
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 2015-07-27
    相关资源
    最近更新 更多