thrift read tcp xxx->xxx i/o timeout()

本文记录了一次A模块通过Thrift调用B、B再调用C时遇到的问题:由于分支协议差异,字段名和序号不一致导致B到C的请求失败,引发B到A的timeout错误。作者对这种技术细节进行了深入剖析。

记录一下踩过的坑
有三个模块A,B,C. A通过thrift去调用B,B通过thrift调用C,B对A请求的内容不做任何修改,但是有个问题,A调用B,和B调C用的是thrift不同的分支,也就是两个协议会有一点差异,这时候如果A->B请求的字段名以及字段名的序号和B->C不同的话,调用就会出现thrift read tcp xxx->xxx i/o timeout。。。
很好奇为什么会报timeout,哪怕提示个参数不对,也不至于这问题搞两天。。。。。。。

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>hy-ifs</artifactId> <groupId>com.hy.ifs</groupId> <version>9.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>ifs-data</artifactId> <repositories> <!-- Cloudera仓库:用于获取CDH版本依赖 --> <repository> <id>cloudera</id> <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <dependencies> <!-- 项目内部依赖 --> <dependency> <groupId>com.hy.base</groupId> <artifactId>hy-common</artifactId> <version>9.0-SNAPSHOT</version> </dependency> <!-- 第三方工具依赖 --> <dependency> <groupId>com.monitorjbl</groupId> <artifactId>xlsx-streamer</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> </dependency> <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.55</version> </dependency> <!-- Nacos相关依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>${nacos.version}</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>${nacos.version}</version> </dependency> <!-- Spring Boot相关依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> <version>2.1.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- POI相关依赖 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> <!-- 其他业务依赖 --> <dependency> <groupId>com.kingee.sso</groupId> <artifactId>kingee-sso</artifactId> <version>1</version> </dependency> <dependency> <groupId>com.bip</groupId> <artifactId>bip-api</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>com.kingdell.hr</groupId> <artifactId>kingdell-hr</artifactId> <version>1</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-annotation</artifactId> <version>4.1.0</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>4.1.0</version> <exclusions> <exclusion> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </exclusion> </exclusions> </dependency> <!-- HDFS客户端(CDH 6.3.2) --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-hdfs</artifactId> <version>3.0.0-cdh6.3.2</version> <classifier>cdh6.3.2</classifier> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>3.0.0-cdh6.3.2</version> <classifier>cdh6.3.2</classifier> </dependency> <!-- Hive相关依赖(CDH 6.3.2) --> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>2.1.1-cdh6.3.2</version> <classifier>cdh6.3.2</classifier> <exclusions> <!-- 排除日志冲突依赖 --> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-reload4j</artifactId> </exclusion> <exclusion> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-service</artifactId> <version>2.1.1-cdh6.3.2</version> <classifier>cdh6.3.2</classifier> <exclusions> <!-- 排除日志冲突依赖 --> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-reload4j</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-service-rpc</artifactId> <version>2.1.1-cdh6.3.2</version> <classifier>cdh6.3.2</classifier> </dependency> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-common</artifactId> <version>2.1.1-cdh6.3.2</version> <classifier>cdh6.3.2</classifier> </dependency> <!-- Thrift依赖(与CDH 6.3.2兼容) --> <dependency> <groupId>org.apache.thrift</groupId> <artifactId>libthrift</artifactId> <version>0.9.3</version> </dependency> <!-- HBase客户端(CDH 6.3.2) --> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>2.1.0-cdh6.3.2</version> <classifier>cdh6.3.2</classifier> </dependency> </dependencies> </project> 未解析的依赖项: 'org.apache.hive:hive-service:jar:2.1.1-cdh6.3.2' 未解析的依赖项: 'org.apache.hive:hive-service-rpc:jar:2.1.1-cdh6.3.2' 未解析的依赖项: 'org.apache.hive:hive-common:jar:2.1.1-cdh6.3.2'
最新发布
09-10
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值