grpcsample

command module
v0.0.0-...-38b3bfd Latest Latest
Warning

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

Go to latest
Published: Sep 10, 2019 License: MIT Imports: 3 Imported by: 0

README

grpcsample

Описание

Сервис на golang, предоставляющий gRPC API. API сервиса, включая все структуры запросов, ответов и коды ошибок описаны в protobuf

Требования к Сервису

  1. сервис должен работать в отдельной БД (Postgresql) с заданной структурой таблиц (схема данных - crebas.sql
  2. сервис должен конфигурироваться (хост бд, пользователь, адрес интерфейса gRPC и т.д.) через задание опций командной строки.

Описание реализации

Для сборки проекта использовался go версии 1.12.6. Результат вызова protoc, файл api.pb.go, включен в проект и эта зависимость будет нужна только в случае изменения api.proto.

Команда сборки сервиса: go build .

Сервис поддерживает следующие аргументы командной строки:

$ ./grpcsample -h

Usage:
  grpcsample [OPTIONS]

Application Options:
      --addr=        Listen address (default: localhost:7070)
      --metric_addr= prometheus service host:port (default: localhost:8080)
      --metric_url=  prometheus service URL (default: /metrics)
      --log_level=   Log level (default: debug)

DB Options:
      --db.addr=     host:port (default: localhost:5432)
      --db.driver=   DB driver (default: postgres)
      --db.user=     User name
      --db.password= User password
      --db.name=     Database name
      --db.opts=     Database connect options (default: sslmode=disable)

Help Options:
  -h, --help         Show this help message
Использование make

Для облегчения повторного запуска можно использовать команды make:

  • make conf - создать файл конфигурации .env
  • make run - локальная сборка и запуск сервиса с конфигурацией из .env

Полный список команд:

$ make help
build                          Build the binary file for server
clean                          Remove previous builds
conf                           Create initial config
dcape-db-create                Create user, db and load dump
dcape-db-drop                  Drop database and user
dcape-psql                     Run psql
dc                             Run docker-compose (make dc CMD=build)
dep                            Get the dependencies
down                           Stop containers and remove them
help                           Display this help screen
lint                           Run linter
pb                             Generate pb sources
psql                           Run psql via postgresql docker container
run                            Build and run binary
test                           Run grpc client tests
up-db                          Start pg container only
up                             Start pg and app containers
Использование docker

При наличии локально установленных make и docker, сборка и запуск сервиса могут быть произведены командой

make up

Выполнение этой команды повлечет

  • запуск локальной копии БД
  • загрузку в БД файлов из sql
  • сборку проекта
  • запуск сервиса проекта

при этом будут использованы образы docker:

  • docker/compose:1.23.2
  • golang:1.12.6-alpine3.9
  • postgres:11.4
Использование dcape

Сервис также поддерживает деплой в рамках сервиса dcape

Тесты

Файл server_test.go позволяет провести тестирование методов API при работающем сервисе, но текущая версия не удаляет после запуска изменения в БД

Дополнения

  • golint выдает замечания на использование Id, но такая особенность protobuf документирована
  • protoc добавляет в структуры поля с префиксом XXX_, что мешает использовать эти структуры в gorm. Для решения можно было бы использовать gogo/protobuf или retag, но пришлось бы добавить комменты в api.proto

License

Copyright (c) 2019 Aleksei Kovrizhkin lekovr@gmail.com

Documentation

Overview

main application file, see README.md

Directories

Path Synopsis
api
Package api - реализация gRPC API сервиса pb/api.proto
Package api - реализация gRPC API сервиса pb/api.proto
pb

Jump to

Keyboard shortcuts

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