ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
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


 




Copyright © Lexa Software, 1996-2009.