手记

thrift 服务代理搭建

thrift 服务代理搭建

tcp代理对多种协议测试

  • 代理测试thrift推荐
  • 代理测试redis 推荐
  • 代理测试websocket 不推荐
  • 代理测试http/https不推荐

其实不建议使用 tcp 进行代理,因为太简单了

tcp代理特点

  • 流式数据及无状态数据(没有 header/ cookie)推荐使用
  • 对服务管控制比较少,只能做流量控制请求来源限制
  • 如果有对应协议代理推荐使用对应协议代理 ‘http/websocket’

tcp代理测试thrift

  • thrift安装参考: thrift.apache.org/docs/install/
  • thrift介绍
    • Facebook的一个开源项目,后来进入Apache进行孵化
    • Thrift也是支持跨语言的,所以它有自己的一套IDL
    • Thrift的网络协议建立在TCP协议基础上
    • 目前主要功能是支持rpc方法调用
  • 构建thrift测试server与client
  • 代理测试

构建thrift测试server与client

  • 首先编写 thrift_ gen.thnift thrift 配置文件
  • 运行IDL生成命令,生成对应语言 server/client 结构体
    ’thrift --gen go thrift_gen.thrift`
  • 使用生成的IDL单独构建 server 与 client 即可

首先编写 thrift_ gen.thnift thrift 配置文件

pratise/proxy/thrift_server_client/thrift_ gen.thnift

namespace go thrift_gen

struct Data {
    1: string text
}

service format_data {
    Data do_format(1:Data data),
}

进入目录 pratise/proxy/thrift_server_client 执行 模板代码生成命令 thrift --gen go thrift_gen.thrift

/d/Dev/env/thrift014/thrift014.exe --gen go thrift_gen.thnift

然后就会生成目录: pratise/proxy/thrift_server_client/gen-go

注意

thrift 命令版本,与golang 项目安装版本需要保持一致。
否则生成代码可能报错

查看版本方法

$ /d/Dev/env/thrift014/thrift011.exe --version
Thrift version 0.14.2

使用生成的 IDL单独构建 server 与 client

客户端代码:pratise/proxy/thrift_server_client/thriftclient_main/main.go
服务端代码:pratise/proxy/thrift_server_client/thriftserver_main/main.go

测试 server 与 client

启动 服务端代码:pratise/proxy/thrift_server_client/thriftserver_main/main.go
启动 客户端代码:pratise/proxy/thrift_server_client/thriftclient_main/main.go

出现安装 thrift 0.11.0 版本失败问题

处理方法:自己把 thrift 0.11.0 版本代码下载下来。自己发布一个 go module

测试

# 启动服务器
go run thriftserver_v1/main.go


# 启动 客户端
go run thriftclient_v1/main.go

拷贝:D:\Dev\env\golang\bin\pkg\mod\git.apache.org\thrift.git@v0.14.2\tutorial\go\src

main true 运行 服务端
接下来,打开另一个terminal,把main函数里的server那里按上一节说的改成false,再运行,就是客户端了。

Administrator@DESKTOP-U15QB8I MINGW64 /d/Dev/workplace/golang/gateway_v1/pratise/proxy/thrift_server_client/thrift_v1 (master)
$ go run main.go server.go client.go handler.go
handler.go:25:2: package shared is not in GOROOT (D:\Dev\env\golang\src\shared)
server.go:26:2: package tutorial is not in GOROOT (D:\Dev\env\golang\src\tutorial)
1人推荐
随时随地看视频
慕课网APP