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.
ContributingWe feel that a welcoming community is important and we ask that you follow Twitter’s Open Source Code of Conduct in all interactions with the community. Finagle is actively maintained by Twitter’s infrastructure team, but we have many external contributors as well. The master branch represents the most recent published release while active development happens on the develop branch. Before endeavoring on large changes, please discuss them with the Google groups to receive feedback and suggestions. For all patches, please review our contributing docs.
- 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 explaining 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 services built on TwitterServer and Finagle
- Finch - a pure functional wrapper around Finagle HTTP built with Shapeless and Cats
- Finagle Serial - a Mux-powered, Finagle protocol over Scala's case classes with a serialization library of your choice
- Finagle OAuth2 - an OAuth2 server-side provider for Finagle
- Unfinagled - a small library for using unfiltered as a Finagle frontend
- Finagle Postgres - Postgres protocol support for Finagle
- Finagle IRC - an implementation of the IRC protocol on Finagle
- WebSockets implementation for Finagle
- Fintop - a top-like utility for monitoring Finagle services
- Fintrospect - adds an intelligent HTTP routing layer to Finagle. It provides a simple way to implement contracts for both server and client-side HTTP services