我们的网站需要实时更新,我们正在考虑各种彗星/长轮询解决方案。经过研究,我们决定使用 nginx 作为 4 个龙卷风实例(托管在 Amazon EC2 上)的反向代理。我们目前使用的是传统的 LAMP 堆栈,并且已经用 PHP 编写了大量代码。我们愿意将我们的 PHP 代码转换为 Python 以更好地支持此解决方案。以下是我的问题:
假设一个四核处理器,nginx 可以与 4 个 tornado 实例在同一台服务器上运行,还是建议运行两台单独的服务器:一台用于 nginx,一台用于 4 个 tornado 进程?
在 Nginx 前面使用 HAProxy 有什么好处吗?Nginx 本身不能很好地处理负载平衡吗?
根据我的研究,Nginx 似乎没有一个很好的 URL 重定向模块。是否首选使用 Redis 进行重定向?如果是这样,Redis 应该在 Nginx 前面还是后面?
我们的大部分应用程序代码不会参与实时更新。此代码包含多个数据库查询和文件系统读取,因此它显然不适合非阻塞应用程序服务器。根据我的研究,我了解到阻塞问题可以通过拥有多个 Tornado 实例来缓解,而其他人建议使用单独的应用服务器(例如 Gunicorn/Django/Flask)来阻塞调用。使用非阻塞服务器时处理阻塞调用的最佳方法是什么?
将我们的代码从 PHP 转换为 Python 将是一个漫长的过程。在 Nginx 后面同时运行 Apache/PHP 和 Tornado 是否可以接受,或者我们应该坚持使用语言(使用 gunicorn/django/flask 的龙卷风或单独使用龙卷风)?