From adf3e7f0c6127967ab546b8a460131c07de84b2d Mon Sep 17 00:00:00 2001 From: Aditya Agarwal Date: Sat, 31 Mar 2007 16:56:14 +0000 Subject: [PATCH] -- added a facebook services section to the thrift paper Reviewed By: slee git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665072 13f79535-47bb-0310-9956-ffa450edef68 --- doc/thrift.pdf | Bin 69494 -> 71135 bytes doc/thrift.tex | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/doc/thrift.pdf b/doc/thrift.pdf index d41810291cca92f22718c3a585d2fe15ca46c940..414b51cfc8c7e824de2b98950c27c67a6af601ec 100644 GIT binary patch delta 30903 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
    sjF^+OP(7PC-&0Htc~ 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

    p)3l-i1*S-ODy0^wPq$1{TLJ1)Ql#Yz>XodE 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 r;Q!0wclg=8Ydda delta 29244 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

    a5r{i}`f3b>BH!bt;l=wKFn?Qe59|>ASYs=9UGx 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 XAkO3%d{}Wb9uNeAN=GN5Ac^{45J3{@ diff --git a/doc/thrift.tex b/doc/thrift.tex index 607901d6..c00695f1 100644 --- a/doc/thrift.tex +++ b/doc/thrift.tex @@ -818,6 +818,26 @@ first byte of the message is aligned to the beginning of the new chunk. Partitioning the file into chunks makes it possible to read and interpret data from a particular point in the file. +\section{Facebook thrift-based services} +Thrift has been employed in a large number of applications at Facebook, including +search, logging, mobile, ads and platform. Two specific usages are discussed below. + +\subsection{Search} +Thrift is used as the underlying protocol and transport for the Facebook seach service. +The multi-language code generation is well suited for search because it allows application +development in an efficient server side language (C++) and allows the Facebook PHP-based web application +to make calls to the search service using Thrift PHP libraries. There is also a large +variety of search stats, deployment and testing functionality that is built on top +of the generated python code. In addition to this, the Thrift logfile format is +used as a redolog for providing real-time search index updates. Thrift has allowed the +search team to leverage each language for its strengths and to develop code at a rapid pace. + +\subsection{Logging} +The Thrift \texttt{TFileTransport} functionality is used for structured logging. Each +service function definition along with its parameters can be considered to be +a structured log entry identified by the function name. This log can then be used for +a variety of purposes, including inline and offline processing, stats aggregation and as a redolog. + \section{Conclusions} Thrift has enabled Facebook to build scalable backend services efficiently by enabling engineers to divide and conquer. Application -- 2.17.1