
thrift
赶路人儿
一个十年以上编程人员,擅长使用java、python、C++等语言,具有广告投放、个性化推荐引擎等超大规模系统开发经验。
展开
-
thrift-java序列化时的一些注意事项
假设我们有类似这样一个消息体:struct RecoRequest { 1:map<string,string> params, 2:string deviceId}一、对于普通基本类型:1、如果deviceId属性设置成required,该字段必填,传输时必然会序列化;1)客户端不设置,或者设置成客户端request.setDeviceId(null);,会报...原创 2019-02-28 21:08:54 · 2352 阅读 · 0 评论 -
thrift 异常:at org.apache.thrift.protocol.TBinaryProtocol.writeString(TBinaryProtocol.java:200)
线上使用thrift rpc是,发现客户端报错:Caused by: java.lang.NullPointerException at org.apache.thrift.protocol.TBinaryProtocol.writeString(TBinaryProtocol.java:200) at com.abc.test.recothrift.mode...原创 2019-01-16 23:55:55 · 2028 阅读 · 0 评论 -
Thrift java.net.SocketException: Broken pipe问题分析定位
在实际的thrift使用过程中,thrift客户端跟服务端通讯会有时爆出org.apache.thrift.transport.TTransportException: java.net.SocketException: Broken pipe异常,复现概率不高,很是困惑不知道是由什么原因引起的,在此记录一下分析和定位的过程,以备查看。环境:-centos 7 -jdk1.7 -thri...转载 2019-01-09 19:16:41 · 3161 阅读 · 0 评论 -
thrift java.io.IOException: Connection reset by peer引发的oom
server 退出前的异常log信息:[2015-06-20 10:45:56,713 WARN] Got an IOException in internalRead!java.io.IOException: Connection reset by peer at sun.nio.ch.FileDispatcherImpl.read0(Native Method) ...转载 2019-01-07 20:43:33 · 2536 阅读 · 0 评论 -
Read an invalid frame size of -2137128701. Are you using TFramedTransport on the client side?
线上系统使用thrift rpc框架, 突然有一天某个server挂了,查看错误日志发现如下错误信息:[05-26 16:53:51] [ERROR] [org.apache.thrift.server.AbstractNonblockingServer$FrameBuffer:348] Read an invalid frame size of -2137128701. Are you usin...原创 2018-06-06 10:29:32 · 2462 阅读 · 0 评论 -
记一次线上hystrix的事故
我们线上有个系统是有若干个服务组成,服务之间通过thrift rpc进行通信,在调用rpc服务的时候加了一层hystrix,目的是防止“雪崩”。这样的系统架构算是一个比较“中规中矩”的了,而且比较成熟。初期,系统很稳定没有发生过大的事故。随着线上流量增加,偶尔发生了几次hystrix熔断器打开后无法关闭的现象——hystrix熔断器打开的原因是由于rpc服务不稳定,但是当rpc服务稳定下来后,理论...原创 2018-06-05 23:06:37 · 1302 阅读 · 0 评论 -
本地windows上安装protobuf和thrit环境
我们I系统中如果引入了protobuf或者thrift框架,那么在开发是需要对其脚本进行编译,这时候就需要下载对应的编译软件。1、protobuf:1)proto2.5下载地址:https://github.com/google/protobuf/releases/tag/v2.5.02)下载后解压,在proto2.5文件夹中就只有一个proto.exe文件,配置好环境变量后即可(在p原创 2018-05-09 11:52:52 · 1181 阅读 · 0 评论 -
thrift服务化改造——注册、发现
系统服务化过程中会面临很多问题:服务注册、服务发现、服务降级、故障转移、负载均衡、流量控制等。本文介绍一种以thrift、zookeeper等技术实现的一套服务化框架,主要包含一下几点:1)利用zookeeper,实现服务端注册、客户端自动发现;(由于原生zookeeper的api比较负责,这里用了一个zk的框架curator)2)客户端对远程server的连接进行池化技术(使用java的转载 2017-12-19 18:58:01 · 5663 阅读 · 0 评论 -
java.util.NoSuchElementException
使用thrift rpc做开发,今天突然遇到一个问题:Exception in thread "main" java.util.NoSuchElementException: Could not create a validated object, cause: org.slf4j.helpers.MessageFormatter.format(Ljava/lang/String;Ljava/原创 2016-12-03 18:09:51 · 3648 阅读 · 0 评论 -
Thrift 的序列化机制
Thrift作为Facebook开源的RPC框架, 通过IDL中间语言, 并借助代码生成引擎生成各种主流语言的rpc框架服务端/客户端代码. 1、构造应用场景:1)首先我们先来定义下thrift的简单结构.namespace java mmxf.thrift;struct Pair { 1: required string key 2: required strin转载 2016-10-15 21:47:29 · 946 阅读 · 0 评论 -
thrift数据结构
要编写Thrift定义文件,肯定要熟悉Thrift常见的数据类型:1.基本类型(括号内为对应的Java类型):bool(boolean): 布尔类型(TRUE or FALSE)byte(byte): 8位带符号整数i16(short): 16位带符号整数i32(int): 32位带符号整数i64(long): 64位带符号整数double(double): 64位转载 2016-06-13 10:14:50 · 2625 阅读 · 0 评论 -
eclipse的thrift插件
1、Eclipse 上的安装步骤:1) 打开菜单:Help > Install New Software ...2) 点击“Add”按钮3) 在“Add Repository”窗口的“Location”输入:http://thrift4eclipse.sourceforge.net/updatesite/4) 点“OK”后,选中“Thrift Support”2、ecl原创 2016-05-28 23:06:25 · 2751 阅读 · 0 评论