КС:2015:Проект:Memcached — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Итоговая оценка)
(Итоговая оценка)
Строка 60: Строка 60:
  
 
=== Итоговая оценка ===
 
=== Итоговая оценка ===
* '''4 балла'''. Сервер способен выполнять команды "set", "add", "get", "delete". Сервер совместим с существующими клиентами memcached. Реализован LRU кеш. Выполнены замеры производительности.
+
* '''4 балла'''. Сервер способен выполнять команды "set", "add", "get", "delete". Реализован LRU кеш.
* '''6 балла'''. Требования на '''4 балла''' + выполнение команд "replace", "append" "prepend". Поддержка опций -d, -m.
+
* '''6 балла'''. Требования на 4 балла + Сервер совместим с существующими клиентами memcached. Сервер способен выполнять до 10 подключений одновременно.
* '''8 баллов'''. Требования на '''6 баллов''' + выполнение команд "cas", "touch", "incr", "decr", "flush_all", "stats" (последняя -- для подмножества значений).  
+
* '''8 баллов'''. Требования на 6 баллов + Сервер способен обработать до 1000 подключений одновременно.
 +
* '''+1 балл'''. Поддержка опций -d, -m.
 
* '''+1 балл'''. Асимптотика O(1) для выполнения операций в классе Cache.
 
* '''+1 балл'''. Асимптотика O(1) для выполнения операций в классе Cache.
 
* '''+1 балл'''. Реализация чтения параметров из конфига (порт, объем кеша, другие настройки на ваш выбор). Формат конфига может быть любым.
 
* '''+1 балл'''. Реализация чтения параметров из конфига (порт, объем кеша, другие настройки на ваш выбор). Формат конфига может быть любым.
* '''+2 балла'''. Реализация бинарного протокола в дополнение к текстовому (не рассматривается на семинаре).
+
* '''+1 балл'''. Остановка сервера.
* '''до +5 баллов'''. Реализация асинхронной обработки соединений с использованием boost::asio (не рассматривается на семинаре).
+
* '''+0.5 баллов за каждую команду'''. Реализация команд "replace", "append", "prepend", "touch", "incr", "decr".
 +
* '''+1 балл за каждую команду'''. Реализация команд "cas", "flush_all".
 +
* '''+2 балла'''. Реализация команды "stats" (последнюю как минимум для подмножества "pid", "uptime", "time", "rusage_user", "rusage_system", "curr_items", "total_items", "bytes", а также для всех реализованных команд).
 +
* '''+2 балла'''. Реализация ThreadPool.
 +
* '''+5 балла'''. Реализация бинарного протокола в дополнение к текстовому (не рассматривается на семинаре).
 +
* '''+5 баллов'''. Реализация асинхронной обработки соединений (не рассматривается на семинаре).

Версия 10:20, 30 ноября 2015

Ментор

Ментор -- Татьяна Сергеевна Борисова. e-mail: tanyatik@yandex.ru Аккаунты в GIT-сервисах:

https://github.com/tanyatik/ https://bitbucket.org/tanyatik/

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

Введение

Memcached -- распределенная система кеширования объектов в памяти, предназначенная для ускорения веб-приложений за счет ослабления нагрузки на базу данных. Memcached представляет интерфейс ключ-значение (key-value) -- данные идентифицируются по ключу. Memcached использует LRU политику вытеснения записей. Подробности можно прочитать здесь https://code.google.com/p/memcached/wiki/NewStart?tm=6 и здесь https://ru.wikipedia.org/wiki/Memcached .

Github-репозиторий с конспектами семинаров находится здесь https://github.com/tanyatik/hseos-project/tree/master/memcached/sem01 .

Что требуется

Требуется сделать сервер, реализующий текстовый протокол Memcached, совместимый с существующими клиентами memcached.

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

Сетевому и многопоточному программированию под Linux.

Начальные требования

1. Владение техническим английским языком.

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

Критерии оценивания

Требования на зачет к 1 контрольной точке (24 октября 2015)

Необходимо иметь приватный git-репозиторий с проектом, в который приглашен ментор с правами администратора. Приватные репозитории на bitbucket доступны для всех. Приватные репозитории на github бесплатны для студентов, подробности здесь https://education.github.com/pack

В репозитории должно быть:

1. Файл README.md: фамилия и имя студента, а также краткое описание проекта, написанное самостоятельно;

2. Скелет реализации (который был дан для задания 2, смотри https://github.com/tanyatik/hseos-project/tree/master/memcached/project , нужно положить все файлы оттуда в корень репозитория)

3. Файл server.cpp , созданный для задания 1 (можно пока нерабочий).

Требования на зачет к 2 контрольной точке (21 ноября 2015)

Необходимо реализовать:

1. Сетевое взаимодействие для сервера (без параллельной обработки соединений).

2. Протокол memcached (обработка команд, в качестве результата можно выдавать заглушку).

Этому соответствуют задания 2, 3 и 4, данные на семинарах.

ДляLRU кеша можно использовать заглушку.

Итоговая оценка

  • 4 балла. Сервер способен выполнять команды "set", "add", "get", "delete". Реализован LRU кеш.
  • 6 балла. Требования на 4 балла + Сервер совместим с существующими клиентами memcached. Сервер способен выполнять до 10 подключений одновременно.
  • 8 баллов. Требования на 6 баллов + Сервер способен обработать до 1000 подключений одновременно.
  • +1 балл. Поддержка опций -d, -m.
  • +1 балл. Асимптотика O(1) для выполнения операций в классе Cache.
  • +1 балл. Реализация чтения параметров из конфига (порт, объем кеша, другие настройки на ваш выбор). Формат конфига может быть любым.
  • +1 балл. Остановка сервера.
  • +0.5 баллов за каждую команду. Реализация команд "replace", "append", "prepend", "touch", "incr", "decr".
  • +1 балл за каждую команду. Реализация команд "cas", "flush_all".
  • +2 балла. Реализация команды "stats" (последнюю как минимум для подмножества "pid", "uptime", "time", "rusage_user", "rusage_system", "curr_items", "total_items", "bytes", а также для всех реализованных команд).
  • +2 балла. Реализация ThreadPool.
  • +5 балла. Реализация бинарного протокола в дополнение к текстовому (не рассматривается на семинаре).
  • +5 баллов. Реализация асинхронной обработки соединений (не рассматривается на семинаре).