Новые возможности 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

Полная открытость для разработчиков программных расширений.
Доступность исходных текстов и лицензия 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