Tag: 自动缩放

如何将一个懒散的机器人扩展到1000个团队

为了实现一个懒散的机器人,我需要处理冗余的“实时消息API”。 这是一个基于WebSocket的API,它允许您实时接收Slack的事件并以用户身份发送消息。 更多信息: https : //api.slack.com/rtm 为了只为一个团队创build一个bot,我需要打开一个websocket连接并听取事件。 为另一个团队提供松散的机器人。 我需要打开一个新的websocket连接。 所以, 1队=> 1个websocket连接 2队=> 2个websocket连接 N个团队=> N个websocket连接 我应该做什么来扩展我的websocket连接为无尽的团队? 什么样的架构可以处理1000个websockets连接的自动调节?

什么是我可以扩展我的nodejs应用程序的最佳方式?

基础 现在我的一些朋友正在尝试开发一个用nodejs制作的浏览器游戏。 这是一个多人自上而下的射手,大部分的客户端和服务器端的代码是在JavaScript中。 我们有一个很好的总体方向,我们希望进入,我们正在开发游戏很有趣。 我们做这个游戏的目标之一就是尽可能的努力去作弊。 这样做,我们有所有的游戏逻辑处理服务器端。 客户端只通过web套接字将他们的input发送到服务器,服务器用游戏中正在发生的事情更新客户端(也是web套接字)。 这是我们问题的开始。 所有的服务器端math都变得相当沉重,我们发现我们需要以某种方式扩展来处理超过10个玩家(我们希望能够承载更多)。 起初我们认为我们可以根据需要垂直扩展,但由于nodejs是单线程的,因此只能利用一个内核。 这意味着获得更强大的服务器将不会帮助解决这个问题。 我们唯一的解决scheme是水平扩展。 为什么我们在这里问 我们还没有find如何扩展nodejs游戏的好例子。 我们的用例是非常特别的,虽然我们已经尽我们所能做到了这一点,但我们真的可以从外部的意见和build议中受益 细节 我们已经在如何解决这个问题上投入了大量的思想。 我们已经研究了一个多星期了。 以下是我们迄今所做的一切: 四种types的服务器 我们正在将任务分成4个不同的“服务器types”。 每个人都将完成一个特定的任务。 代理服务器 代理服务器将坐在整个堆栈的前端,并成为唯一可以从互联网上直接访问的服务器(可能会有更多这样的服务器)。 它会有haproxy,它会将所有连接路由到Web服务器。 我们selecthaproxy是因为它具有丰富的function集,可靠性和几乎无与伦比的速度。 Web服务器 Web服务器将收到Web请求,并提供所有的Web页面。 他们还将处理大堂的创build/pipe理和游戏创build/pipe理。 要做到这一点,他们会告诉游戏服务器他们有什么游说,大厅里有什么用户,以及他们将要玩的游戏的信息。 然后,networking服务器将更新关于用户input的游戏服务器,并且游戏服务器将更新游戏中正在发生的事件的networking服务器(谁将更新客户端)。 Web服务器将使用TCP套接字与游戏服务器进行任何types的pipe理,并且在进行关于游戏更新的通信时使用UDP套接字。 这将全部使用nodejs完成。 游戏服务器 游戏服务器将处理所有的游戏math和关于游戏的可变更新。 游戏服务器还与数据库服务器进行通信,以logging关于游戏中玩家的很酷的统计数据。 这将使用nodejs完成。 数据库服务器 数据库服务器将托pipe数据库。 这个部分实际上是最简单的,因为我们发现rethinkdb ,有史以来最酷的分贝。 这很容易扩展,奇怪的是,成为扩展应用程序的最简单的部分。 其他一些细节 如果您在整个调查过程中遇到困难,请仔细阅读,这是我们如何进行扩展的半精确图表。 如果你只是好奇,或者认为看看我们的游戏可能是有帮助的,那么目前它在这里是以非缩放状态托pipe的。 有些事情我们不想要 我们不想使用nodejs的集群模块。 这是不稳定的( 在这里说),它不扩展到其他服务器,只有其他处理器。 我们希望能够跨越水平缩放。 我们的问题总结 我们希望我们朝着正确的方向前进,我们已经做好了功课,但是我们并不确定。 我们当然可以就如何以正确的方式做到这一点提出一些build议。 谢谢 我意识到这是一个相当长的问题,做一个深思熟虑的答案并不容易,但我真的很感激。 […]