【问题标题】:Apache/PHP to Nginx/Tornado/Python [closed]Apache/PHP 到 Nginx/Tornado/Python [关闭]
【发布时间】:2012-10-29 05:43:45
【问题描述】:

我们的网站需要实时更新,我们正在考虑各种彗星/长轮询解决方案。经过研究,我们决定使用 nginx 作为 4 个龙卷风实例(托管在 Amazon EC2 上)的反向代理。我们目前使用的是传统的 LAMP 堆栈,并且已经用 PHP 编写了大量代码。我们愿意将我们的 PHP 代码转换为 Python 以更好地支持此解决方案。以下是我的问题:

  1. 假设一个四核处理器,Nginx 是否可以与 4 个 tornado 实例运行在同一台服务器上,或者是否建议运行两个单独的服务器:一个用于 nginx,一个用于 4 个 tornado进程?

  2. 在 Nginx 前面使用 HAProxy 有什么好处吗? Nginx 本身不是很好地处理负载均衡吗?

  3. 根据我的研究,Nginx 似乎没有很好的 URL 重定向模块。是否首选使用 Redis 进行重定向?如果是,Redis应该在Nginx前面还是后面?

  4. 我们的大部分应用程序代码不会参与实时更新。此代码包含多个数据库查询和文件系统读取,因此它显然不适合非阻塞应用服务器。根据我的研究,我了解到阻塞问题可以通过拥有多个 Tornado 实例来缓解,而其他人建议使用单独的应用服务器(例如 Gunicorn/Django/Flask)来阻塞调用。使用非阻塞服务器时处理阻塞调用的最佳方法是什么?

  5. 将我们的代码从 PHP 转换为 Python 将是一个漫长的过程。在 Nginx 后面同时运行 Apache/PHP 和 Tornado 是否可以接受,还是我们应该坚持使用语言(使用 gunicorn/django/flask 的 tornado 或单独使用 tornado)?

【问题讨论】:

    标签: php python django nginx tornado


    【解决方案1】:

    我会逐点介绍:

    1. 是的。在一台服务器上运行tornado和nginx是可​​以的。您也可以使用 nginx 作为龙卷风的反向代理。

    2. 如果您有多个服务器实例,Haproxy 会给您带来好处。它还允许您将 websockets 直接代理到龙卷风。

    3. 其实nginx可以用来做重定向,没有问题。我还没有听说过使用 redis 进行重定向——它是键/值存储……你的意思可能是别的吗?

    4. 同样,您可以在 django 中编写阻塞部分,在 tornado 中编写非阻塞部分。龙卷风还有一些用于数据库查询的非阻塞库。不确定您是否需要 django 的强大功能。

    5. 是的,在 nginx 后面运行 apache 就可以了。很多项目在 apache 前面使用 nginx 来提供静态文件。

    实际上问题是非常基本的 - 也可以回答。如果您愿意,我可以更详细地说明任何一点。

    【讨论】:

    • 感谢您的快速回复!
    • 1.) 我们确实计划使用 nginx 作为反向代理。我只是好奇,如果在同一台服务器上运行,nginx 进程是否有可能消耗足够的资源来限制其中一个 tornodo 实例。 4.) 对于阻塞调用,你会推荐哪个 python 框架(如果不需要 django)?
    • 绝对没问题 - 在一台服务器上使用 nginx + tornado 不会有任何问题。对于阻塞调用的简单任务 - 看看 Flask。如果您需要良好的管理和简单的数据库模式操作工具,请使用 django。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    相关资源
    最近更新 更多