site/index.html (117 lines of code) (raw):

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <style type="text/css"> body { font-family: 'Georgia', serif; font-size: 17px; } .content { width: 530px; margin: 40px auto; } h1, h2, h3, h4, h5 { font-family: 'Garamond', 'Georgia', serif; font-weight: normal; color: #444; } blockquote { font-style: italic; color: #444; } ul { margin: 15px 0 15 px 0; list-style: none; line-height: 1.4; } ul li:before { content: '\2014\a0'; color: #888; position: absolute; margin-left: -16px; } </style> <title>Finagle</title> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-39101739-4', 'twitter.github.io'); ga('send', 'pageview'); </script> </head> <body> <a href="https://github.com/twitter/finagle"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_gray_6d6d6d.png" alt="Fork me on GitHub"></a> <div class="content"> <h1>Finagle</h1> <blockquote style="margin: 0;"> <p> 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. </p> <p> Finagle is written in Scala, but provides both Scala and Java idiomatic APIs. </p> </blockquote> <ul> <li><a href="https://github.com/twitter/finagle">GitHub project</a></li> <li><a href="guide">User’s guide</a></li> <li><a href="guide/#developer-s-guide">Developer's Guide</a></li> <li><a href="docs/com/twitter/finagle/">API documentation</a></li> <li><a href="https://gitter.im/twitter/finagle">Gitter channel</a></li> <li><a href="https://groups.google.com/forum/#!forum/finaglers">Google group</a></li> <li><a href="https://finagle.github.io/blog/">Blog</a></li> </ul> <h2>Contributing</h2> We feel that a welcoming community is important and we ask that you follow Twitter’s <a href="https://github.com/twitter/code-of-conduct/blob/master/code-of-conduct.md">Open Source Code of Conduct</a> in all interactions with the community. Finagle is actively maintained by Twitter’s infrastructure team, but we have <a href="https://github.com/twitter/finagle/graphs/contributors"> many external contributors</a> 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 <a href="https://groups.google.com/forum/#!forum/finaglers">Google groups</a> to receive feedback and suggestions. For all patches, please review our <a href="https://github.com/twitter/finagle/blob/develop/CONTRIBUTING.md">contributing docs</a>. <h2>Other resources</h2> <ul> <li><a href="https://blog.twitter.com/2011/finagle-a-protocol-agnostic-rpc-system"> Twitter engineering blog post</a> motivating and introducting Finagle</li> <li>Twitter’s <a href="https://twitter.github.io/scala_school/">Scala School</a> ends with an <a href="https://twitter.github.io/scala_school/finagle.html">introduction to Finagle</a>, and finally <a href="https://twitter.github.io/scala_school/searchbird.html">an example distributed system</a>.</li> <li>A <a href="https://days2011.scala-lang.org/node/138/286">talk introducing Finagle</a>, given by <a href="https://github.com/mariusae">Marius</a> at ScalaDays 2011</li> <li><a href="https://monkey.org/~marius/talks/twittersystems/#1">Slides</a> from another talk explaining the role of Finagle in Twitter’s distributed systems</li> <li>A <a href="https://blog.oskarsson.nu/post/40196324612/the-twitter-stack">blog post</a> explaining Twitter’s server stack, in which Finagle plays a central role</li> <li>Matt Ho’s <a href="https://youtu.be/30v5WVFvlno">NEScala talk</a> about Finagle</li> </ul> <h2>Companion Projects</h2> <blockquote>In no particular order...</blockquote> <ul> <li><a href="https://github.com/twitter/finatra">Finatra</a> - fast, testable, Scala services built on TwitterServer and Finagle</li> <li><a href="https://github.com/finagle/finch">Finch</a> - a pure functional wrapper around Finagle HTTP built with Shapeless and Cats</li> <li><a href="https://github.com/finagle/finagle-serial">Finagle Serial</a> - a Mux-powered, Finagle protocol over Scala's case classes with a serialization library of your choice</li> <li><a href="https://github.com/finagle/finagle-oauth2">Finagle OAuth2</a> - an OAuth2 server-side provider for Finagle</li> <li><a href="https://github.com/novus/unfinagled">Unfinagled</a> - a small library for using unfiltered as a Finagle frontend</li> <li><a href="https://github.com/finagle/finagle-postgres">Finagle Postgres</a> - Postgres protocol support for Finagle</li> <li><a href="https://github.com/finagle/finagle-irc">Finagle IRC</a> - an implementation of the IRC protocol on Finagle</li> <li><a href="https://github.com/finagle/finagle-websocket">WebSockets implementation for Finagle</a></li> <li><a href="https://github.com/evnm/fintop">Fintop</a> - a top-like utility for monitoring Finagle services</li> <li><a href="http://fintrospect.io/">Fintrospect</a> - adds an intelligent HTTP routing layer to Finagle. It provides a simple way to implement contracts for both server and client-side HTTP services</li> <li><a href="https://wvlet.org/airframe/docs/airframe-http.html">Airframe HTTP</a> - a library for building REST APIs over Finagle</li> </ul> </div> </body> </html>