Удалить Тех.задание

This commit is contained in:
parent 4b816f4218
commit b2eb4f79a4

View file

@ -1,73 +0,0 @@
1. Наименование системы
«PROFESSIONAL KV-STORE» — высокопроизводительное key-value хранилище данных в оперативной памяти с TCP-интерфейсом
2. Принципы общения (взаимодействия)
Система должна обеспечивать интеллектуальное взаимодействие с клиентом через TCP-соединение с поддержкой текстовых команд.
Клиент подключается, отправляет команды, получает ответы. Сервер обрабатывает запросы асинхронно, поддерживает конкурентный доступ к данным и сохраняет целостность информации.
3. Прикладная задача
Разработка серверного приложения, которое:
• Принимает TCP-подключения от клиентов
• Хранит данные в оперативной памяти в формате "ключ-значение"
• Поддерживает базовые операции: SET, GET, DEL, EXISTS
• Обеспечивает корректный конкурентный доступ
• Выдерживает высокие нагрузки и позволяет тестировать производительность
4. Функциональные требования
FR1: Клиент подключается по TCP и отправляет текстовые команды
FR2: SET key value — сохранить пару ключ-значение
FR3: GET key — получить значение по ключу или вернуть "(nil)"
FR4: DEL key — удалить пару ключ-значение
FR5: EXISTS key — проверить существование ключа
FR6: KEYS — получить список всех ключей
FR7: SETEX key seconds value — сохранить с TTL (время жизни)
FR8: FLUSH — удалить все данные
FR9: DBSIZE — получить количество ключей
FR10: INFO — получить статистику сервера
FR11: PING — проверить доступность сервера
5. Нефункциональные требования
NFR1: Сервер должен поддерживать не менее 10 000 одновременных подключений
NFR2: Среднее время ответа на запрос — не более 1 мс под нагрузкой
NFR3: Отсутствие утечек памяти (проверка Valgrind)
NFR4: Устойчивость к некорректным командам (не должен падать)
NFR5: RPS для GET — не менее 50 000 запросов/сек
NFR6: RPS для SET — не менее 35 000 запросов/сек
NFR7: Поддержка TTL (автоматическое удаление истекших ключей)
NFR8: Персистентность (сохранение данных в JSON файл)
6. Технологический стек
• Язык: С++
• Сетевая библиотека: Boost.Asio (асинхронный TCP)
• Хранилище данных: std::unordered_map + shared_mutex (in-memory)
• Персистентность: nlohmann/json (сохранение в файл)
• Логирование: spdlog
• Сборка: CMake 3.20+
• Тестирование: Google Test
• Бенчмарки: Google Benchmark
• Контейнеризация: Docker
• Тип базы данных: Встроенная in-memory (без внешней БД)
7. Результат
1. Исходный код сервера на C++20
2. Простой клиент для ручной проверки (telnet или Python)
3. Сервис нагрузочного тестирования (скрипты)
4. Отчет с замерами производительности (RPS, задержки, память)
5. Unit-тесты (покрытие ≥ 80%)
6. Интеграционные тесты
7. Dockerfile для контейнеризации
8. Полная документация (README, API, инструкции)
8. Критерии примерки
1. Сервер успешно компилируется и запускается
2. Все команды работают корректно (проверка через telnet)
3. TTL работает (ключи автоматически удаляются)
4. Персистентность работает (сохранение/загрузка)
5. RPS ≥ 35 000 для SET
6. RPS ≥ 50 000 для GET
7. Средняя задержка ≤ 1 мс
8. Поддержка ≥ 10 000 соединений
9. Отсутствие утечек памяти (Valgrind)
10. Покрытие тестами ≥ 80%
11. Есть Dockerfile и инструкция по запуску
12. Есть отчет с результатами нагрузочного тестирования