2011-10-25 32 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設計可以用於促進一個高度可擴展的架構。

相關問題