2017-02-27 109 views
1

我有一個節點JS應用程序中的一大組路由,我試圖擴展到多個CPU核心(通過NodeJS羣集)。劃分節點JS羣集之間的快速路由

我想到的計劃是讓不同的工作人員處理一組不同的express.js路線。例如:

/api/ requests handled by WorkerA 
/admin/ handled by WorkerB 
/blog/ handled by WorkerC 
etc 

只需使用條件與工人ID是不夠的,因爲請求仍可降落在錯誤的工人。另外,這些進程都在同一個端口上運行,所以我不能只在內部nginx的URL上匹配& proxy_pass。

在這一點上,我正在考慮更換集羣路由(從主機到工作人員)以匹配URL並將其路由到正確的工作人員,而不僅僅是使用內置的循環方法。但是,這似乎有點冒險,我想知道是否有其他人解決了這個問題,或者可能有其他想法。

回答

1

我的解決辦法是運行多個快遞應用聽取不同的端口,並在前面的代理設置的Nginx服務器請求

說你有三個明確的應用程序,每個人會處理特定類型的路由器,並聽取在單獨的端口(808180828083),當然,他們應該在集羣模式下運行:

//API app used to handle /api routing 
apiApp.listen(8081); 

//Admin app used to handle /admin routing 
adminApp.listen(8082); 

//Blog app used to handle /blog routing 
blogApp.listen(8083); 

和配置Nginx的服務器代理請求:

server { 

    # let nginx server running on a public port 
    listen  80; 

    location /api { 
     proxy_pass http://127.0.0.1:8081 
    } 

    location /admin { 
     proxy_pass http://127.0.0.1:8082 
    } 

    location /blog { 
     proxy_pass http://127.0.0.1:8083 
    } 
} 

proxy_pass只是簡單地告訴nginx將請求轉發到/ api到監聽8081的服務器。你可以檢查完整的文檔here

+0

所以很煩人,但我想這是唯一的選擇: – Antoine