Apache-2.2

從 Django App 分配負載

  • May 22, 2014

我目前正處於將我的第一個大型應用程序移出開發階段的階段。

我已經與一些知道他們在說什麼的 CTO 進行了交談,並建議我執行以下操作:

將啟動階段分解為 4 步流程

I. 啟動單一結構化應用程序。應用程序內部的 assets/ 和 db.sqlite3 都在一台伺服器上。

二、將數據庫移動到自己的伺服器上,使用 CDN(如 aws-s3)來保存資產/

三、設置負載均衡

四。使用 NoSQL 解決方案而不是 rdbms。

所以!我的主要問題涉及第 2 項:

我是否必須設置一個環境來執行 sqlite3,創建一個使用者,然後專門為我的 django 應用程序提供該身份驗證?

我熟悉將資產儲存在外部,但我從來不需要移出數據庫,不包括實現解析的非 django 解決方案。

tldr; 我是一名業餘專業開發人員,我從未建構過任何打算擁有超過 1,000 個使用者的東西,我很好奇創建 django 應用程序的流程是什麼樣的,該應用程序通過使用另一台伺服器成功減少伺服器負載.

我的想法可能有缺陷:我不明白這是如何分配負載的,因為在我看來,應用程序似乎必須提出更遠的請求才能與數據庫通信。它實際上只是充當在客戶端和伺服器之間來回傳遞消息的中間人嗎?

計劃使用 apache 進行託管,可能在 ec2 ubuntu 14.04 實例上(多個?)。

謝謝。

我真的,真的被你得到的名單弄糊塗了。

首先,它告訴您在單個伺服器上使用 sqlite3。然後它告訴你把這個sqlite數據庫移動到不同的主機上?然後它會告訴您設置負載平衡(在單個 Web 伺服器上?)然後它會告訴您使用 NoSQL 解決方案,因為完全沒有理由說明 rdms 會成為您在此處描述的瓶頸。

無論如何,您希望像這樣廣泛託管的項目的一般設置(以及簡單的方法)是將數據庫放在單獨的主機上(無論是 mysql,還是 postgresql,您喜歡什麼)並將程式碼部署到一個數字的應用程序伺服器。

您將使用部署工具或 nfs 來確保所有應用程序伺服器上的程式碼都相同。

在此之前,您通常會放置一個負載平衡器和/或反向 HTTP 代理來解除安裝通常會到達您的後端伺服器的流量。

一個好的解決方案是確實與 Amazon 合作並使用他們的 Elastic Loadbalancer 使您的方案看起來像這樣:

  • 1 個負載均衡器實例。
  • 2 個(或更多)應用程序伺服器實例。
  • 您最喜歡的數據庫伺服器的 1 個(或更多)實例。

您可以通過在您的一個應用程序伺服器上執行數據庫伺服器來擴展/內爆它。您可以通過為您的數據庫伺服器、自動供應、供應工具等添加故障轉移來擴展它。

引用自:https://serverfault.com/questions/597758