Welcome! Log In Create A New Profile

Advanced

Модуль для доступа к базе данных, но без ngx_http_upstream_t

June 19, 2013 01:16PM
Привет всем,

Я написал nginx модуль, для доступа к базе данных Couchbase[1]. Этот
модуль получился немного не обычным:

1) используется библиотека libcouchbase, которая сама рулит установкой
обработчиков на события, и выполнением собственно IO из них. Так что
пришлось написать плагин[3], который подставляет функции nginx в виде,
удобном для libcouchbase.

2) частично потому что IO выполняется внутри libcouchbase, как и
маршрутизация запроса в кластер (основанная на хешировании ключа),
пришлось отказаться от использования ngx_http_upstream_t (хотя тут я
могу ошибаться). Кроме того libcouchbase может асинхронно получить по
конфигурационному сокету информацию об изменении топологии кластера, и
закрыть часть рабочих сокетов, и подготовить к открытию по требованию
новые.

В ходе тестирование оказалось, что моя реализация неплохо работает как
с под-запросами из других модулей, так и обычными прямыми запросами.
Но всё же нашёлся случай, когда модуль (к его исходникам у меня нет
доступа) делает позапрос в мой, и рассчитывает, что в можно будет
получить содержимое результата через r->upstream->buffer или статус
через r->upstream->state->status.

Собственно вопрос, может ли существовать модуль в экосистеме nginx,
который не заполняет r->upstream в обработчике?

[1]: https://github.com/couchbaselabs/couchbase-nginx-module
[2]: https://github.com/couchbaselabs/couchbase-nginx-module/blob/master/src/ngx_lcb_plugin.c

--
Sergey Avseyev
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Модуль для доступа к базе данных, но без ngx_http_upstream_t

avsej June 19, 2013 01:16PM

Re: Модуль для доступа к базе данных, но без ngx_http_upstream_t

Maxim Dounin June 19, 2013 01:42PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 233
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready