Files
hse-2026/materials/02-communication/grpc-practice/go-server/README.md
T
2026-09-14 14:45:31 +03:00

2.1 KiB
Raw Blame History

gRPC сервер

Пример gRPC сервера, реализующего 2 rpc: положить и получить значение.

В env переменной SERVER_ADDR передается адрес и порт, которые будет "слушать" сервер. Если переменная не задана, используется параметр по умолчанию — 0.0.0.0:51000.

protobuf

protobuf спецификация хранится в storage.proto. Для перегенерации *pb.go-файлов, необходимо в корне проекта вызвать protoc:

protoc --go_out=. --go_opt=paths=source_relative \
    --go-grpc_out=. --go-grpc_opt=paths=source_relative \
    proto/storage.proto

Подробнее о gRPC можно узнать в документации (там же есть блок про stream'ы). С более сложным примером proto-файла можно ознакомиться здесь.

Тестирование

Сервер можно запустить с помощью команды go run main.go.

Подключиться к серверу можно с помощью grpcurl:

# Установить значение 100500
grpcurl -d '{"value": {"payload": 100500}}' -plaintext localhost:51000 storage.Storage/PutValue

# Получить актуальное значение
grpcurl -d '{}' -plaintext localhost:51000 storage.Storage/GetValue

Docker

# Собрать Docker образ с сервером
docker build -t hse-grpc-server .

# Запустить Docker контейнер:
# -d - запуск в фоне
# -p 50000:51000 - проброс портов: по порту 50000 с хоста будет доступен порт 51000 из контейнера
docker run -d -p 50000:51000 hse-grpc-server

docker ps
docker stop CONTAINER_ID