Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/esotuvaka/lattice
Lattice is a configurable API Gateway. It features authentication via API Key, middleware, reverse proxying and health checks for upstream servers, caching, rate limiting, and more
https://github.com/esotuvaka/lattice
api api-gateway apis cache docker golang microservices proxy redis reverse-proxy
Last synced: about 2 months ago
JSON representation
Lattice is a configurable API Gateway. It features authentication via API Key, middleware, reverse proxying and health checks for upstream servers, caching, rate limiting, and more
- Host: GitHub
- URL: https://github.com/esotuvaka/lattice
- Owner: esotuvaka
- Created: 2024-11-27T23:50:07.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2024-12-05T05:08:40.000Z (about 2 months ago)
- Last Synced: 2024-12-05T05:19:48.897Z (about 2 months ago)
- Topics: api, api-gateway, apis, cache, docker, golang, microservices, proxy, redis, reverse-proxy
- Language: Go
- Homepage:
- Size: 37.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Lattice
A high-performance API Gateway written in Go that provides authentication, caching, rate limiting, and dynamic configuration management.
## Features
**Core Features**
- [ ] Dynamic route configuration via Redis
- [ ] JWT and API key authentication
- [ ] Response caching with Redis
- [ ] Distributed rate limiting
- [x] Reverse proxy to upstream services
- [x] Automatic retry
- [ ] Circuit breaking
- [ ] Load balancing**Observability**
- [ ] Prometheus metrics
- [ ] Grafana dashboards
- [x] Structured logging (zap)
- [ ] Distributed tracing
- [ ] Health checks**Security**
- [ ] JWT validation
- [ ] API key management
- [ ] Role-based access control
- [ ] TLS termination
- [ ] Request validation## Architecture
```mermaid
graph TD
Client[Client] --> Lattice[Lattice API Gateway]
Redis[(Redis)] --> Lattice
Lattice --> Redis[(Redis)]
Lattice --> Upstream1[Upstream 1]
Lattice --> Upstream2[Upstream 2]
Lattice --> UpstreamN[Upstream N]
Lattice --> Prometheus[Prometheus]
Prometheus --> Grafana[Grafana]
```