Системы очередей для взаимодействия приложений
Собственно, идея состоит в реализации парадигмы вопрос-ответ. Очевидны два случаяя - ответ получаем сразу или когда-нибудь потом. Как пример, синхронная система - http, асинхронная - imap.
Вики излагает более подробно, см.
Message queue
Есть продакшен реализации и стандарты, например,
Red Hat Enterprise MRG
Этот монстр реализует стандарт AMQP. Замечу, что спецификация стандарта содержит почти 300 страниц.
В дебиане есть эрланг-реализация этого стандарта в пакете rabbitmq-server. Разработчики проекта RabbitMQ обещают надежность 9 девяток, что означает не более 3-х секунд недоступности системы в столетие, во что ни один здравомыслящий человек не поверит. К примеру, сто лет назад компьютеров еще не было, а через сто лет и таком проекте давно забудут. Так что мы обратимся к более адекватным идеям и реализацим.
Вот реализация попроще и без гарантии доставки сообщения: Gearman
Иллюстрации красивые и понятные, а вот архитектура системы подкачала: вместо стандартизированного протокола - наслоения API. Ну, пусть сами с ними и работают.
Так, картина более-менее прояснилась, посмотрим теперь, что есть для AOLServer. Модули посмотрим здесь и еще кое-где.
Нижеследующая реализация основана на встроенной функции ns_http, которая, признаться, документирована лишь частично, так что пример ее использования будет не лишним.
Nsxmlrpc
Сама реализация здесь: xmlrpc.tcl
Про Digital City разговор отдельный, потому ограничусь ссылкой на презентацию Tcl in AOL Digital City The Architecture of a Multithreaded High-Performance Web Site
В рамках этого проекта также есть модуль очереди: Networked Small Object Broker (nsob)
Вероятно, что-то найдется и для NaviServer, но я не смотрел.
Теперь к вопросу об интеграции AOL Server с внешней системой, в частности, qmail. Рекомендуемый источник познания, к которому следует припасть для работы с qmail, это Life with qmail.
Непосредственно связка AOL + qmail упоминается вот где:
Installing WebMail ACS 3.3
ArsDigita Server Architecture Auditing
Резюме: задачи на асинхронную обработку могут передаваться средствами qmail, а для синхронной подойдет функция ns_http из AOL Server с методом POST (без xmlrpc и других наворотов, разумеется).
Плюсы: используются стандартные протоколы и утилиты.
Минусы: оверхед на взаимодействие. Но необходимость передачи более чем тысяч сообщений в секунду между узлами одного приложения может возникнуть только при очень паршивой архитектуре. А трата миллисекунды времени на запуск задачи, выполняемой час, вполне допустима.
Upd.
tcl-mq: POSIX Message Queues for Tcl. (Tcl package)
Вики излагает более подробно, см.
Message queue
Есть продакшен реализации и стандарты, например,
Red Hat Enterprise MRG
Этот монстр реализует стандарт AMQP. Замечу, что спецификация стандарта содержит почти 300 страниц.
В дебиане есть эрланг-реализация этого стандарта в пакете rabbitmq-server. Разработчики проекта RabbitMQ обещают надежность 9 девяток, что означает не более 3-х секунд недоступности системы в столетие, во что ни один здравомыслящий человек не поверит. К примеру, сто лет назад компьютеров еще не было, а через сто лет и таком проекте давно забудут. Так что мы обратимся к более адекватным идеям и реализацим.
Вот реализация попроще и без гарантии доставки сообщения: Gearman
Иллюстрации красивые и понятные, а вот архитектура системы подкачала: вместо стандартизированного протокола - наслоения API. Ну, пусть сами с ними и работают.
Так, картина более-менее прояснилась, посмотрим теперь, что есть для AOLServer. Модули посмотрим здесь и еще кое-где.
Нижеследующая реализация основана на встроенной функции ns_http, которая, признаться, документирована лишь частично, так что пример ее использования будет не лишним.
Nsxmlrpc
Сама реализация здесь: xmlrpc.tcl
Про Digital City разговор отдельный, потому ограничусь ссылкой на презентацию Tcl in AOL Digital City The Architecture of a Multithreaded High-Performance Web Site
В рамках этого проекта также есть модуль очереди: Networked Small Object Broker (nsob)
Вероятно, что-то найдется и для NaviServer, но я не смотрел.
Теперь к вопросу об интеграции AOL Server с внешней системой, в частности, qmail. Рекомендуемый источник познания, к которому следует припасть для работы с qmail, это Life with qmail.
Непосредственно связка AOL + qmail упоминается вот где:
Installing WebMail ACS 3.3
ArsDigita Server Architecture Auditing
Резюме: задачи на асинхронную обработку могут передаваться средствами qmail, а для синхронной подойдет функция ns_http из AOL Server с методом POST (без xmlrpc и других наворотов, разумеется).
Плюсы: используются стандартные протоколы и утилиты.
Минусы: оверхед на взаимодействие. Но необходимость передачи более чем тысяч сообщений в секунду между узлами одного приложения может возникнуть только при очень паршивой архитектуре. А трата миллисекунды времени на запуск задачи, выполняемой час, вполне допустима.
Upd.
tcl-mq: POSIX Message Queues for Tcl. (Tcl package)
Comments