RPC-Thrift简短实例

作者: 老生住长亭 | 来源:发表于2018-03-30 20:56 被阅读20次
  1. Thrift 需要实体类作用介绍
    TSimpleServer – 简单的单线程服务模型,常用于测试
    TThreadedServer – 多线程服务模型,使用阻塞式IO,每个请求创建一个线程。(java 不支持)
    TThreadPoolServer – 多线程服务模型,使用标准的阻塞式IO,预先创建一组线程处理请求。
    TThreadedSelectorServer 允许你用多个线程来处理网络I/O。它维护了两个线程池,一个用来处理网络I/O,另一个用来进行请求的处理
    TNonblockingServer – 多线程服务模型,使用非阻塞式IO(需使用TFramedTransport数据传输方式),只有一个线程来处理消息
    THsHaServer - 半同步半异步的服务模型,一个单独的线程用来处理网络I/O,一个worker线程池用来进行消息的处理

2.程序的开篇鼻祖Helloword实例

2.1 Thrift 定义文件:
namespace java com.interfaces
service Hello {
string say(1:string param)
}

2.2 执行命令,生成Hello接口文件:

thrift -out ~/studyproject/rpc-thrift/src/main/java/ -gen java Hello.thrift

2.3 实现Hello接口:

Impl:
package com.example;

import org.apache.thrift.TException;

/**

  • Created by botter on 10/6/16.
    */
    public class HelloServiceImpl implements Hello.Iface {
    @Override
    public String say(String param) throws TException {
    return "hello " + param;
    }
    }

2.4 Server端代码:

import com.example.Hello;
import com.example.HelloServiceImpl;
import org.apache.thrift.TProcessor;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TServerTransport;
import org.apache.thrift.transport.TTransportException;

/**

  • Created by botter on 10/6/16.
    */
    public class Server {

    public static void main(String[] args) {

     try {
         TServerTransport tServerSocket = new TServerSocket(9000);
    
         TServer.Args args1 = new TServer.Args(tServerSocket);
    
         TProcessor tProcessor = new Hello.Processor(new HelloServiceImpl());
    
         TServer tServer = new TSimpleServer(args1.processor(tProcessor));
    
         tServer.serve();
     } catch (TTransportException e) {
         e.printStackTrace();
     }
    

    }
    }

2.5 Client端代码:
import com.example.Hello;
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.TTransportException;

/**

  • Created by botter on 10/6/16.
    */
    public class Client {

    public static void main(String[] args) {
    TTransport tTransport = new TSocket("localhost", 9000);
    try {
    tTransport.open();
    TProtocol tProtocol = new TBinaryProtocol(tTransport);
    Hello.Client client = new Hello.Client(tProtocol);
    String foo = client.say("TOM");
    System.out.println("return :" + foo);
    tTransport.close();
    } catch (TTransportException e) {
    e.printStackTrace();
    } catch (TException e) {
    e.printStackTrace();
    }
    }
    }

相关文章

  • RPC-Thrift简短实例

    Thrift 需要实体类作用介绍TSimpleServer – 简单的单线程服务模型,常用于测试TThreade...

  • RPC-Thrift协议

    一、序列化协议 Thrift可以让你选择客户端与服务端之间传输通信协议的类别,在传输协议上总体上划分为文本(...

  • 58-caret包应用简短实例

    Caret包(即Classification And REgression Training的缩写),包含简化复杂...

  • 再识RPC-thrift

    RPC 原理 什么是Stub? Stub是一段代码,用来转换RPC过程中传递的参数。处理内容包括不同OS之间的大小...

  • JS原型链

    最简短精炼的JS原型链介绍:1.所有函数的__ proto__都是Function.prototype2.所有实例...

  • 简短

    一生,简短。

  • 简短

    拥有了不想再失去,失去了不想再后悔,后悔了不想再挽回。人生短短数十载,珍惜所有。 试问情为何物,只愿长相思守。 思...

  • 简短

    最近在读思想录 本以为是本很难啃的书 因为发现有一千多页 然而这本书却无比可爱 只有一段一页 长短不一 简洁明了 ...

  • 简短

    夏天就是有让人什么事都没做也倦意满满的本事。热气把身体里的劲儿都抽走了,浑身跟服了软骨散一般一躺就不想再起。

  • 简短

    今天回爱人乡下老家。一路开车都在想着公司的事情。这两天与先生聊过后顿觉自己的缺板。整理思路再出发。

网友评论

本文标题:RPC-Thrift简短实例

本文链接:https://www.haomeiwen.com/subject/vqcwcftx.html