- Used fasthtp, zap - libraries which focused on performance, less allocations
- HTTP and WS proxying
- Removing backends if they are down
- Round robin backend resolver
- Retries for non-200 return code
- For http retries to one backend
- For WS reviving WS channel if it's down
- Duplicating calls to another list of backends for
eth_call
method request - Prometheus + Grafana metrics
- Chainstack console-like dashboard
- Measure performance well
- I tried, but my old laptop shows RPS for clean FastHTTP like 2-3k RPS (but it can be 60k-200k rps easy)
- And my reverse-proxy shows 2-2.5k RPS on my laptop, but if i did everything fine - proxy have to show RPS close to clean FastHTTP
- Retries with changing backend if non-200 return code
- ETCD with realtime updating list of backends
- Even cleaner code (code would be better if I got at least one review)
- More tests - controllers, clients
- Rename example config to
config.json
docker-compose up
localhost:8080 -> log: admin
pass: admin