Homework-06-Microservices-gRPC-d1zer72
HW-06: Life OS | Vital Signs Service (gRPC)
Дедлайн: 3 недели. Технологии: Python (grpcio) ИЛИ C++ (userver).
1. Легенда и Контекст
Вы развиваете экосистему Life OS. Для функции мониторинга здоровья в реальном времени (пульс во время бега, уровень стресса) использование REST API неэффективно из-за накладных расходов HTTP/1.1.
Ваша задача: Разработать микросервис Metric Collector на базе протокола gRPC (HTTP/2 + Protobuf). Сервис должен принимать поток данных от биосенсоров и отдавать агрегированную статистику.
2. Структура проекта
Мы подготовили для вас каркас приложения. Выберите или для реализации.
3. Задание
Шаг 1: Изучите контракт (proto/metrics.proto)
В файле уже описаны методы:
— принимаетRecordMetric(user_id, type, value), сохраняет метрику.MetricRequest— принимаетGetAverage, возвращает среднее значение метрики.AverageRequest
Шаг 2: Реализуйте Сервер
Вам нужно написать логику методов и .
- Данные храните в памяти (in-memory словарь/map).
- Логика: При запросе
нужно найти все метрики указанного типа для пользователя и вернуть их среднее арифметическое.GetAverage
Шаг 3: Реализуйте Клиент
Напишите скрипт, который:
- Генерирует 5-10 случайных значений пульса (HEART_RATE).
- Отправляет их на сервер по gRPC.
- Запрашивает среднее значение и выводит его в консоль.
4. Инструкция: Python Track
Для работы требуется Python 3.9+.
Установка и Генерация
Мы используем для управления зависимостями.
-
Установка пакета в режиме разработки:
Это установит
,grpcioи сам ваш пакетprotobuf.lifeos_grpc_service -
Генерация кода из Proto: Находясь в папке
, выполните:pythonВ папке
появятся файлыcustom_serviceиmetrics_pb2.py.metrics_pb2_grpc.py
Запуск
- Сервер:
- Клиент (в новом терминале):
5. Инструкция: C++ Track (Userver)
Этот трек для тех, кто хочет максимальной производительности. Используется фреймворк userver от Яндекс.
Важно: Сборка работает только на Linux или WSL2 (Windows Subsystem for Linux). Нативная сборка под Windows через MSVC не поддерживается.
Подготовка (Ubuntu/Debian)
Установите системные зависимости (компиляторы, cmake, python3 для скриптов userver):
Сборка
Userver будет скачан автоматически при первом запуске cmake (это займет время).
Запуск
После успешной сборки в папке появится исполняемый файл. Ему нужно передать конфиг.
Для проверки клиента (если вы не писали C++ клиент) можно использовать Python-клиент из соседней папки, так как gRPC — это кросс-языковой протокол!