Заключительный проект: реализация многопоточного веб-сервера

Это было длинным путешествием, но мы сделали это! Это окончание книги. Расставаться всегда немного печально. Но прежде чем мы закончим, давайте построим еще один проект, чтобы показать некоторые из вещей, которые мы узнали в этих заключительных главах, а также внесём некоторые улучшения.

Вот что мы собираемся сделать: веб-сервер, который приветствует:

hello from rust

Шаги решения:

  1. Углубимся в тонкости TCP и HTTP
  2. Реализуем обработчик TCP-соединений с помощью сокета
  3. Проанализируем некоторое количество HTTP-запросов
  4. Реализуем корректный HTTP-ответ (response)
  5. Увеличим пропускную способность нашего сервера с помощью пула потоков

Прежде чем мы начнём, мы хотели бы вам сообщить, что уже существует множество контейнеров с помощью функционала которых можно реализовать, или уже реализовавших описанный нами функционал.

Однако в этой главе мы намерены учиться, а не просто найти простое решение. Т.к. Rust является языком системного программирования, мы можем выбрать уровень абстракции, с которым мы хотим работать. Мы можем перейти на более низкий уровень, чем это возможно или практично на других языках. Итак, мы будем создавать HTTP-сервер и пул потоков для того, чтобы понять идеи и методы, лежащие в основе уже созданных решений, которые мы могли бы использовать в будущем.