www.eserv.ru // EservCoreFeatures

oldwiki /2003-08-12 09:48/ (v1)
Продукты и услуги Скачать Документация Купить Поддержка Форумы Партнёрам Статьи О компании
News
15.05.2012
Eserv504
15.05.2012
ActiveSync
01.04.2012
Eproxy508
25.03.2012
Eserv503
26.02.2012
Eserv502
08.02.2012
UMI.CMS
22.12.2011
Eserv431
20.12.2011
Eproxy507
15.11.2011
Eproxy506
19.09.2011
Eproxy505
08.09.2011
Eserv430
07.09.2011
Lightning
19.07.2011
PoweredBy
16.07.2011
IPv6
08.07.2011
Eproxy5beta1
17.06.2011
IPv6DNS
13.06.2011
IPv6Mail
21.03.2011
Eserv428
22.10.2010
Eserv426
22.10.2010
SSL
22.04.2010
Eserv423
20.04.2010
Eserv4WhatsNew
19.04.2010
EservLDAP
19.04.2010
EservDHCP
19.04.2010
EservRubricator
08.04.2010
EservDNS
08.04.2010
NSСI
08.04.2010
WPAD
27.03.2010
Eserv422
27.03.2010
Eserv4Docs
26.03.2010
Eserv4FAQ
21.03.2010
EservIrc
05.03.2010
Eserv421
05.03.2010
HttpProxy
02.03.2010
EservVideo
02.12.2009
Eserv4Wiki
02.12.2009
Eserv4acWEB
02.12.2009
PopPull
22.11.2009
PigMailPigProxy2/WhatsNew
22.11.2009
PigMail/WhatsNew
23.09.2009
FossilEservHowTo
22.09.2009
SourceCodeManagement
22.09.2009
FossilScm
16.09.2009
SendEmail
08.09.2009
RoundCube
07.05.2009
GitScm
07.05.2009
GitEservHowTo
06.05.2009
SunBird

Новые возможности Eserv/3 и Eproxy/3

TOC


Возможность детальной настройки поведения сервера.

Теперь можно даже без использования специализированных расширений (plugins) Eserv значительно влиять на "принятие решений" сервером установкой набора правил, вступающих в силу при наступлении событий:

  • во время запуска сервера OnStartup
  • в момент приема сервером каждого клиентского соединения OnConnect
  • в момент обработки запроса к серверу OnRequest
  • в момент окончания обработки запроса OnRequestComplete
  • в момент отключения клиента OnDisconnect
  • во время остановки сервера OnShutdown
  • и многих других (зависит от конкретного протокола)
Так в правилах OnStartup можно задавать порты и сетевые интерфейсы для сервера, набор подключаемых расширений, глобальные настройки сервера (например, разрешенное число одновременных подключений к серверу, способ ведения журналов работы и др.), в OnConnect — принимать решение о разрешении/отказе обработки данного подключения (на основе анализа IP-адреса подключившегося клиента, например), выборе протокола, установке таймаута автоотключения, в OnRequest — проводить авторизацию, определять права доступа к ресурсам, настраивать формат выдачи ответов на запросы и т.д. Как было и в Eserv/2, правила можно программировать на внутреннем языке Eserv. Только набор правил сильно расширен, и анализируются правила теперь не только планировщиком. Теперь практически не остается поводов упрекнуть Eserv в невозможности реализации каких-то сложных схем управления доступом По многочисленным просьбам мы также разделили Eserv на отдельные компоненты — теперь вместо одного Eserv.exe размером около 400кб можно запускать отдельные серверы размером около 100-150кб с полностью независимыми конфигурациями. Но гибкость настройки оборачивается сложностью, поэтому мы предлагаем типовые конфигурации серверов, настройка которых упрощена с помощью программ настройки, или которые вообще не требуеют настройки (автоматическая настройка). К сожалению, полностью использовать мощь Eserv/3 с помощью программ настройки невозможно (так же как не все возможно сделать в MS Office через меню, есть средства доступные только из встроенного в MS Office языка VB). Но типовые конфигурации Eserv/3 отлично справляются со своими задачами. А при необходимости полученную конфигурацию можно "доводить" и вручную. Кроме того мы предоставляем услугу настройки "под ключ" по заказу покупателя.

Выход на новые показатели масштабируемости и производительности.

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
Работает на Eserv/7.0.beta1/Linux/arm64 (Dec 25 2023)