
thrift
文章平均质量分 67
N3verL4nd
中年老男人~
展开
-
TThreadedSelectorServer解析
protected class AcceptThread extends Thread {// 封装了 ServerSocket ServerSocketChannel private final TNonblockingServerTransport serverTransport;// IO 多路复用选择器private final Selector acceptSelector; // SelectorTread 负载均衡器private final SelectorThreadLoadB原创 2022-03-23 17:06:03 · 745 阅读 · 0 评论 -
thrift-TServer解析
版本 0.8.0public abstract class TServer { // 执行器工厂,在创建服务器的时候,我们需要一个 TProcessorFactory 的参数,即会赋给该变量,在收到请求时,通过该变量来执行业务逻辑 protected TProcessorFactory processorFactory_; // 监听端口,接收请求,底层使用 ServerSocket protected TServerTransport serverTransport_; // 底原创 2020-11-19 15:06:25 · 900 阅读 · 0 评论 -
一个 0 引发的血案
本想起 一个 0 引发的血案 ,本着无事不调侃的性取向,索性改为一个馒头引发的血案。原创 2020-04-08 21:49:27 · 699 阅读 · 0 评论 -
Thrift 调用分析
Thrift 定义文件model.thriftnamespace java com.meituan.modelstruct Request { 1: required i32 age; 2: required string name;}struct Response { 1: required i16 code; 2: ...原创 2020-04-05 12:01:02 · 720 阅读 · 0 评论 -
使用 thrift 遇到的一个 bug
org.apache.thrift.protocol.TProtocolException: Required field 'statusCode' was not found in serialized data! Struct: com.meituan.itc.udm.mustang.thrift.JudgeResponse$JudgeResponseStandardScheme@689774...原创 2020-04-03 10:31:24 · 2347 阅读 · 0 评论 -
Thrift 生成文件解析
thrift 文件namespace java com.meituan.modelstruct Pair { 1: required string key; 2: required string value; 3: required i16 test1; 4: optional i32 test2; 5: opt...原创 2020-04-03 10:27:54 · 1722 阅读 · 0 评论 -
thrift-TSimpleJSONProtocol
Thrift JSON 序列化实现,只写操作。JSON 的弊端就是没有类型信息,如对于一个整数,无法区分 short,int,long,double等。 @Test public void test4() throws IOException, TException { Person person = new Person(); person.setN...原创 2020-04-03 10:24:21 · 666 阅读 · 0 评论 -
thrift-编解码流程
Thrift protocol 层需要进行 4 次编解码操作:客户端对请求进行编码,服务端对请求进行解码服务端对响应进行编码,客户端对响应进行解码helloservice.thriftnamespace java com.meituan.serviceinclude "model.thrift"service HelloService { model.R...原创 2020-04-03 10:21:58 · 875 阅读 · 4 评论 -
thrift-TBinaryProtocol
TBinaryProtocol 工厂类。 public static class Factory implements TProtocolFactory { protected long stringLengthLimit_; protected long containerLengthLimit_; protected boolean strictRead_; ...原创 2020-04-03 10:14:08 · 841 阅读 · 0 评论 -
thrift-protocol
// Thrift 消息类型public final class TMessageType { public static final byte CALL = 1; // 调用远程方法,并且期待对方发送响应 public static final byte ONEWAY = 4; // 调用远程方法,不期待响应。即没有步骤3,4 public static final by...原创 2020-04-03 09:50:21 · 682 阅读 · 0 评论 -
IDL 生成文件
IDL 生成文件在 thrift 栈中的位置。对于如下的 thrift :namespace java com.meituan.serviceservice HelloService{ string sayHello(1:string username)}生成:// thrift 0.8.0public class HelloService { public ...原创 2020-04-03 09:39:58 · 1340 阅读 · 0 评论 -
thrift-transport
org.apache.thrift.transport.TTransport传输组件抽象描述。public abstract class TTransport implements Closeable { public abstract boolean isOpen(); public boolean peek() { return isOpen(); } public ab...原创 2020-03-05 22:52:46 · 1247 阅读 · 0 评论 -
thrift-processor
TProcessor 是服务调用组件。负责从 TProtocol 输入流读取消息,写入到 TProtocol 输出流。TProcessorpublic interface TProcessor { public boolean process(TProtocol in, TProtocol out) throws TException;}TBaseProcessorTB...原创 2020-03-05 22:51:55 · 960 阅读 · 0 评论 -
RPC 学习笔记
RPCRPC(Remote Procedure Call) 是一种进程间通信方式。它允许程序调用另一个地址空间的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的,本质上编写的调用代码基本相同。现有的 RPC 实现基本都是由以下五部分组成:UserUser-stubRPCRuntimeServer-stubServer这里 user 就是 cli...原创 2019-03-30 11:52:59 · 542 阅读 · 3 评论 -
抓包 thrift 消息
helloservice.thriftnamespace java com.meituan.serviceinclude "model.thrift"service HelloService { model.Response sayHello(1: model.Request req)}model.thriftnamespace java com.meituan.mo...原创 2020-02-18 23:33:26 · 1044 阅读 · 0 评论 -
Thrift0.8当接口返回类型i16/i32/i64/bool时,客户端无法捕获服务端抛出的异常
测试代码:namespace java com.meituan.serviceexception BugTestException{ 1: required i32 code; 2: required string msg;}service HelloService { i32 bugCall() throws (1: BugTestException e);...原创 2020-02-18 23:24:32 · 828 阅读 · 1 评论