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.

It is open-sourced and licensed under Apache License 2.0 by LINE Corporation, who uses it in production.

Want a quick tour?

Check out the introductory slides and case study.

Features

HTTP/2

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
  • Automatically upgrades to HTTP/2 when used with the Armeria client
  • 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 registration and discovery via ZooKeeper
  • Distributed call tracing via Zipkin

Interactive web-based debug console

  • Browse the list of available RPC operations
  • Invoke a RPC operation via a web form
  • Share a 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

Even higher performance on Linux

  • JNI-based socket I/O
  • BoringSSL-based TLS connections