- Описать proto файл с сервисом из 3 методов: добавить пользователя, удалить пользователя, список пользователей
- Реализовать gRPC сервис на основе proto файла на Go
- Для хранения данных использовать PostgreSQL
- на запрос получения списка пользователей данные будут кешироваться в redis на минуту и брать из редиса
- При добавлении пользователя делать лог в clickHouse
- Добавление логов в clickHouse делать через очередь Kafka
Установить:
- Docker
- Go
- gPRC
- gcc (для Windows)
Команда запускает в докерах все сервисы и выводит результат в консоль
docker-compose -f .\docker-compose-quick.yml up --build
Запускаем базу
docker-compose up
Запускаем сервер.
cd service/server
go run server/server.go
Запускаем сервис для логирования.
cd service/logger
go run logger/logger.go
Отдельно запускаем клиент с тестовыми запросами
cd service/server
go run client/client.go
После изменения .proto
-файла, генерируем код командой:
protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative proto/user/user.proto
protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative proto/logger/logger.proto