hw7_microservice

command module
v0.0.0-...-ef7719e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 29, 2019 License: MIT Imports: 12 Imported by: 0

README

Сферичный микросервис в вакууме

В этом задании вы научитесь строить микросервис на базе фреймворка gRPC.

В это задании нельзя использовать глобальные переменные, нужное вам храните в полях структуры, которая живёт в замыкании

Вам потребуется реализовать:

  • Сгенерировать необходимый код из proto-файла
  • Базу микросервиса в возможностью остановки сервера
  • ACL – контроль доступа от разных клиентов
  • Систему логирования вызываемых методов
  • Систему сбора сборки статистики (просто счетчики) по вызываемым методам

Микросервис будет состоять из 2-х частей:

  • Какая-то бизнес-логика. В нашем примере она ничего не делает, её достаточно просто вызывать
  • Модуль администрирования, где находится логирование и статистика

С первым всё просто, там логики нету.

Со вторым интереснее. Как правило в настоящих микросервисах и логирование, и статистика работают в единственном экземпляре, у нас же они будут доступны по потоковому (streaming) интерфейсу тому, кто подключится к сервису. Это значит, что к сервису может подключиться 2 клиента логирования и оба будут получать поток логов. Так же к сервису может подключиться 2 (и более) модуля статистики с разными интервалами получения статистики (например, каждые 2, 3 и 5 секунд) и она будет асинхронно отправляться по каждому интерфейсу.

Раз уж был упомянут асинхрон - в задании будут горутины, таймеры, мютексы, контекст с таймаутами/завершением.

Особенности задания: Содержимое service.pb.go (которое получилось у вас при генерации proto-файла) вам необходимо поместить в service.go для загрузки 1 файлом В этом задании нельзя использовать глобальные переменные. Всё что нам необходимо - храните в полях структуры. Запускать тесты с go test -v -race

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL