Реализован http-сервер на фреймворке netty версии 4.0.0.CR9 с параметрами:
EventLoopGroup bossGroup = new NioEventLoopGroup(max_connections); EventLoopGroup workerGroup = new NioEventLoopGroup(max_streams);
, где установлены значения max_connections = 5, max_streams = 10 То есть открывается до 5 входящих соединений, а каждом до 10 отдельных потоков, отвечающих за трафик.
Приложение собирается Maven'ом.
Детали имплементации:
-
Запрос http://127.0.0.1:8080/hello возвращает "Hello World" с 10-секундной задержкой. В ответ на запрос возвращается html файл с текстом "Hello World" (также можно возвращать простой текст).
-
Запрос на http://127.0.0.1:8080/redirect?url= переадресует на путь, указанный в параметре url. Реализовано при помощи отправки нового объекта Response (new DefaultFullHttpResponse) с соответствующим заголовком HttpHeaders.Names.LOCATION
-
По запросу на http://127.0.0.1:8080/status выдается статистика. Скриншоты приведены ниже. Создана таблица на БД MySQL. При помощи коннектора mysql-connector-java-5.1.34 sql запросами делаются необходимые выборки из БД, добавляются новые записи и т.д. За это отвечает отдельный класс StatusHandler. При помощи библиотеки RenderSnake 1.8 формируется html файл status.html и с Response'ом возвращается клиенту.
-
Запрос на любую другую страницу вернет файл 404.html
-
Скриншоты
-
-
- скриншоты как выглядят станицы /status в рабочем приложении:
-
-
- скриншот результата выполнения команды ab – c 100 – n 10000 http://somedomain/status
Команду ab с указанными параметрами успешно выполнить не удалось. Предполагаю, что это связано с конфигурацией домашнего ПК или неидеальной настройкой сервера на netty. Успешно была выполнена команда с несколько упрощенными параметрами:
-
- еще один скриншот станицы /status, но уже после выполнение команды ab из предыдущего пункта