Использование gRPC с трехкомпонентной службой API для передачи данных
Введение
В этом уроке мы рассмотрим процесс создания службы передачи файлов с использованием Go и gRPC. Этот сервис позволит клиентам загружать файлы, хранить метаданные в базе данных AWS RDS и сохранять файлы в AWS S3. Мы подробно рассмотрим каждый шаг: от определения API до реализации серверных и клиентских приложений.
Каждый раздел кода более или менее заглушен или псевдо кодирован и не пригоден для производства. Но вы абсолютно можете взять его и использовать в своем проекте. Я подумывал о том, чтобы опубликовать это целиком на GitHub, и, возможно, позже обновлю эту статью.
Предпосылки
Прежде чем мы начнем, убедитесь, что у вас есть следующие предварительные условия:
- Перейдите и настройте gRPC на своем компьютере.
- Учетные данные AWS, настроенные как переменные среды
- Установка необходимых библиотек Go:
go get -u google.golang.org/grpc go get -u github.com/aws/aws-sdk-go-v2
Структура проекта
Наш проект будет состоять из двух отдельных баз кода: одной для сервера и одной для клиента. Вы можете настроить это так, как хотите, опять же — примеры и код в этом посте служат для вас руководством (не дословно), и я ожидаю, что вам будет легко его принять и изменить по мере необходимости. >
Структура каталогов сервера:
file_transfer_server/ |-- api/ | |-- file_transfer.proto |-- start_upload.go |-- upload.go |-- finish_upload.go |-- main.go
Структура клиентского каталога:
file_transfer_client/ |-- pb/ | |-- file_transfer.pb.go |-- start_upload_client.go |-- upload_client.go |-- finish_upload_client.go |-- main.go
В каталоге сервера у нас есть отдельный файл для каждой реализации API (start_upload.go
, upload.go
и finish_upload.go
). Файл main.go
действует как точка входа для серверного приложения.
Каталог клиента содержит сгенерированный код gRPC (file_transfer.pb.go
) и отдельные файлы для каждой реализации клиентского API. В…