可扩展的django应用程序,消息队列应该位于负载均衡器或应用服务器上吗?

时间:2014-08-11 15:43:10

标签: django nginx rabbitmq celery gunicorn

我刚刚为django应用程序构建了我的第一个可扩展后端,但是我将消息队列服务(RabbitMQ)放在负载均衡器机器上。我能够用最多500个并发用户围攻我的一些API路由而没有严重的时间不足但是我想知道我是否通过将MQ服务放在其他地方来获得更好的性能。

我现在的设置:

应用请求>负载均衡器(nginx,rabbitmq)>工人,2在使用(gunicorn /芹菜)> db(postgres)

所以我目前在VPC中连接了4个AWS EC2实例(所有m3.medium)为我做这一切。在工作节点上做兔子是没有意义的,所以我只想弄清楚人们做什么。

我也很好奇如何最好地配置gunicorn,但是从我的搜索来看,除了数量/类型的实际工作人员之外,似乎还有很多东西要搞乱。对于我的AWS EC2实例(m3.medium),只有3 /同步(使用异步工作程序的性能下降)。

1 个答案:

答案 0 :(得分:0)

服务器和应用程序的设置取决于服务器的负载和容量。

使用负载均衡器的位置>应用程序/工作服务器> DB服务器 我们有多个不同的服务器,其中运行着rabbitmq,redis等。

如果您的服务器负载均衡器服务器可以处理它旁边的rabbitmq,我认为没有理由改变它。 很难告诉你什么是最好的'方式是。

我认为如果您当前的解决方案运行没有任何问题,我会保留它,直到您遇到问题(密切关注您的日志等)并根据该信息做出决定。