Skip to content
Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
113 lines (89 sloc) 4.29 KB

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:

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
  • Supports various protocol combinations, such as:
    • gRPC-over-HTTP/1 & 2
    • Thrift-over-HTTP/1 & 2
    • gRPC-Web
  • See :ref:`server-thrift` and :ref:`server-grpc`.

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 :ref:`server-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

Read more

.. 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>
You can’t perform that action at this time.