User manual

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

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