Request Counter
application - Go HTTP server that on each request responds with a counter of the total number of requests that it has received during the last time period (could be configurable).
Request Counter
can store it's data in memory only or persist it to a file.
Request Counter
stores counts into intervals (buckets). Each of them represent particular time interval.
Intervals are sored in a ring.
First two uint64 values in data are metainfo:
- Current position in the ring
- Time of first access of interval on current position
To get request count execute next curl
command:
curl http://localhost:8080/requestcount
GET /requestcount
return json:
{
"count":3
}
To install Request Counter
application glide
(https://github.com/Masterminds/glide) package manager must be installed.
To build Request Counter
you can just execute:
make
To run tests:
make test
To run the application:
./requestcounter -config config-file.yaml
# address to listen on
host: 0.0.0.0
# port to listen on
port: 8080
# logging lever, could be: error, warning, info, debug
log-level: error
# count of intervals (buckets)
interval-count: 100
# duration of each interval
interval-duration: 600ms
# persist data to a file or store in memory
persistent: true
# file name where data will be persisted
filename: /tmp/reqcnt.dat
# flush data to a file time interval
persist-duration: 5s
See example-config.yaml
.
Request Counter
would not return correct values if config valuesinterval-count
orinterval-duration
were changed before restart.
- Add more unit and functional tests