Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 22 additions & 20 deletions README.ru → README.ru.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
1. Введение
## Введение

Фантом (Phantom) — это i/o engine с набором модулей.
Фантом (Phantom) — это движок ввода/вывода с набором модулей.

Модули выстроены в иерархию и предсталяют собой сущности несколько отличные
от привычных модулей известных HTTP серверов. В каждом из модулей реализованы
Модули выстроены в иерархию и представляют собой сущности, несколько отличные
от привычных модулей известных HTTP-серверов. В каждом из модулей реализованы
классы, экземпляры которых создаются по описанию из конфигурационного
файла. Вообще, конфигурационный файл для Фантома выглядит как декларативная
часть программы, написанной на неком языке с признаками объектной
ориентированности. Проще всего это пояснить минимальным примером:

```
#! /usr/bin/phantom run

setup_t module_setup = setup_module_t {
Expand All @@ -31,6 +32,7 @@ io_t echo_io = io_stream_ipv4_t {
port = 9999
scheduler = main_scheduler
}
```

При разборе этого конфига будут созданы экземпляры классов, которые в программе
так и называются, наследование между которыми такое, как видно из конфига,
Expand All @@ -42,20 +44,20 @@ echo_io будет использовать для обработки запро

Часть параметров для создания объектов берется из конфига, а часть
является умолчательными. Чтобы посмотреть их все, можно воспользоваться
командой 'phantom check <conffile>'.
командой `phantom check <conffile>`.

Полный синтаксис конфига, соответствующий данному набору модулей, можно
увидеть по команде '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. Оба эти модуля пригодны только в тех случаях, когда
Expand All @@ -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 или локально с
Expand All @@ -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), и, возможно, имеют смысл
сами по себе.