Finagle Under the Hood
summary
Finagle is an extensible JVM RPC library used in production since 2010 with ~4.5k GitHub stars and 15+ protocols including Max multiplexing; it maps servers to functions and composes middleware stacks that end in a Netty pipeline. Clients implement retries with a retry budget and jittered backoffs, connection pooling (disabled for Max), circuit breakers (failure accrual and success‑rate policies), and advanced load balancing like P2C and EWMA load metric; an experimental aperture window reduces connections for very large replica sets. Servers remain minimal, providing tracing, metrics, timeouts and concurrency limits.
AI-written summary · about
chapters (19)
- 0:00Intro
- 2:36Finagle: Status
- 4:37Finagle: @Twitter
- 6:22Your Server as a Function
- 9:58Configuring Servers and Clients
- 11:38What does the server do?
- 12:08Server: Concurrency Limit
- 15:12Server and Client: Request Timeout
- 15:58What does the client do?
- 22:15Client: Response Classification
- 23:05Client: Retries
- 24:55Client: Retry Budget
- 25:42Client: Retry Backoff
- 27:26Client: Timeouts
- 31:43EWMA (Exp Weighted Moving Avg)
- 36:26Client: Load Balancing via Aperture
- 37:48Client: Circuit Breaking
- 39:39Client: Failure Accrual
- 40:59What else?
related talks
52mFinagle: Twitter's RPC library
36mHighly Concurrent Services with Finagle & Clojure
43mFinagle for Beginners
49mScaling Reliability: So You Want to Add a 9
04mFeynman Liang Interview
52mFast but not Loose: Typesafe Clients in a Distributed Service Architecture
38mExpanding Fineract capabilities, a practical example
20mUnifying gRPC APIs under One Roof: Mastering gRPC Federation for Efficient BFFs
