nginx/node.js/postgres,可擴充性問題?

nginx/node.js/postgres,可擴充性問題?

我有一個應用程式正在運行:

  • 一個 nginx 實例作為前端(提供靜態文件)
  • 用於後端的 Node.js 應用程式叢集(使用 cluster 和expressjs 模組)
  • 一個 Postgres 實例作為資料庫

如果應用程式需要可擴充性(僅適用於 HTTP / REST 請求),那麼此架構是否足夠:

  • 每秒 500 個請求(每個請求僅從 DB 中獲取數據,這些數據可能是幾個 ko,並且在獲取後不需要大量計算)。

  • 20000個用戶同時連接

瓶頸可能在哪裡?

答案1

一個 nginx 實例每秒可以毫不費力地處理數千個小型靜態檔案。

應用程式層的可擴展性更多地取決於您的應用程式而不是node.js - 如果它在本地儲存檔案/會話資料/等,事情可能會變得棘手,但如果您將所有儲存放在像資料庫這樣的中心位置(或可能是類似的東西) Redis 用於儲存會話資料),然後透過添加更多節點來擴展應用程式層應該很容易。

資料庫幾乎總是最難擴展的;如果您主要進行讀取操作,那麼 postgres 9.1 有一些非常好的熱備用功能,允許您擁有一個讀/寫主資料庫和多個只讀從資料庫,這些資料庫可以處理大量的讀取工作。

發展寫入密集型資料庫系統可能是最難的可擴展性問題;當一個超級強大的資料庫伺服器無法跟上時,大多數人最終會完全重新思考和重寫他們的應用程式(除非從一開始就計劃這樣做,但計劃多個主資料庫將使很多事情開始變得更困難和更慢) ,而且很少需要-stackoverflow 網路都在一個資料庫上 IIRC)

相關內容