Новые возможности Eserv/3 и Eproxy/3
Возможность детальной настройки поведения сервера.
Теперь можно даже без использования специализированных расширений (plugins) Eserv значительно влиять на "принятие решений" сервером установкой набора правил, вступающих в силу при наступлении событий:- во время запуска сервера OnStartup
- в момент приема сервером каждого клиентского соединения OnConnect
- в момент обработки запроса к серверу OnRequest
- в момент окончания обработки запроса OnRequestComplete
- в момент отключения клиента OnDisconnect
- во время остановки сервера OnShutdown
- и многих других (зависит от конкретного протокола)
Выход на новые показатели масштабируемости и производительности.
5-летний опыт эксплуатации Eserv позволил выделить несколько узких мест в коде, препятствующих стабильной работе при очень больших нагрузках. Не смотря на имеющиеся свидетельства использования Eserv (даже версии 1.х) в сетях с тысячами пользователей, такие случаи все же были достаточно редки, т.к. Eserv/2 при этом довольно ресурсоемок и способен исчерпать ресурсы системы при большом количестве одновременных подключений. Нельзя было ограничить к-во подключений, максимальный объем используемой памяти и т.д. В Eserv/3 сетевое ядро компактнее и быстрее, можно устанавливать ограничения использования ресурсов. В итоге мы, например, смогли полностью перевести наш сильно нагруженный веб-сервер www.eserv.ru (и все субдомены eserv.ru и etype.net) с компьютера Sun Enterprise (с SunOS), где хостер жаловался на очень сильную загрузку их машины нашим веб-сервером (он тогда был на Apache), на веб-сервер из комплекта Eserv/3 на довольно слабом выделенном сервере (Windows2000 на Celeron 700 и всего 64Mb памяти!). Плюс на той же машине работает FTP и почтовый сервер Eserv/3. И даже на пике нагрузок — например во время массированной атаки вируса Nimda летом 2001 г, когда огромное число серверов в интернете были остановлены из-за перегрузок — Eserv работал исключительно стабильно (кстати, к чести Windows 2000 надо сказать, что он отлично справляется с нагрузками тоже — месяцами работает без перезагрузки). Кроме того, Eserv/3 теперь может распределять нагрузку между несколькими машинами, "делегируя" им часть своей работы — ведение журналов работы, выполнение авторизации и др. Более того, Eserv/3 позволяет после окончания настройки хранить все полученные правила в скомпилированном виде, что еще более ускоряет работу (в Eserv/2 компилировать правила можно было только в plugin'ах). Благодаря модульной структуре можно полностью отключать неиспользуемые возможности сервера, что также повышает скорость работы и снижает потребление памяти компьютера. Все сказанное относится и к Eproxy/3, его проверяли в боевых условиях, устанавливая в качестве прокси для всей пользователей нашей большой сети. Мы — провайдеры в калининградском регионе. На таком ответственном участке провайдерами обычно используется Squid (под Unix), но Eproxy/3 выдержал испытание. Нагрузка там еще больше, чем держит Eserv/3 на www.eserv.ru, но и машина помощнее.Предоставление исходных текстов программ.
В Eserv/3 и Eproxy/3 используется программный код проектов SPF, acWEB, acFTP, acFP и других, которые являются свободным ПО с лицензией GNU PL Вы можете получить исходные тексты этих программ, обратившись по указанным ссылкам. Все что можно с этими текстами и программами делать, перечислено в тексте GNU PL При этом сами Eserv и Eproxy распространяются как коммерческие свободные программы. Использование GNU PL на рынке программ для Windows нетипично. Никто из наших конкурентов не предоставляет исходные тексты своих серверов. Но мы посчитали это важным и полезным для наших пользователей. Важно доверять своим интернет-программам, ведь они в принципе могут быть причиной утечки информации. И никакая "сертификация в спецслужбах" не даст вам гарантии безопасности программы, если у вас нет исходных текстов ваших экземпляров программ и если вы не можете сами скомпилировать эти программы. Также полезно иметь возможность модифицировать программу для своих целей (если вы программист или если у вас работают программисты .Полная открытость для разработчиков программных расширений.
Доступность исходных текстов и лицензия GNU PL дает разработчикам свободу доработки и расширения функциональности наших программ. Если вы решили делать это, мы рекомендуем использовать тот же механизм расширений (plugins), который мы использовали при разработке серверов. В этом случае по вашему желанию мы сможем предлагать ваши разработки другим пользователям наших программ, в том числе за плату. Конечно, вы можете и самостоятельно распространять ваши программы. Но как показал опыт распространения plugins и addons для Eserv/2.x, пользоваться нашими каналами распространения удобно и выгодно. Пользователи смогут получить список всех доступных модулей у нас на сайте — так же как было с расширениями Eserv/2.x (большинство этих программ и сейчас доступны для загрузки на ftp.eserv.ru). Для самых активных авторов мы можем разместить у нас отдельный сервер, см. например eutil.eserv.ru с программами для Eserv/2.x.Минимальное легкое ядро универсального TCP-сервера, все протоколы и возможности сервера реализуются специальными расширениями.
Большинство серверов комплекта Eserv и Eproxy основаны на одном и том же универсальном TCP-сервере acTCP (его исходные тексты доступны на сайте проекта acWEB). Это небольшая программа (размер exe-файла около 100кб), которая реализует базовую функциональность сервера — тот код, который нужен в любом сервере, независимо от протокола: прием соединений на заданном порту и запуск обрабатывающих их потоков, а также другие функции, которые требуются всем серверам — например, работа с файлами и строками, обработка ошибок, авторизация и т.д. Кроме этого, там же разместился и транслятор, используемый для компиляции расширений и трансляции правил из файлов настройки. Собственно реализации прикладных протоколов (HTTP, FTP, SMTP и т.д.) в acTCP нет, они реализованы в виде расширений. Так всего 20 килобайт дополнительного кода превращает acTCP в полнофункциональный веб-сервер acWEB (именно на нем работает сайт, который вы сейчас читаете), 25 килобайт кода добавляет в acTCP базовую функциональность HTTP-прокси (без учета многочисленных расширений, написанных уже для HTTP-прокси). Все эти модули могут загружаться и компилироваться из исходных текстов программой acTCP во время её запуска, а могут быть сохранены в скомпилированном виде (например в виде acWEB.exe) и запускаться самостоятельно. Можно также при желании скомпилировать все модули в один большой exe-файл (как Eserv/2.x) и не использовать больше исходные тексты. Такой удивительной гибкости вы больше не найдете ни в одном продукте. Хотя, конечно, большинству пользователей такой "конструктор серверов" не нужен, а нужны готовые изделия, решающие его задачи. Поэтому пусть вас не пугает описанное выше — вы можете расчитывать, что найдете здесь нужный вам комплект в полностью готовом к использованию виде. Важным для вас следствием описанного здесь является только то, что вам не нужно будет скачивать, настраивать (и оплачивать те части программы, которые вам не нужны.Если при прочтении этого текста у вас возникли вопросы, или если вы нашли здесь неточности и ошибки — пишите нам, мы постараемся расширить и исправить описание.
--
Андрей Черезов, 28 декабря 2001 г.
См. также Eserv/3