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: Sergey Zhemzhitsky <szh.subs@xxxxxxxxx>
- Date: Mon, 4 Mar 2013 23:45:10 +0400
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:date:from:x-priority:message-id:to:subject:in-reply-to :references:mime-version:content-type:content-transfer-encoding; bh=UqbJKU7Gz9DDPZEg8ijSDYpBlSzbMuOghwmKrFxxbEw=; b=ORSk6s3Xus3VUCdVON0t5KSVw8y5bcuFK3mqiSJVqN+9ekPp6wnv3HrvjnwgLggd+p GM6Pu1bZ99t+3BQ6ePfvXSHGHuQIFHx9kECn4d8rnRfeY2zdzybSGxpGOg+68zwh9MZZ v63stTQTeFK3iTiEvpgBGrfhejlJ9Grlk3k46B5d7+I3hfvSBXkcHO4KSqYcS8oqhK+d PHWnzYlTbLATw+1Mu9/n6KdYn4nm+PILRc7OZX9l0R++n3jWf4lwAGYBKvK1qOQVrW/z rpxymDZLTiL48bv2IaXJ7yJS5/KMR29FSmFd8cWqH/2A/r+pz0hYSkIKhfSsNvF1omGm f0Dw==
- In-reply-to: <20130304120427.GK15378@mdounin.ru>
- References: <1114475269.20130304082900@gmail.com> <20130304120427.GK15378@mdounin.ru>
Максим, большое спасибо за комментарии!
> Так что если вы там, e.g., хотите создавать постоянные соединения с бекендом
> - то
> делать это надо уже после старта рабочих процессов в них самих, а не при
> чтении конфига.
А не подскажете, где лучше всего это делать.
По исходникам и экспериментам, похоже, что callback init_process срабатывает
как раз внутри воркера.
> Hello!
> On Mon, Mar 04, 2013 at 08:29:00AM +0400, Sergey Zhemzhitsky wrote:
>> Привет, Nginx Гуру
>>
>> Модули к nginx никогда не разрабатывал, поэтому не пинайте сильно.
>>
>> Я пытаюсь написать nginx http-модуль к сторонней системе у которой есть С
>> API.
>> Под этим API лежит в том чесле и установка TCP/IP соединения.
>>
>> Насколько я понял, правильным способом подключения к сторонней системе была
>> бы разработка unstream http модуля.
>> Проблема в том, что протокол довольно сложный и в условиях ограниченного
>> времени разбираться с ним некогда,
>> поэтому хотелось бы попользовать API, которое предоставляет система.
>>
>> Посоветуйте, плиз, по следующим вопросам
>>
>> 1. Где лучше всего хранить объекты, которые должны быть созданы и
>> инициализированы только один раз для куска конфигурации
>> server или http?
>> 2. Где лучше всего создавать объекты, которые должны присутствовать единожды
>> для конфигурации server или http (например,
>> устанавливать соединение со сторонней системой)?
>> 3. Насколько я понял под upstream-ами *всегда* лежит асинхронное сокетное
>> api. Верно?
>> 4. Насколько плохо работать напрямую со своими TPC/IP соединениями прямо из
>> request handler-ов?
> In no particular order:
> 1. Конфигурацию модуля, а также глобальные сущности с ней связанные -
> правильнее всего хранить в, как это ни странно, конфиге модуля.
> Надо, однако, иметь ввиду, что конфиг создаётся в master-процессе,
> а потом при fork()'е наследуется в worker'ов. Так что если вы
> там, e.g., хотите создавать постоянные соединения с бекендом - то
> делать это надо уже после старта рабочих процессов в них самих, а
> не при чтении конфига.
> 2. Таки да, nginx - event-based сервер, и для работы со всем чем
> можно - используются event-based API.
> 3. Upstream - это точно такой же модуль, как и все остальные.
> Если вы хотите написать свой модуль, аналогичный upstream'у, я бы
> рекомендовал для начала посмотреть на upstream.
> 4. Работать с сокетами из request handler'ов - не плохо. Работать
> с ними в блокирующемся режиме - плохая идея.
--
Best regards,
Sergey mailto:szh.subs@xxxxxxxxx
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|