Thrift 中的 Transport

Thrift 专栏收录该内容
7 篇文章 0 订阅

Thrift 中有 TTransportTServerTransport,封装了底层传输层的数据读写;分别用于客户端和服务端

TTransport

thrift-java-source-class-transport.png

方法

  • open

用于建立与 Server 端的连接

public abstract void open() throws TTransportException;
  • close

关闭连接

public abstract void close();
  • read

用于读取数据

public abstract int read(byte[] buf, int off, int len) throws TTransportException;
  • write

用于写入数据

public abstract void write(byte[] buf, int off, int len) throws TTransportException;
  • flush

清空缓冲区中的数据,发送给服务端

public void flush() throws TTransportException {
}

实现类

非封装的 Transport

  • TNonblockingTransport: 非阻塞的 Transport 的抽象类,底层使用 NIO
  • TNonblockingSocket: TNonblockingTransport 的实现类,基于 SocketChannel 的 Transport,是非阻塞的
  • TIOStreamTransport: 基于 IO 流的 Transport
  • TSocket: TIOStreamTransport 的子类,底层使用 Socket
  • TSimpleFileTransport:基于文件的 Transport,会将流写入文件或者从文件读取流
  • TFileTransport: 基于文件的 Transport,会将流写入文件或者从文件读取流
  • THttpClient:基于 HttpClientHttpURLConnection,会通过 HTTP 的方式发送请求,通常用于 TServlet 的服务端
  • ByteBuffer: 基于 ByteBuffer 的 Transport
  • TMemoryInputTransport:基于内存数组的 Transport,会从底层的数组读取,用于测试场景
  • TMemoryBuffer:使用内存数组作为缓冲区的 Transport,用于测试场景

封装的 Transport

  • TZlibTransport: 压缩的 Transport,会将流压缩后再发送
  • AutoExpandingBufferReadTransport: 可扩展读缓冲区的 Transport,使用可变数组作为缓冲区
  • AutoExpandingBufferWriteTransport: 可扩展写缓冲区的 Transport,使用可变数组作为缓冲区
  • TSaslTransport:支持 SASL(Simple Authentication and Security Layer) 认证的 Transport,有两个实现类,用于客户端的TSaslClientTransport 和用于服务端的 TSaslServerTransport
  • TFramedTransport:缓冲的 Transport,通过在前面带有4字节帧大小的消息来确保每次都完全读取消息
  • TFastFramedTransport: 复用并扩展了读写缓冲区的 Transport,避免每次都创建新的 byte 数组

TServerTransport

thrift-java-source-class-server-transport.png

方法

  • listen

监听指定的端口

public abstract void listen() throws TTransportException;
  • accept

用与接受连接

public final TTransport accept() throws TTransportException {
    TTransport transport = acceptImpl();
    if (transport == null) {
        throw new TTransportException("accept() may not return NULL");
    }
    return transport;
}
  • close

断开连接,停止监听端口,关闭服务

public abstract void close();

实现类

  • TNonblockingServerTransport:非阻塞服务端抽象类,提供了选择器的注册
  • TNonblockingServerSocketTNonblockingServerTransport的实现类,底层使用 NIO 的 ServerSocketChannel非阻塞 Transport
  • TServerSocket:使用 ServerSocket 的阻塞 Transport
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页

打赏

呜呜呜啦啦啦

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值