从Django App分配负载

我正在接近将我的第一个大型应用程序从开发中移出的阶段。

我曾经和一些知道他们在谈论什么的CTO谈过,而且我被告知要做以下工作:

将发射阶段分成4个步骤

I.启动单个结构化的应用程序。 assets /和db.sqlite3在应用程序内,全部在一台服务器上。

II。 将数据库移到自己的服务器上,使用CDN(如aws-s3)来保存资产/

III。 设置负载平衡

IV。 使用NoSQL解决scheme而不是rdbms。

所以! 我关心的主要问题是项目2:

我必须设置一个环境来运行sqlite3,创build一个用户,然后给我的django应用程序专门的身份validation?

我熟悉将资产存储在外部,但是我从来不需要移出数据库,不包括执行parsing的非django解决scheme。

tldr; 我是一个业余的专业开发人员,我从来没有build立任何曾经有超过1000个用户的任何东西,并且好奇创build一个django应用程序的stream程stream程看起来如何,通过使用另一个服务器来成功减less服务器负载。

我的想法可能有缺陷:我不明白这是如何分配负载,因为对我来说,似乎应用程序将不得不进一步请求与数据库进行通信。 它实际上只是作为一个在客户端和服务器之间来回传递消息的中间人吗?

计划使用Apache的托pipe,可能在一个EC2的Ubuntu 14.04实例(多?)。

谢谢。

我真的很困惑,你得到的名单。

首先它告诉你在一台服务器上使用sqlite3。 那么它会告诉你将这个sqlite数据库移动到不同的主机? 那么它会告诉你设置负载平衡(在一个单一的networking服务器上?),那么当没有任何理由的时候,它会告诉你使用一个NoSQL解决scheme,为什么一个rdms会成为你在这里描述的瓶颈。

无论如何,你想广泛地主持一个项目的一般设置,像这样(和简单的方法)是把数据库放在一个单独的主机上(不pipe是mysql,是postgresql,你喜欢什么),并将代码部署到一个数字应用程序服务器。

您可以使用部署工具或nfs来确保所有应用程序服务器上的代码相同。

在这之前,您通常会放置一个负载平衡器和/或反向HTTP代理,以卸载通常会到达您的后端服务器的stream量。

一个好的解决scheme是与亚马逊合作,并使用Elastic Loadbalancer,使您的scheme如下所示:

  • 一个负载均衡器的实例。
  • 2个(或更多)应用程序服务器实例。
  • 1个(或更多)您喜欢的数据库服务器的实例。

您可以通过在其中一个应用程序服务器上运行数据库服务器来扩展/解决此问题。 您可以通过为数据库服务器添加故障转移,自动configuration,configuration工具等来扩展它。