Finagle is an extensible RPC system for the JVM, used to construct high-concurrency servers. Finagle implements uniform client and server APIs for several protocols, and is designed for high performance and concurrency. Most of Finagle’s code is protocol agnostic, simplifying the implementation of new protocols.
This documentation extends the Finagle Guide, fills the missing gaps and provides more examples.
This documentation contains an overview for various Finagle features and provides examples on how to use them. Finagles solves different problems and provides a lot of abstractions and helpers. We splitted the documentation in different topics for easier consumption.
The twitter utility library provides a bunch of helpers for standard problems, e.g
- App trait
- Flags ( commandline arguments )
The service discovery section explains the different options for announcing and disocvering services. Static and dynamic routing (Dtabs) is also part of this section.
Finagle provides implementations for the http, thrift, thrift mux, mysql, redis and memcached protocols. We added examples that explain how to implement a server and start a client for these protocols.
Contexts are a Finagle abstraction for implicitly passing request context information along with a request.
Here are some resources that are worth reading or watching to get a better undstanding of Finagle.
This post is based on my talk “Finagle: Under the Hood” that was presented at Scala Days NYC. I thought I’d publish this for those who prefer reading instead of watching (video is not yet published anyway). The full slide deck is available online as well.
Source: Finagle 101
Twitter Scala School
An introduction to Finagle.
Source: Twitter Scala School
A Beginners Guide for Twitter Finagle
Twitter Finagle is a great framework to write distributed applications in Scala or Java. This article is a “getting started” guide for a simple, distributed application.