【问题标题】:Scalable django app, should message queue be located on load balancer or app server?可扩展的 django 应用程序,消息队列应该位于负载均衡器还是应用程序服务器上?
【发布时间】:2014-08-11 15:43:09
【问题描述】:

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

我现在的设置:

应用请求 > 负载均衡器(nginx、rabbitmq)> 工作人员,2 个正在使用(gunicorn/celery)> db(postgres)

所以我目前有 4 个 AWS EC2 实例(全部为 m3.medium)连接在一个 VPC 中,为我完成所有这些工作。在工作节点上做rabbit没有多大意义,所以我只是想了解人们在做什么。

我也对如何最好地配置 gunicorn 感到好奇,但从我的搜索来看,除了实际工作人员的数量/类型之外,似乎没有太多其他问题。我的 AWS EC2 实例 (m3.medium) 只有 3 个/同步(使用异步工作者的性能更差)。

【问题讨论】:

    标签: django nginx rabbitmq celery gunicorn


    【解决方案1】:

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

    在哪里使用负载平衡器 > 应用程序/工作者服务器 > 数据库服务器 我们有多个运行rabbitmq、redis等的不同服务器。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      • 2018-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多