In this blog we’ll use Finagle to build a very simple HTTP server that is also an HTTP client — an HTTP proxy.
So Let’s Begin With Some Introduction to the Finagle.
Finagle is an extensible Remote Procedure Call (RPC system) for the JVM, used to construct high-concurrency servers.
Twitter Finagle is a great framework to write distributed applications in Scala or Java. It is written in Scala, but provides both Scala and Java idiomatic APIs.
It implements uniform client and server APIs for several protocols, and is designed for high performance and concurrency.
Finagle uses a clean, simple, and safe concurrent programming model, based on Futures. This leads to safe and modular programs that are also simple to reason about.
Finagle provides a robust implementation of:
- connection pools, with throttling to avoid TCP connection churn;
- failure detectors, to identify slow or crashed hosts;
- failover strategies, to direct traffic away from unhealthy hosts;
- load-balancers, including “least-connections” and other strategies; and
- back-pressure techniques, to defend servers against abusive clients and dogpiling.