|
| 1 | +--- |
| 2 | +sidebar_position: 1 |
| 3 | +--- |
| 4 | + |
| 5 | +# User manual |
| 6 | + |
| 7 | +## What is Armeria? |
| 8 | + |
| 9 | +_Armeria_ is your go-to microservice framework for any situation. You can build any type of |
| 10 | +microservice leveraging your favorite technologies, including [gRPC](https://grpc.io/), |
| 11 | +[Thrift](https://thrift.apache.org/), [Kotlin](https://kotlinlang.org/), |
| 12 | +[Retrofit](https://square.github.io/retrofit/), [Reactive Streams](https://www.reactive-streams.org/), |
| 13 | +[Spring Boot](https://spring.io/projects/spring-boot) and [Dropwizard](https://www.dropwizard.io/). |
| 14 | + |
| 15 | +It is open-sourced by the creator of [Netty](https://netty.io/) and his colleagues at |
| 16 | +[LY Corporation](https://techblog.lycorp.co.jp/en). |
| 17 | + |
| 18 | +## Want a quick tour? |
| 19 | + |
| 20 | +Check out the recent introductory talk |
| 21 | +([slides](https://speakerdeck.com/trustin/armeria-a-microservice-framework-well-suited-everywhere)): |
| 22 | + |
| 23 | +<AspectRatio width={16} height={9} maxWidth="21rem"> |
| 24 | + <iframe |
| 25 | + src="https://www.youtube.com/embed/Vr-0GKUmzo8" |
| 26 | + style={{ border: 'none' }} |
| 27 | + allowfullscreen |
| 28 | + /> |
| 29 | +</AspectRatio> |
| 30 | + |
| 31 | +## Features |
| 32 | + |
| 33 | +### HTTP/2 |
| 34 | + |
| 35 | +- Supports HTTP/2 on both TLS and cleartext connections |
| 36 | +- Supports protocol upgrade via both HTTP/2 connection preface and traditional HTTP/1 upgrade request |
| 37 | +- Fully compatible with existing HTTP/1 servers |
| 38 | +- Integrated PROXY protocol support for interoperability with load balancers such as HAProxy and AWS ELB. |
| 39 | + |
| 40 | +### Integration with gRPC and Thrift |
| 41 | + |
| 42 | +- Your gRPC or Thrift service implementation runs on top of Armeria without any modification. |
| 43 | +- Works with the official gRPC or Thrift-over-HTTP client |
| 44 | +- Works with the code generated by the official Protobuf or Thrift IDL compiler |
| 45 | +- Supports various protocol combinations, such as: |
| 46 | + - gRPC-over-HTTP/1 & 2 |
| 47 | + - Thrift-over-HTTP/1 & 2 |
| 48 | + - gRPC-Web |
| 49 | +- See [Running a Thrift service](/docs/server-thrift) and [Running a gRPC service](/docs/server-grpc). |
| 50 | + |
| 51 | +### Essential features for building microservices |
| 52 | + |
| 53 | +- Metrics |
| 54 | +- Circuit breaker |
| 55 | +- Client-side health-check and load-balancing |
| 56 | +- Service discovery from various sources such as DNS and ZooKeeper |
| 57 | + - See [Client-side load balancing and service discovery](/docs/client-service-discovery). |
| 58 | +- Distributed call tracing via Zipkin |
| 59 | + |
| 60 | +### Interactive web-based debug console |
| 61 | + |
| 62 | +- Browse the list of available RPC operations |
| 63 | +- Invoke an RPC operation via a web form |
| 64 | +- Share an RPC request with your colleagues so they can reproduce the problem easily |
| 65 | + - Just like sharing a cURL command, but works for RPC |
| 66 | +- See [Browsing and invoking services with DocService](/docs/server-docservice). |
| 67 | + |
| 68 | +### Completely asynchronous and reactive |
| 69 | + |
| 70 | +- Built on top of Reactive Streams and Java 8 CompletableFuture |
| 71 | +- Asynchronous connection pool ensures your application never blocks even on pool exhaustion. |
| 72 | +- Domain name lookups are also fully asynchronous thanks to Netty’s asynchronous domain name resolver. |
| 73 | + |
| 74 | +### Compatibility with existing Java EE web applications |
| 75 | + |
| 76 | +- Runs any Java EE web applications such as Spring Boot on the same TCP/IP port |
| 77 | +- Your Java EE web application speaks HTTP/2! |
| 78 | +- See [Embedding a servlet container](/docs/server-servlet). |
| 79 | + |
| 80 | +### Even higher performance on Linux |
| 81 | + |
| 82 | +- JNI-based socket I/O |
| 83 | +- BoringSSL-based TLS connections |
0 commit comments