Skip to content

Idil77soltakhanov/SimpleHttpServer

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SimpleHttpServer

Использование

  • Запустить программу (приложен скомпилированный jar файл). Для запуска обязательно должен быть доступен файл конфига ./resources/server.properties.

  • Выбрать настройки сервера. Выбранные настройки можно сохранить, тогда они перезапишутся в соответствующем конфиг файле.

  • Логирование стоит включить только для удобства проверки единичных тестовых запросов! Очень негативно сказывается на производительности!

  • Нажать Run, сервер запустится. В противном случае покажется сообщение с ошибкой.

  • Также есть возможность перезапустить сервер или обновить кэш по соответствующим кнопкам.

Реализация HTTP сервера

Была выбрана следующая архитектура веб-сервера:

  1. Главный поток веб-сервера использует неблокирующий ввод/вывод NIO для чтения новых запросов и записи ответов. Новый запрос ставится в очередь на обработку.

  2. Создается несколько потоков, которые обрабатывают очередь из запросов. Эмпирически я подобрал, что хорошая производительность получается с использованием 4 таких потоков, но естесственно это сильно зависит от системы и юз кейса. Обработка запроса подразумевает парсинг запроса, нахождение запрашиваемого контента и формирование корректного ответа, который далее отправляется в главный поток для передачи обратно.

  3. Поиск и чтение файлов осуществляется отдельным ответственным за это классом, который может закэшировать файлы в памяти. По умолчание кэширование включено, но можно отключить. Файлы имеющие расширение отличное от .jpg, .jpeg, .html, .js будут не доступны для сервера и рассматриваться как несуществующие, даже если они находятся в рабочей папке сервера.

Проводил проверку как на Windows, так и на Ubuntu. Полноценного тестирование не проводил, возможно, есть какие то глюки или баги =)

About

No description, website, or topics provided.

Resources

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 99.8%
  • HTML 0.2%