thrift
YongApple
LINUX C++ golang thrift libevent
展开
-
windows下使用thrift编译+示例+详解解决坑
gmssl 编译x32版本1. perl Configure VC-WIN322. nmakex64版本1. perl Configure VC-WIN64A2. nmake Thrift 在windows下使用略坑!win7sp1 环境Thrift依赖环境很多,具体如下:1. libevent-2.0.21-stable.tar.gz2. ...原创 2017-07-04 12:50:53 · 2929 阅读 · 0 评论 -
ngrok使用/踩坑分析-tcp代理
上一个文章分析的是ngrok http代理编译、安装、配置。以及证书生成。1. ngrok server client 编译 安装 证书生成基本相同。2. tcp代理 跟http代理 客户端配置文件格式不太一样。remote_port 是指 ngrok server 端口proto 是指 要代理的协议,此处是 tcp ssh: remote_port: 1122 pr...原创 2018-11-01 14:27:32 · 2752 阅读 · 0 评论 -
ngrok使用/踩坑分析-http代理
研究了下 ngrok 的使用,坑还是挺多,随后再看看源码吧,看是否能做些修改和定制疑问1: 是否能支持 ecc 证书,目前用的脚本生成的自签RSA证书经过测试ngrok客户端+服务器支持 ecc证书。疑问2: 性能如何?需要分析源码,完善优化 好了,开始吧。1. 当前git上开源的代码版本,号称是1.0x版本,其实是2.1.7const ( Pro...原创 2018-10-26 12:26:41 · 7999 阅读 · 3 评论 -
centos 6.9 安装protobuffer2.6.1
0. 执行 [root@cf07b5394847 protobuf-2.6.1]# ./autogen.sh 会报错,提示 需要gtest1.5未安装1. 下载 https://github.com/google/googletest/tree/release-1.5.0 googletest-release-1.5.0.zip解压该之该zip文件,后,把解压后目录移...原创 2018-10-16 10:26:26 · 919 阅读 · 0 评论 -
Thrift解读(六)——客户端基本RPC逻辑
我们在Thrift声明的服务叫XXX,RPC调用的函数名叫YYY,而且不是oneway方法。Thrift会生成XXXClient类,这个类包括三个方法,YYY、send_YYY、recv_YYY。程序员会显示的声明一个XXXClient的对象c,然后调用c.YYY。c.YYY顺次调用c.send_YYY和c.recv_YYY。前者是发送函数名,和参数,后者是接收返回值。整个流程如下:1....转载 2018-10-08 18:31:58 · 404 阅读 · 0 评论 -
thrift解读(三)——TNonblockingServer 内的 IO线程 和 work线程之间数据流处理逻辑
一言概之 IO线程 负责跟客户端 通讯,IO线程读取一个完整的请求后,任务封装成(class TNonblockingServer::TConnection::Task)投递给work线程,work线程读取解析数据,处理业务逻辑完成后,把结果notify给IO线程,后者负责返回结果给客户端。TNonblockingServer内 N个IO thread、N个work thre...转载 2018-10-08 18:01:18 · 2560 阅读 · 0 评论 -
Thrift解读(二)——TNonblockingServer I/O线程
TNonblockingServer的I/O线程是TNonblockingIOThread对象。每个TNonblockingIOThread保存服务的server指针,同时记录监听的套接字。他并不是真正的pthread,所以线程号是额外指定的,在构造方法中指定。TNonblockingIOThread注册两类事件,一类是监听套接字,回调函数注册为TNonblockingIOThread::li...转载 2018-10-08 18:00:00 · 472 阅读 · 0 评论 -
Thrift解读(一)——TNonblockingServer Connection类/Connection::Task类分析
TNonBlockingServer,和他搭配的Transport选用TFrameTransport。该类包含几个辅助类。1. TNonblockingServer::TConnection::Task要注意,Thrift有很多类都包括Task类,这里提到的Task类是TConnection的内部类。Task是Server端处理业务逻辑的地方,他继承自Runnable,遵守类似Java的线...转载 2018-10-08 17:56:28 · 678 阅读 · 0 评论 -
Thrift解读(五)——server端RPC接收与返回值的回送
Thrift框架主要分为四层:Service,Protocol,Transport,Server。前述介绍的TNonBlockingServer就是一种Server,除此之外,还有很多别的Server,比TNonBlockingServer要简单的多,以后会简要介绍其中的一两个。Service由程序员自己编写,是实际的RPC调用体。还剩中间俩:Protocol是对函数调用的名称、参数、返回值的序列...转载 2018-10-08 17:52:30 · 2004 阅读 · 0 评论 -
thrift TNonblockingServer 内 iothread workthread 执行逻辑
文章内有借鉴别人,也有自己分析,权且当做转载吧,并不重要了thrift优点不再多说,说说个人理解的缺点:1. 如何判断TSocket IsOpen 是否断开?内部只是判断是否已经连接过,如果网络断开,只查看套接字是否有效无法判断连接状态。优化方法:增加个ping空接口,定时调用下,如果调用失败,自然就是断网2. select实现的线程通知机制现状:该函数内部实现不好...原创 2018-10-08 16:55:02 · 984 阅读 · 0 评论 -
thrift源码分析--transport类体系架构
transport类体系架构与TProtocol类体系架构一样,所以这里就不重复叙述了,想了解可转去TProtocol类体系架构分析那篇。 下面将对transport层的几种transport类进行介绍:1、TSocket 阻塞型socket, 用于客户端,采用系统函数read和write进行读写数据;2、TServerSocket 非阻塞型socket, 用于服务器端, accecp...转载 2018-10-08 13:09:05 · 838 阅读 · 0 评论 -
TBinaryProtocolT代码分析
TBinaryProtocolT是Thrift支持的默认二进制协议,(TCompactProtocol 和 TBinaryProtocol 的区别主要是, TCompactProtocol 对整数类型使用了 ZigZag 压缩算法,比如 i32 类型的整数本来是4个字节, 可以压缩成 1~5 字节不等。而 i64类型的整数本来是8个字节。可以压缩成 1~10 字节不等。)它以二进制的格式写所有的数...原创 2018-10-06 21:18:07 · 1090 阅读 · 0 评论 -
thrift序列化和反序列化
#include <thrift/protocol/TBinaryProtocol.h>#include <thrift/protocol/TJSONProtocol.h>#include <thrift/transport/TBufferTransports.h>#include "gen-cpp/student_types.h"using na...原创 2018-04-23 15:40:17 · 1349 阅读 · 0 评论 -
Thrift结构分析(时序图画的很棒,强烈推荐看懂!)及增加取客户端IP功能实现
获取客户端 IP 地址为取得客户端IP,有三个办法:1) thrift客户端跟nginx通讯,nginx处做一个upstream插件,该插件接收到thrift请求后,解析thrift请求,增加一个参数,该参数的tagid=32767, 自己拼接上客户端发来的ip地址,那么我们用插件新增一个参数,势必nginx使用thrift文件跟后端服务器使用同一个thrift文件,...转载 2017-09-21 19:13:20 · 1045 阅读 · 0 评论 -
Thrift之TProtocol类体系原理及源码详细解析之紧凑协议类TCompactProtocolT
这个协议类采用了zigzag 编码,这种编码是基于Variable-length quantity编码提出来的,因为Variable-length quantity编码对于负数的编码都需要很长的字节数,而zigzag 编码对于绝对值小的数字,无论正负都可以采用较少的字节来表示,充分利用了 Varint技术。所以这个协议类采用zigzag 编码可以节省传输空间,使数据的传输效率更高。至于zigzag转载 2017-09-26 14:52:07 · 598 阅读 · 0 评论 -
Thrift之TProtocol类体系原理及源码详细解析之JSon协议类TJSONProtocol
转载: http://www.xuebuyuan.com/299136.htmlJSON (JavaScript Object Notation)是一种数据交换格式,是以JavaScript为基础的数据表示语言,是在以下两种数据结构的基础上来定义基本的数据描述格式的:1) 含有名称/值对的集合;2) 一个有序的列表。对于 JSON,其部分数据结构的BNF 定义如下所示。形如{“name”:转载 2017-09-26 13:52:47 · 945 阅读 · 0 评论 -
tinyproxy使用分析
安装方式一:yum -y install tinyproxy / apt-get install tinyproxy方式二:1. 到github上下载源码2. 执行 autogen.sh && configure && make && make install 出现编译错误:*** a2x (asciidoc) is r...原创 2018-12-04 12:32:02 · 3721 阅读 · 0 评论