【问题标题】:Multiple Node.js "Apps" in one server file bad practice?一个服务器文件中的多个 Node.js “应用程序” 不好的做法?
【发布时间】:2014-09-27 11:00:37
【问题描述】:

目前,我正在通过一个 server.js 文件运行两个(即将成为三个)node.js websocket 应用程序。我正在使用 express 来服务我的整个页面,以及我编写的粒子物理“游戏”。我也打算做一个聊天室,只是为了更多地了解这些东西。

我的问题(或缺乏?)是所有这些都是通过一个 server.js 文件运行的。 Heroku 似乎需要这个,所以我不确定是否还有其他选择。 Heroku 是我用来托管它的。

我的问题是,这是不好的做法吗?还有什么我应该做的我错过的事情吗?我所有的“应用程序”的流量都非常低,所以我认为这不是一个大问题。我只想从一开始就学习最佳实践,这样我就不会犯愚蠢的错误。谢谢。

编辑:如何使用 procfile 设置在 Heroku 中专门拆分应用程序?

【问题讨论】:

    标签: javascript node.js heroku express


    【解决方案1】:

    在我看来,如果应用程序不相关,这是一种不好的做法。如果资源可以处理,在同一物理或虚拟服务器上运行 3 个节点应用程序本身并不坏。但是,通过同一个 Server.js 文件运行它们会导致很多东西出现在它们不应该属于的地方。假设应用 1 中的致命错误导致应用 2 或应用 3 关闭(或妨碍性能)。

    您应该封装每个应用程序,将它们分成不同的实例来侦听不同的端口,然后使用快速反向代理(阅读:nginx)从网络代理到它们。您可以创建无状态库来封装任何共享功能,然后将这些库包含在每个需要它的应用程序中。

    例如

    app.yourserver.com => localhost:8997 (node app 1)
    app2.yourserver.com = localhost:8998 (node app 2)
    app3.yourserver.com => localhost:8999 (node app 3)
    

    以下是有关如何使用 nginx 设置反向代理的信息:http://nginx.com/resources/admin-guide/reverse-proxy

    【讨论】:

    • 我正在考虑拆分它们,但是,这将如何专门用于 Heroku?我必须创建一个procfile,如此处所示devcenter.heroku.com/articles/getting-started-with-nodejs,它告诉它要运行什么命令。我可以一共制作 3 个单独的应用程序,但据我所知,这需要 3 个单独的 git 存储库、域等。
    • 我帮不上忙,因为我手动管理所有 IT 资源。但是,这绝对是可能的,如果它需要单独的 GIT 存储库,那就这样吧!这是一个很好的做法,一开始会增加一点额外开销,可以为您在未来节省数小时的时间。
    • git repos 不是最大的问题,而是域。不幸的是,我只能将我的域指向 Heroku 应用程序之一.. 至少据我所知。我仍然很欣赏您的回答并已投赞成票。如果我没有得到更好的答案,我会在几天后将您的答案标记为已接受。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 2021-03-02
    • 2019-01-26
    • 2016-11-10
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 2012-08-22
    相关资源
    最近更新 更多