Необходимо посчитать: 222
- Сколько было потрачено gas помесячно.
- Среднюю цену gas за день.
- Частотное распределение цены по часам(за весь период).
- Сколько заплатили за весь период (gas price * value).
Требования к сервису:
- Данные должны загружаться удаленно.
- Сервис должен вернуть все значения в виде json файла.
- Данные должны быть посчитаны максимально быстро.
Сервис, проводящий статистический анализ на основе информации о транзакциях
для имитации удаленного доступа к данныс реализован сервис (fakeDataSource),
отдающий масив нужных данных по gRPC основному сервису (statApp)
для доступа к основному сервису реализован доступ по gRPC, а также rest api
с помощью gRPC gateway
для компиляции .proto файлов использован buf
описание endpoint, а также описание выходных данных доступно в панели swagger
swagger документация сгенерирована автоматически с помощью openapiv2
все приложение обернуто в docker образ
главная функция, вычисляющая все статистические показатели работает за время O(n)
т.к. все значения вычисляются за один проход по массиву,
в котором выполняется ограниченное количество действий
To run Docker container, execute the following:
make build-run-imageUse grpcurl (curl for gRPC) to test gRPC API:
grpcurl -plaintext localhost:50050 statApp.StatAppService/GetStatUse curl to test HTTP API:
curl localhost:50040/stat/dayPriceAvgOpen Swagger UI in your browser.
- api - proto files and buf configuration.
- openapiv2 - generated swagger.json file.
- build - Dockerfile.
- cmd - main package.
- pkg - generated Go files and implementation of gRPC server for getting data from rusprofile.ru.
- static/web - static files for Swagger UI page.
- tools - imports for tools used in code generation.