2011-10-25 33 views
0

我想知道如何最好地连接多个node.js应用程序,这些应用程序都作为http服务器运行。连接多个node.js应用程序

例如:我有一个名为MasterApp的express.js应用程序。这应该处理身份验证,用户帐户,登录页面等。但我也希望有其他应用程序可以执行网站的特定区域,例如Wiki和聊天室。

所以我的有效设置可能类似于如下:

  Web 
     ^
      | 
     MasterApp 
     ^ ^
     |  | 
ServiceApp1 ServiceApp2... 

一个可能的解决办法是把小应用到模块,并将其包含在MasterApp - 但我的理由不这样做。其中之一是我想在MasterApp上维护正常运行时间,而在ServiceApp1和ServiceApp2上进行实验和/或开发。

另一种解决方案,这似乎是明智的,是创建在MasterApp与node-http-proxy代理其认证层ServiceApp1,ServiceApp2后,将请求转发...... 这是一个明智的解决方案吗?还是不明智?

还是有另一种解决方案,我失踪了。或者,我在正确的轨道上使用代理,但也许应该使用HAProxy,而不是将代理保留在节点之外(尽管我喜欢能够动态配置node-http-proxy的想法)。

感谢

回答

2

使用在客户端AJAX来访问你的服务器假设你的应用程序,这将是最容易运行某些类型的代理。您可以进行设置,以便最初使用node-http-proxy,并且稍后将nginx代理放在前面,前提是您发现node-http-proxy太慢。

运行在内存中的其它模块当然会跑的最快,但正如你所指出它意味着主进程会由另一个漏洞的影响。

您所谈论的内容与面向服务的体系结构类似,由于其从操作角度来看具有模块化特性,因此正在变得流行。通过将应用程序分解成单独的服务,每个服务都有自己的数据库,HTTP服务器等,您可以独立升级,扩展,管理和监视组件,这可能是有利的。它确实以性价比(特别是延迟)为代价,并且使用了更多的资源,但具有一定的稳健性。了解更多:http://en.wikipedia.org/wiki/Service-oriented_architecture

随着你必须弄清楚如何处理类似的授权和认证的一些核心问题面向服务的arhitecture。有时候,您需要在作为网守的所有服务前使用代理,并在将请求传递给相应服务之前验证用户凭据,或者服务自身可以通过将凭据传递给另一个后端服务或使用共享来验证凭据一段代码(通常涉及HMAC)。

0

你应该尝试的消息传递代替,例如ZeroMQ设计可以用于促进一个高度可扩展的架构。

相关问题