Кэширующий веб-сервер (проект)

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
Ментор Виктор Яковлев
Учебный семестр Осень 2016
Учебный курс 2-й курс
Максимальное количество студентов, выбравших проект: 15


Внимание! Данный проект находится в архиве и реализован не будет.


Диклэймер. Впервые ставлю 40% "неудов", но снижать требования или идти ещё на какие-то послабления - уже просто никак не возможно. Просьбы "можно отправить до завтра" не принимаются. На проектную работу было выделено 7 месяцев. Один день никого не спасет.

Контактная информация

Канал в Telegram для объявлений: @hse_cs_projects_15x_yacovlev

Нужно создать приватный репозиторий в BitBucket или GitHub, и добавить в collaborators ментора:

- BitBucket: victor_yacovlev
- GitHub: victor-yacovlev

После этого - заполнить форму https://goo.gl/forms/lzoRPbyyWJskFc2j2, в которой нужно указать ссылку на страницу с репозиторием.

Что это за проект?

Введение

Веб-серверы - это программы, которые работают на физических серверах и обеспечивают выдачу содержимого браузерам.

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

Чему вы научитесь?

1. Устройство протокола HTTP, работа с заголовками и запросами

2. Взаимодействию нитей в Unix

3. Умение разрабатывать программы для Unix-подобных систем и ориентироваться в POSIX API

4. Работать с очередью ядра Linux и FreeBSD

Какие начальные требования?

1. Умение разрабатывать программы на Cи или C++

2. Умение пользоваться виртуальными машинами

Какие будут использоваться технологии?

Только низкоуровневые API систем Linux и FreeBSD. Использование сторонних библиотек запрещено.

Темы вводных занятий

Направления развития

Нет. Это учебный проект для отработки практических навыков по курсу АКОС.

Критерии оценки

4 балла. Реализован веб-сервер, который умеет выдавать статические страницы, использую механизм epoll/kqueue

6 баллов. Сервер умеет перенаправлять запрос другому серверу и передавать обратно ответ

8 баллов. Реализована корректная работа с использованием нескольких нитей

+1 балл. Реализована поддержка WebSocket-прокси

+1 балл. Сервер оформлен в виде системной службы для systemd

+1 балл. Сервер корректно обрабатывает ошибочные запросы

Ориентировочное расписание занятий

Аудитории: 432 (вторник), 322 (суббота)

1 ноября (вторник) - две пары: 15:10-16:30, 16:40-18:00

5 ноября (суббота) - 12:10-13:30

8 ноября (вторник) - две пары: 15:10-16:30, 16:40-18:00

19 ноября (суббота) - 12:10-13:30

29 ноября (вторник) - две пары: 15:10-16:30, 16:40-18:00

3 декабря (суббота) - 12:10-13:30