| | Baikonur состоит из ядра и набора драйверов-обработчиков протоколов. Основными понятиями, которыми оперирует Baikonur Web Application Server, являются пользователь, сессия, приложение и протокол. Пользователь инициирует сессию по некоторому допустимому протоколу. Ядро сервера определяет тип протокола и обращается к обработчику соответствующего протокола. Обработчик идентифицирует пользователя принятыми для данного протокола методами и определяет, какое приложение должно его обслуживать. Ядро предоставляет широкий набор функций, которые могут быть использованы при разработке драйвера протокола, и стандартный интерфейс подключения. Поэтому набор драйверов протоколов легко расширяем. В настоящее время поддерживаются FTP, HTTP, DAAP, IIOP, LDAP, POP3, SMTP, IMAP4 и ряд других протоколов. Определив протокол и приложение и идентифицировав сессию, сервер создает так называемый блок управления подключением, и для данного пользователя запускается приложение (или присоединяется уже запущенное). Для запущенного приложения создается так называемая информационная магистраль (то есть канал подключения к серверу), через которую приложению приходят запросы на обслуживание и уходят ответы. Приложения могут быть одно- и многопользовательскими. Многопользовательские приложения должны самостоятельно хранить специфический контекст для каждого пользователя (если таковой имеется). Сервер сообщает многопользовательскому приложению все, что знает о пользователе, а так же о появлении новых пользователей и исчезновении старых. Эти сигналы приложение обрабатывает самостоятельно. Впрочем, это облегчено соответствующей реализацией компонентов, из которых собирается приложение. Сервер управляет всеми запущенными приложениями и TCP/IP-сессиями, обрабатывая прерывание и возобновление сессий, "слеты" и зависания приложений, находящихся под его контролем, и сам убивает приложения, оставшиеся без пользователей. Сервер умеет балансировать нагрузку. Поскольку многопользовательские приложения, как правило, не являются реентерабельными, то, не закончив обработку одного запроса, приложение не может начать обработку другого. Поэтому, если запросов к одному приложению много и обрабатываются они заметное время, имеет смысл запустить приложение в нескольких экземплярах, чтобы распределением времени между ними занималась операционная система. Сервер реализован с использованием многопоточной технологии, что позволяет достигать очень высокой производительности. Каждая пользовательская сессия и запущенное приложение ведется своей "нитью". Приложение, "отдав" серверу ответ на запрос, сразу освобождается для обработки следующих запросов. Далее отправкой ответа через сеть занимается "нить", ответственная за сессию. Все это позволяет серверу Baikonur работать в условиях массового обслуживания с очень высокой производительностью. Так, при испытаниях, проведенных фирмой Intel, на сервере с четырьмя процессорами Pentium и 512 Мбайт оперативной памяти успешно имитировалось 10 тыс. одновременно работающих пользователей, запустивших 700 приложений. | |