Welcome to Armeria
Armeria is an open-source asynchronous HTTP/2 RPC/REST client/server library built on top of Java 8, Netty, Thrift and gRPC. Its primary goal is to help engineers build high-performance asynchronous microservices that use HTTP/2 as a session layer protocol.
Want a quick tour?
Check out the introductory slides:
- 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
- See :ref:`server-thrift` and :ref:`server-grpc`.
Essential features for building microservices
- 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 :ref:`server-docservice`.
Completely asynchronous and reactive
- Built on top of Reactive Streams and Java 8
- 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 :ref:`server-servlet`.
Even higher performance on Linux
- JNI-based socket I/O
- BoringSSL-based TLS connections
.. toctree:: :maxdepth: 2 setup server client advanced Release notes <https://github.com/line/armeria/releases> API documentation <apidocs/index.html#://> Source cross-reference <xref/index.html#://> Questions and answers <https://github.com/line/armeria/issues?q=label%3Aquestion> Fork me at GitHub <https://github.com/line/armeria> Contributing <https://github.com/line/armeria/blob/master/CONTRIBUTING.md>