Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Хочется странного (синхронно/асинхронные запросы)
- To: nginx-ru@xxxxxxxxx
- Subject: Re: Хочется странного (синхронно/асинхронные запросы)
- From: Alexandre Snarskii <snar@xxxxxxxxxxx>
- Date: Wed, 25 Apr 2012 14:38:40 +0400
- In-reply-to: <CAOrB69OfAP_MqjrcXowTgGGCdA5cuyoE5o-cOZmyJ=FWJjx6jg@mail.gmail.com>
- References: <CAOrB69OfAP_MqjrcXowTgGGCdA5cuyoE5o-cOZmyJ=FWJjx6jg@mail.gmail.com>
On Wed, Apr 25, 2012 at 10:13:33AM +0400, Andrey Velikoredchanin wrote:
> Всем привет!
>
> Появилась необходимость в конверторе синхронных HTTP запросов в асинхронные.
> По
> идее, задача как раз для nginx, поэтому сюда и пишу.
>
> Работать должно примерно так:
>
> 1. На определенный урл поступает HTTP запрос;
> 2. Конвертер сохраняет запрос вместе с его сокетом в буфер с определенным
> идентификатором;
> 3. Запрос с присоединенным идентификатором передается в модуль асинхронной
> обработки (обычный fastcgi который регистрирует запрос в очереди на обработку
> и
> закрывает коннект);
> 4. По окончанию обработки, модуль асинхронной обработки отправляет на второй
> определенный урл (урл конвертера) через HTTP запрос идентификатор запроса из
> п.2 и результатирующий ответ на первый запрос;
> 5. Конвертер извлекает из буфера ждущих соединений нужный сокет и отдает в
> него
> результатирующий ответ.
>
> Необходимость проистекает из-за высокой нагрузки и многообразия алгоритмов
> обработки запросов.
>
> Может быть, если не nginx, то есть какие-то другие решения?
Я не уверен, что хорошо понял задачу, но я бы посмотрел в сторону
https://github.com/calio/beanstalkd-nginx-module
в примерно следующем сценарии:
Начальный запрос поступает на простой fastcgi который делает необходимую
предобработку и формирование таски в beanstalk'е (в частности, с указанием
уникальной "очереди ответа"), после чего возвращает "управление" в nginx
с помощью X-Accel-Redirect на спец. location, который и ждет появления
ответа в этой самой уникальной очереди. А уж кто и как обрабатывает
задачи из очередей beanstalk'а - совершенно отдельный вопрос.
PS: не факт, что оно заработает, никогда не тестировал. В частности,
совершенно не уверен, что модуль работы с beanstalk'ом умеет ожидать
ответов по нескольким очередям "в одном соединении".
--
In theory, there is no difference between theory and practice.
But, in practice, there is.
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|