diff --git a/README.ru b/README.ru.md similarity index 79% rename from README.ru rename to README.ru.md index d6dcf49..6d9a38f 100644 --- a/README.ru +++ b/README.ru.md @@ -1,14 +1,15 @@ - 1. Введение +## Введение -Фантом (Phantom) — это i/o engine с набором модулей. +Фантом (Phantom) — это движок ввода/вывода с набором модулей. -Модули выстроены в иерархию и предсталяют собой сущности несколько отличные -от привычных модулей известных HTTP серверов. В каждом из модулей реализованы +Модули выстроены в иерархию и представляют собой сущности, несколько отличные +от привычных модулей известных HTTP-серверов. В каждом из модулей реализованы классы, экземпляры которых создаются по описанию из конфигурационного файла. Вообще, конфигурационный файл для Фантома выглядит как декларативная часть программы, написанной на неком языке с признаками объектной ориентированности. Проще всего это пояснить минимальным примером: +``` #! /usr/bin/phantom run setup_t module_setup = setup_module_t { @@ -31,6 +32,7 @@ io_t echo_io = io_stream_ipv4_t { port = 9999 scheduler = main_scheduler } +``` При разборе этого конфига будут созданы экземпляры классов, которые в программе так и называются, наследование между которыми такое, как видно из конфига, @@ -42,20 +44,20 @@ echo_io будет использовать для обработки запро Часть параметров для создания объектов берется из конфига, а часть является умолчательными. Чтобы посмотреть их все, можно воспользоваться -командой 'phantom check '. +командой `phantom check `. Полный синтаксис конфига, соответствующий данному набору модулей, можно -увидеть по команде 'phantom syntax [modules]', где 'modules' — это '.so' +увидеть по команде `phantom syntax [modules]`, где `modules` — это `.so` файлы модулей. -Например, для демо эхо сервера эта команда выглядит так: -'phantom syntax /usr/lib/phantom/mod_io_stream{,_ipv4,_proto_echo}.so' +Например, для демо эхо-сервера эта команда выглядит так: +`phantom syntax /usr/lib/phantom/mod_io_stream{,_ipv4,_proto_echo}.so` - 2. Имеющиеся модули. +## Имеющиеся модули. -а) io_stream реализует TCP сервер (IPv4 и/или IPv6) с единственным пока +а) io_stream реализует TCP-сервер (IPv4 и/или IPv6) с единственным пока протоколом (если не считать демонстрационных) — HTTP. Простой пример -конфига: ./examples/io_stream_proto_http_handler_static.conf +конфига: `./examples/io_stream_proto_http_handler_static.conf`. Кроме handler_static, есть еще handler_proxy (обратный прокси) и handler_fcgi. Оба эти модуля пригодны только в тех случаях, когда @@ -66,7 +68,7 @@ handler_fcgi. Оба эти модуля пригодны только в тех б) io_benchmark предназначен для нагрузочного тестирования. В данный момент реализовано тестирование по TCP (IPv4 и IPv6) по протоколу HTTP. Простой пример конфига: -./examples/io_benchmark_method_stream_proto_http.conf +`./examples/io_benchmark_method_stream_proto_http.conf`. Рекомендуется использовать в комплекте с Лунапарком (...). в) io_client — это механизм для асинхронных вызовов по tcp или локально с @@ -77,28 +79,28 @@ io_stream::proto_http::handler_fcgi. В них асинхронность io_cli в других местах. Функциональность io_client::proto_fcgi реализована частично и он нуждается в доработке. -г) SSL транспорт есть для io_stream и io_benchmark::method_stream. +г) SSL-транспорт есть для io_stream и io_benchmark::method_stream. Он базируется на библиотеке OpenSSL и пока пребывает в зачаточном состоянии. Для нагрузочного тестирования HTTPS сервисов его функциональности почти достаточно, а для полноценного HTTPS сервера — нет. - 3. Использование. +## Использование. Разрабатывается и используется в компании Яндекс. - 4. Сборка и установка. +## Сборка и установка. В дистрибутивах, базирующихся на Debian, сборка бинарных пакетов производится естественным образом. В других после 'make all' -собранные бинарники возможно будут обнаружены в директориях -./bin и ./lib/phantom . Версии G++, с которыми ожидаема успешная +собранные бинарники, возможно, будут обнаружены в директориях +`./bin` и `./lib/phantom`. Версии GNU C++, с которыми ожидаема успешная компиляция: 4.2 — 4.6. Основная архитектура — x86_64. i386 тоже поддержиается, остальные скорее всего будут поддерживаться при надобности. - 5. Особенности реализации. +## Особенности реализации. -Пишется на C++ без использования каких-либо популярных и «стандартных» C++ +Пишется на C++, без использования каких-либо популярных и «стандартных» C++ библиотек. В связи с этим включает в себя небольшой набор «велосипедов», -которые размещаются в директории ./pd (phantom dev) и возможно имеют смысл +которые размещаются в директории ./pd (phantom dev), и, возможно, имеют смысл сами по себе.