Thrift: Scalable Cross-Language Services Implementation
Tuesday, June 22, 2010 at 6:00AM |
Derek Stainer Often times there are difficult decisions to be made when developing multiple applications within an organization that are supposed to integrate with each other. Do you stick with a single language making it easier to recruit talent? What if the language is ill suited for the task at hand? On the other hand do you take the risk of implementing the applications in multiple languages? While the tasks may be better fits, you now have a more diverse knowledge base that must be shared to understand how everything fits together.
Well the folks at Facebook have made it clear what their decision is:
By and large, Facebook’s engineering culture has tended towards choosing the best tools and implementations available over standardizing on any one programming language and begrudgingly accepting its inherent limitations.
The decision has made communication between various network services a critical priority. So how does Facebook solve this problem? The Thrift protocol:
a language neutral software stack implemented across numerous programming languages and an associated code generation engine that transforms a simple interface and data definition language into client and server remote procedure call libraries.
So what does this have to do with NoSQL? Thrift serves as the protocol layer for Cassandra. Much like JSON is used for other NoSQL technologies. In the paper Mark Slee, Aditya Agarwal and Mark Kwiatkowski describe Thrift types, protocol, versioning, processors and implementation details.
At some point expect us to dive into the details of the paper in more depth as there is a lot to discuss.
Read More: Thrift: Scalable Cross-Language Services Implementation

