我需要为 Heroku 上托管的机器人实现分片吗?

Posted

技术标签:

【中文标题】我需要为 Heroku 上托管的机器人实现分片吗?【英文标题】:Do I need to implement sharding for a bot hosted on Heroku? 【发布时间】:2020-12-12 18:40:32 【问题描述】:

我将在 heroku 上部署一个不和谐机器人,但我担心可扩展性。我看到 heroku 具有自动缩放功能,但我不知道它是否会自己处理机器人的可伸缩性,或者我是否必须在 nodeJS 中对其进行硬编码并实现分片?

我的目的是让我的机器人具有高度可扩展性,以便它可以轻松扩展以同时处理数百万台服务器,而无需自己管理某些东西。 heroku 可以支持我吗?

【问题讨论】:

【参考方案1】:

有必要在 2,500 台服务器之后进行分片,因为代码无法单独为所有这些公会服务,我建议您使用分片,尤其是传统类型,而不是内部,因为它以可扩展性着称。这将需要对您的代码进行大量更改以管理多个公会的子进程,但如果您的机器人不在 2,500 个服务器中,但不要分片,因为您根本不需要……您可以阅读有关分片及其样式的更多信息here

【讨论】:

【参考方案2】:

根据官方Discord.js guide的说法,只有在处理2500+台服务器时才需要分片。我将我的机器人托管在 heroku 上,到目前为止它的连接非常好,但是它处理的请求量远不及你所说的(大约 200 个公会 atm 中的大约 350 个活跃用户)。

正如我所说:我不能凭经验说话,但理论上这应该可以正常工作,因为工作将在 Discord API 请求和 heroku 容器的几个分片之间进行。

【讨论】:

以上是关于我需要为 Heroku 上托管的机器人实现分片吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Heroku 上托管的 Ruby/Sinatra 应用程序中设置 HTTP 标头?

如何在 Heroku.com 上托管的 Redmine 上安装插件

如何将客户端的正确 IP 地址获取到 Heroku 上托管的 Node socket.io 应用程序中?

如何解决 Heroku 上托管的 django 项目中的迁移问题?

python脚本无法在heroku上托管的其他python脚本中调用fn

头盔导致 Heroku 上托管的 MERN 应用程序导致错误:拒绝执行内联脚本,因为它违反了以下内容