thrift rpc框架入门

原创 2016年05月30日 14:38:29

thrift 入门

  1. 下载thrift:wget http://ftp.kddilabs.jp/infosystems/apache/thrift/0.9.3/thrift-0.9.3.tar.gz
  2. 解压:tar -zxvf thrift-0.9.3.tar.gz
  3. 安装: ./configure && make && make install
  4. 编写thrift文件:
    (dto.thrift)
namespace java com.terry.thrift.dto
struct Person {
    1: string username,
    2: string password
}

(service.thrift)

namespace java  com.terry.thrift.service
include "dto.thrift"
service PersonService {
    dto.Person get(1:string username)
}

4.1 编译thrift文件:

thrift -gen java dto.thrift 
thrift -gen java service.thrift 

4.2 把生成的文件导入工程

  1. 服务实现:
public class PersonServiceImpl implements PersonService.Iface {

    @Override
    public Person get(String username) throws TException {
        System.out.println("client param: " + username);
        Person p = new Person();
        p.setPassword("password");
        p.setUsername("username");
        return p;
    }
}
  1. 服务启动测试:
public class ThriftServer {

    private static PersonService.Iface service;
    private static PersonService.Processor process;

    public static void main(String[] args) {
        service = new PersonServiceImpl();
        process = new PersonService.Processor(service);
        Runnable simple = new Runnable() {
            public void run() {
                simple(process);
            }
        };
        new Thread(simple).start();
    }
    public static void simple(PersonService.Processor processor) {
        try {
            TServerTransport serverTransport = new TServerSocket(9090);
            TServer server = new TSimpleServer(new Args(serverTransport).processor(processor));
            System.out.println("Starting the simple server...");
            server.serve();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  1. 客户端测试:
public class ThriftClient {

    public static void main(String[] args) throws Exception{
        TTransport transport = new TSocket("localhost", 9090);
        transport.open();
        TProtocol p = new TBinaryProtocol(transport);
        PersonService.Client client = new PersonService.Client(p);
        Person person = client.get("name");
        System.out.println(person);

    }
}

相关文章推荐

RPC 基本原理与 Apach Thrift 初体验

概述RPC(Remote Procedure Call,远程过程调用)是一个计算机通信协议,此协议允许进程间通信。简单来说,当机器 A 上的进程调用机器 B 上的进程时,A 上的调用进程被挂起,而 B...
  • lihao21
  • lihao21
  • 2017年02月07日 14:19
  • 1281

RPC框架-Thrift的使用

Apache ThriftThrift 是一种接口描述语言,通过二进制通信协议为多种编程语言定义和创建服务。Thrift是一种可扩展的跨语言服务的RPC框架,由Facebook开发并且开源。应用安装M...
  • rlanffy
  • rlanffy
  • 2016年07月10日 19:57
  • 884

分布式RPC框架性能大比拼 dubbo、motan、rpcx、gRPC、thrift的性能比较

分布式RPC框架性能大比拼 dubbo、motan、rpcx、gRPC、thrift的性能比较 Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现...

服务化实战之 dubbo、dubbox、motan、thrift、grpc等RPC框架比较及选型

概述前段时间项目要做服务化,所以我比较了现在流行的几大RPC框架的优缺点以及使用场景,最终结合本身项目的实际情况选择了使用dubbox作为rpc基础服务框架。下面就简单介绍一下RPC框架技术选型的过程...
  • fgyibupi
  • fgyibupi
  • 2017年01月23日 11:08
  • 19925

开源RPC(gRPC/Thrift)框架性能评测

海量互联网业务系统只能依赖分布式架构来解决,而分布式开发的基石则是RPC;本文主要针对两个开源的RPC框架(gRPC、 Apache Thrift),以及配合GoLang、C++两个开发语言进行性能对...

RPC 工具--Thrift 框架 (一)

RPC 工具 ThriftRPC(Remote Procedure Call——远程过程调用)最近的项目用到的Thrift 框架, 在网络上零零散散找到一些资料,在这里总结归纳下。Thrift是一个...

回顾:Thrift RPC框架介绍

u 简介 Thrift是一种开源的跨语言的RPC服务框架。Thrift最初由facebook公司开发的,在2007年facebook将其提交apache基金会开源了。对于当时的facebook来说创...

VIP_OSP--基于Thrift的RPC框架的基本原理

公司(VIP)从2015年开始在内部推动Venus框架的使用,这是一款基于Apache Thrift远程调用框架二次开发的高性能、高可扩展的、服务治理的RPC框架。服务端使用IDL进行服务的定义,客户...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:thrift rpc框架入门
举报原因:
原因补充:

(最多只允许输入30个字)