An introduction to Apache Thrift - PowerPoint PPT Presentation

About This Presentation
Title:

An introduction to Apache Thrift

Description:

A short introduction to Apache Thrift, what is it and how does it work ? How can it help to define multi language client/server interfaces ? – PowerPoint PPT presentation

Number of Views:623
Slides: 13
Provided by: semtechs

less

Transcript and Presenter's Notes

Title: An introduction to Apache Thrift


1
Apache Thrift
  • What is it ?
  • Languages
  • Process
  • Architecture
  • Example

www.semtech-solutions.co.nz info_at_semtech-solutions
.co.nz
2
Apache Thrift What is it ?
  • A multi language software framework
  • For client / services development
  • It is scalable
  • Uses a compiler to generate source code
  • Released with Apache 2 License
  • Uses an IDL ( interface descripton language )?
  • Originally developed at Facebook

www.semtech-solutions.co.nz info_at_semtech-solutions
.co.nz
3
Apache Thrift Languages
  • Languages supported
  • C Cocoa
  • Java JavaScript
  • Python Node.js
  • PHP Smalltalk
  • Ruby OCaml
  • Erlang Delphi
  • Perl ..... and others
  • Haskell
  • C

www.semtech-solutions.co.nz info_at_semtech-solutions
.co.nz
4
Apache Thrift Process
  • So how do we start to create a Thrift based app ?
  • We define a Thrift file
  • Which includes our interface definition
  • Defines our Thrift types
  • Defines our services
  • Our clients will be able to call our services
  • We now use the Thrift compiler
  • thrift --gen ltlanguagegt ltThrift filegt
  • To generate our source code
  • Now we add our extra client / server functionality

www.semtech-solutions.co.nz info_at_semtech-solutions
.co.nz
5
Apache Thrift Service
www.semtech-solutions.co.nz info_at_semtech-solutions
.co.nz
6
Apache Thrift Where used ?
  • So who is using Thrift ?
  • Cassandra
  • Scribe
  • Hadoop Hbase
  • ThriftDB
  • Others .........

www.semtech-solutions.co.nz info_at_semtech-solutions
.co.nz
7
Apache Thrift Architecture
www.semtech-solutions.co.nz info_at_semtech-solutions
.co.nz
8
Apache Thrift Example (Java)?
  • Create Thrift interface file
  • time.thrift
  • namespace java tserver.gen
  • typedef i64 Timestamp
  • service TimeServer
  • Timestamp time()?
  • Compile to Java code
  • thrift --gen java time.thrift

www.semtech-solutions.co.nz info_at_semtech-solutions
.co.nz
9
Apache Thrift Example
  • Create interface in TimeServerImpl.java
  • package server
  • import org.apache.thrift.TException
  • import tserver.gen.
  • class TimeServerImpl implements TimeServer.Iface
  • _at_Override
  • public long time() throws TException
  • long time System.currentTimeMillis()
  • System.out.println("time() called "
    time)
  • return time

www.semtech-solutions.co.nz info_at_semtech-solutions
.co.nz
10
Apache Thrift Example Java Server
  • package server
  • import java.io.IOException
  • import org.apache.thrift.protocol.TBinaryProtocol
  • import org.apache.thrift.protocol.TBinaryProtocol.
    Factory
  • import org.apache.thrift.server.TServer
  • import org.apache.thrift.server.TThreadPoolServer
  • import org.apache.thrift.transport.TServerSocket
  • import org.apache.thrift.transport.TTransportExcep
    tion
  • import tserver.gen.TimeServer
  • public class Server
  • private void start()
  • try
  • TServerSocket serverTransport new
    TServerSocket(7911)
  • TimeServer.Processor processor new
    TimeServer.Processor(new TimeServerImpl())
  • Factory protFactory new
    TBinaryProtocol.Factory(true, true)
  • TServer server new TThreadPoolServer(pr
    ocessor, serverTransport, protFactory)
  • System.out.println("Starting server on
    port 7911 ...")
  • server.serve()
  • catch (TTransportException e)

www.semtech-solutions.co.nz info_at_semtech-solutions
.co.nz
11
Apache Thrift Example Java Client
  • package client
  • import java.net.SocketException
  • import org.apache.thrift.TException
  • import org.apache.thrift.protocol.TBinaryProtocol
  • import org.apache.thrift.protocol.TProtocol
  • import org.apache.thrift.transport.TSocket
  • import org.apache.thrift.transport.TTransport
  • import org.apache.thrift.transport.TTransportExcep
    tion
  • import tserver.gen.TimeServer.Client
  • public class TimeClient
  • private void start()
  • TTransport transport
  • try
  • transport new TSocket("localhost",
    7911)
  • TProtocol protocol new
    TBinaryProtocol(transport)Client client new
    Client(protocol)
  • transport.open()
  • long time client.time()
  • System.out.println("Time from server"
    time)
  • transport.close()

www.semtech-solutions.co.nz info_at_semtech-solutions
.co.nz
12
Contact Us
  • Feel free to contact us at
  • www.semtech-solutions.co.nz
  • info_at_semtech-solutions.co.nz
  • We offer IT project consultancy
  • We are happy to hear about your problems
  • You can just pay for those hours that you need
  • To solve your problems
Write a Comment
User Comments (0)
About PowerShow.com