User manual
Table of contents
What is Armeria?
Armeria is your go-to microservice framework for any situation. You can build any type of microservice leveraging your favorite technologies, including gRPC, Thrift, Kotlin, Retrofit, Reactive Streams, Spring Boot and Dropwizard.
It is open-sourced by the creator of Netty and his colleagues at LY Corporation.
Want a quick tour?
Check out the recent introductory talk (slides):
Features
HTTP/2
- Supports HTTP/2 on both TLS and cleartext connections
- Supports protocol upgrade via both HTTP/2 connection preface and traditional HTTP/1 upgrade request
- Fully compatible with existing HTTP/1 servers
- Integrated PROXY protocol support for interoperability with load balancers such as HAProxy and AWS ELB.
Integration with gRPC and Thrift
- Your gRPC or Thrift service implementation runs on top of Armeria without any modification.
- Works with the official gRPC or Thrift-over-HTTP client
- Works with the code generated by the official Protobuf or Thrift IDL compiler
- Supports various protocol combinations, such as:
- gRPC-over-HTTP/1 & 2
- Thrift-over-HTTP/1 & 2
- gRPC-Web
- See Running a Thrift service and Running a gRPC service.
Essential features for building microservices
- Metrics
- Circuit breaker
- Client-side health-check and load-balancing
- Service discovery from various sources such as DNS and ZooKeeper
- Distributed call tracing via Zipkin
Interactive web-based debug console
- Browse the list of available RPC operations
- Invoke an RPC operation via a web form
- Share an RPC request with your colleagues so they can reproduce the problem easily
- Just like sharing a cURL command, but works for RPC
- See Browsing and invoking services with DocService.
Completely asynchronous and reactive
- Built on top of Reactive Streams and Java 8 CompletableFuture
- Asynchronous connection pool ensures your application never blocks even on pool exhaustion.
- Domain name lookups are also fully asynchronous thanks to Netty’s asynchronous domain name resolver.
Compatibility with existing Java EE web applications
- Runs any Java EE web applications such as Spring Boot on the same TCP/IP port
- Your Java EE web application speaks HTTP/2!
- See Embedding a servlet container.
Even higher performance on Linux
- JNI-based socket I/O
- BoringSSL-based TLS connections