Homework-06-Microservices-gRPC-Fixed-alisakas

0

Описание

Языки

  • Python50,4%
  • C++31,9%
  • CMake17,7%
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
4 месяца назад
README.md

HW-06: Life OS | Vital Signs Service (gRPC)

Points

Дедлайн: 3 недели. Технологии: Python (grpcio) ИЛИ C++ (userver).

1. Легенда и Контекст

Вы развиваете экосистему Life OS. Для функции мониторинга здоровья в реальном времени (пульс во время бега, уровень стресса) использование REST API неэффективно из-за накладных расходов HTTP/1.1.

Ваша задача: Разработать микросервис Metric Collector на базе протокола gRPC (HTTP/2 + Protobuf). Сервис должен принимать поток данных от биосенсоров и отдавать агрегированную статистику.

2. Структура проекта

Мы подготовили для вас каркас приложения. Выберите

python
или
cpp
для реализации.


3. Задание

Шаг 1: Изучите контракт (
proto/metrics.proto
)

В файле уже описаны методы:

  1. RecordMetric
    — принимает
    MetricRequest
    (user_id, type, value), сохраняет метрику.
  2. GetAverage
    — принимает
    AverageRequest
    , возвращает среднее значение метрики.

Шаг 2: Реализуйте Сервер

Вам нужно написать логику методов

RecordMetric
и
GetAverage
.

  • Данные храните в памяти (in-memory словарь/map).
  • Логика: При запросе
    GetAverage
    нужно найти все метрики указанного типа для пользователя и вернуть их среднее арифметическое.

Шаг 3: Реализуйте Клиент

Напишите скрипт, который:

  1. Генерирует 5-10 случайных значений пульса (HEART_RATE).
  2. Отправляет их на сервер по gRPC.
  3. Запрашивает среднее значение и выводит его в консоль.

4. Инструкция: Python Track

Для работы требуется Python 3.9+.

Установка и Генерация

Мы используем

pyproject.toml
для управления зависимостями.

  1. Установка пакета в режиме разработки:

    Это установит

    grpcio
    ,
    protobuf
    и сам ваш пакет
    lifeos_grpc_service
    .

  2. Генерация кода из Proto: Находясь в папке

    python
    , выполните:

    В папке

    custom_service
    появятся файлы
    metrics_pb2.py
    и
    metrics_pb2_grpc.py
    .

Запуск

  1. Сервер:
  2. Клиент (в новом терминале):

5. Инструкция: C++ Track (Userver)

Этот трек для тех, кто хочет максимальной производительности. Используется фреймворк userver от Яндекс.

Важно: Сборка работает только на Linux или WSL2 (Windows Subsystem for Linux). Нативная сборка под Windows через MSVC не поддерживается.

Подготовка (Ubuntu/Debian)

Установите системные зависимости (компиляторы, cmake, python3 для скриптов userver):

Сборка

Userver будет скачан автоматически при первом запуске cmake (это займет время).

Запуск

После успешной сборки в папке

build
появится исполняемый файл. Ему нужно передать конфиг.

Для проверки клиента (если вы не писали C++ клиент) можно использовать Python-клиент из соседней папки, так как gRPC — это кросс-языковой протокол!


Полезные ссылки