All the services developed on top of Light-4J frameworks support client side service discovery, load balance, and cluster natively. So there is no need to put a reverse proxy instance in front of our services like other API frameworks that support only server side service discovery.
Light services also embed a distributed gateway to address all the cross-cutting concerns in the request/response chain and work with the ecosystem that consists:
- light-oauth2 for security
- light-portal for API management and marketplace
- light-config-server for centralized configuration management
- light-kafka for eventual consistency based on event sourcing, CQRS and Kafka
- ELK for centralized logging with traceabilityId and correlationId
- Prometheus, InfluxDB and Grafana for metrics
- OpenTracing with Jaeger tracer for distributed tracing and observability
- Light-Controller as part of the light-portal or Consul for service registry
- Kubernetes for container orchestration
Currently, we only support Java; however, we are planning to support Nodejs, Rust, and Go in the future if there is enough customer demand. Some of our customers have some existing RESTful APIs built on top of other Java frameworks or other languages. We have frequently been asked how to interact with these services to/from light services and enable security, metrics, logging, tracing, discovery, validation, sanitization, etc. on the existing services.
Our answer is to deploy a reverse proxy built on top of the light-4j framework that wraps the existing service.
The reverse proxy has the following features:
- High throughput, low latency, and small footprint.
- Integrates light-oauth2 to protect un-secured services
- Built-in load balancer with multiple data centers and clouds support
- Can be started with Docker or standalone
- Supports HTTP 2.0 protocol on both in/out connections
- TLS termination
- Allows adding other handlers—for example, TableauAuthHandler.
- Supports REST, GraphQL and RPC style of APIs
- Centralized logging with ELK, TraceabilityId, and CorrelationId
- OpenTracing with Jaeger tracer integration
- Collects client and service metrics into InfluxDB or Prometheus and view the dashboard on Grafana
- Service registry and discovery with Portal Registry or Consul
- Manages configuration with light-config-server
To learn how to use this proxy, please refer to
- Getting Started to learn core concepts
- Tutorial with step by step guide for RESTful proxy
- Artifact find release artifacts and deploy options
- Configuration for different configurations based on your situations
- Body Validation skip the body validation on the proxy for better performance
- TableauAuthHandler to handle authentication and get token for Tableau server
- Proxy as a Sidecar to handle the cross-cutting concerns at network level
- Proxy Benchmark to give confidence for users to leverage the proxy for maximum throughput