thrift 安装及入门

简介: thrift 安装及入门

前言


程序开发的模式一般为前后端分离和微服务模式,前端(如nodejs)对数据处理后传递到后端,微服务模式下多个模块之间需要进行数据的交互。而数据交互有主要有两种方式,一种是通过 HTTP REST 的方式,还有一种就是 RPC 的方式,Thrift 就是属于 rpc 通信的一种方式。


  • REST 是在 HTTP 基础上建立的数据交互,数据一般采用 JSON 格式
  • Thrift 是在 Socket 基础上进行数据交互,数据传输方式灵活,可以通过二进制的方式传递,同时提供序列化和反序列化,也可以采用 JSON 格式


安装


本文环境为 Ubuntu20.04,其他操作系统可以查看官网:thrift.apache.org/


# 安装相关依赖
sudo apt-get install automake bison flex g++ git libboost-all-dev libevent-dev libssl-dev libtool make pkg-config
# 本文服务端为cpp,客户端为python,故需安装相应包
sudo apt install g++
sudo apt install python3
sudo apt install python-all python-all-dev python-all-dbg
# 下载thrift
wget https://dlcdn.apache.org/thrift/0.16.0/thrift-0.16.0.tar.gz
# 解压
tar -xf thrift-0.16.0.tar.gz
# 进入该目录执行,等待
cd thrift-0.16.0/
./configure
sudo make
sudo make install
# 测试是否安装成功
thrift -version
复制代码

入门


  • 编写测试接口,类似 cpp 的 struct,文件名为 test.thrift,定义了 User 以及两个方法:


namespace cpp match_service
struct User {
  1: i32 id,
  2: string name,
  3: i32 score
}
service Match {
  i32 add_user(1: User user, 2: string info),
  i32 remove_user(1: User user, 2: string info),
}
复制代码
  • 然后通过接口生成 cpp 代码:


# cpp 可以改为其他编程语言
thrift -r --gen cpp test.thrift
# 生成的代码都在 gen-cpp 目录下
复制代码
  • 修改,启动服务端


cd gen-cpp
# 修改文件名为main
mv Match_server.skeleton.cpp main.cpp
# 在main函数中添加一个输出用于测试
vim main.cpp
# 编译,连接,运行
g++ -c *.cpp
g++ *.o -o main -lthrift
./main
复制代码


image.png


  • 明天基于此服务端更新一个匹配系统的实战😎


报错解决


cpp 找不到动态链接库:


sudo vim /etc/ld.so.conf
# 在行末添加 /usr/local/lib
# 使修改生效
sudo /sbin/ldconfig
复制代码

python 找不到 thrift 模块:


sudo apt install python3-pip
sudo pip install thrift


目录
相关文章
|
存储 缓存 NoSQL
Leveldb学习笔记:leveldb的使用与原理探究
Leveldb学习笔记:leveldb的使用与原理探究
Leveldb学习笔记:leveldb的使用与原理探究
|
前端开发 网络协议 Dubbo
超详细Netty入门,看这篇就够了!
本文主要讲述Netty框架的一些特性以及重要组件,希望看完之后能对Netty框架有一个比较直观的感受,希望能帮助读者快速入门Netty,减少一些弯路。
93052 32
超详细Netty入门,看这篇就够了!
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
261488 0
|
Linux Docker 容器
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
本篇博客重在讲解Centos安装docker,经博主多次在不同服务器上测试,极其的稳定,尤其是阿里的服务器,一路复制命令畅通无阻。
21113 5
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
|
数据采集 缓存 监控
优化 Grafana 性能:技巧与窍门
【8月更文第29天】Grafana 是一个非常受欢迎的开源数据可视化平台,它能够连接到各种数据源并提供高度定制化的仪表板。然而,随着数据量的增长和复杂查询的增多,Grafana 的性能可能会受到影响。本文将探讨如何优化 Grafana 的性能,以提高其响应速度和稳定性,并通过具体的代码示例来展示这些技巧。
1645 1
|
数据处理 UED 开发者
Python并发编程之协程与多线程对比分析
本文将从Python并发编程的角度出发,对比分析协程与多线程两种并发处理方式的优缺点及适用场景,帮助读者更好地选择适合自己项目的并发方案。
|
Ubuntu 安全 虚拟化
vmware虚拟机运行ubuntu等卡慢的解决办法
vmware虚拟机运行ubuntu等卡慢的解决办法
4246 0
|
Ubuntu C++ Python
Ubuntu 安装 Thrift 以及常见问题
本文演示ubuntu20.04下安装Thrift并配置CPP和Python3的使用环境
2101 1
Ubuntu 安装 Thrift 以及常见问题
|
搜索推荐 Java Maven
maven项目(引入依赖失败, pom.xml 报错\爆红)
maven项目(引入依赖失败, pom.xml 报错\爆红)
5425 0
|
Java Maven
Mac安装Maven(图文解说详细版)
Mac安装Maven(图文解说详细版)
Mac安装Maven(图文解说详细版)