Finagle

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.

Content

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.

Finagle Util

The twitter utility library provides a bunch of helpers for standard problems, e.g

  • App trait
  • Logging
  • Flags ( commandline arguments )
  • Metrics

Service Discovery

The service discovery section explains the different options for announcing and disocvering services. Static and dynamic routing (Dtabs) is also part of this section.

Protocols

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

Contexts are a Finagle abstraction for implicitly passing request context information along with a request.

Posts

Here are some resources that are worth reading or watching to get a better undstanding of Finagle.

Finagle 101

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.

Source: A Beginners Guide for Twitter Finagle

Videos

Finagle Under the Hood

Finagle for Beginners

Building high performance servers with Twitter

Scala

Finagle is written in Scala

Finagle

Finagle is a framework to build resilient and scalable microservices

Thrift

Thrift is binary protocol for RPC