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. Finagle is written in Scala, but provides both Scala and Java idiomatic APIs.
ContributingFinagle is actively maintained by Twitter’s infrastructure team, but we have many external contributors as well. Before endeavoring on large changes, please discuss them with the Google groups to receive feedback and suggestions.
- Twitter engineering blog post motivating and introducting Finagle
- Twitter’s Scala School ends with an introduction to Finagle, and finally an example distributed system.
- A talk introducing Finagle, given by Marius at ScalaDays 2011
- Slides from another talk explaining the role of Finagle in Twitter’s distributed systems
- A blog post explaning Twitter’s server stack, in which Finagle plays a central role
- Matt Ho’s NEScala talk about Finagle
In no particular order...
- Finatra: fast, testable, Scala HTTP services built on Twitter-Server and Finagle
- A small library for using unfiltered as a finagle frontend
- Postgres protocol support for finagle
- An implementation of the IRC protocol on finagle
- WebSockets implementation for Finagle
- A top-like utility for monitoring Finagle services