学习 thrift 内容!
文章目录- 前言
- 一、简介
- 二、代码实现
- 1、先定义接口
- 2、通过接口实现匹配服务的服务器端
- 3. 实现匹配服务的客户端
thrift 又叫做 rpc 框架,即远程函数调用。微服务的概念
为什么?:当我们写一个应用的时候并不只有一个服务,可能会有多个服务,不同的服务运行在不同的服务器上,不同的服务器间通信用 thrift 通信。
例如:
其中每一个节点是每一个进程,不同的进程可以用不同的语言来实现
游戏客户端:玩家登录后,调用匹配系统的 add_usr 函数将玩家的信息传给匹配系统,remove_user 实现当玩家退出之后从匹配系统中删除玩家信息。
匹配系统:接受玩家,删除玩家,将分数相近的玩家匹配在一起,然后安排一场游戏,然后将匹配结果发给数据存储服务器
数据存储服务器:存储系统匹配的结果
thrift 的作用:某一服务器想调用另一个服务器的函数时可以用 thrift 实现
步骤:
- 定义接口(定义 thrift 文件):根据对应的接口实现对应的请求操作即可
- 作为服务器端(提供函数的进程):需要自己生成一个 server
- 作为请求端(请求某个函数):需要写一个 client
match_client:match 服务的 client 端,可以调用匹配服务的函数
match_server:match 服务的 server 端,可以让 client 端调用自身函数
save_client:save 服务的 client 端,存储数据
用不同的文件夹表示不同的节点,thrift 文件夹存储所有的接口
thrift 文件夹用于定义各种接口,创建 mathch.thrift 文件
namespace cpp match_service:命名空间防止变量名重复
定义数据类型:i32:int 类型,string:字符串类型
定义函数:函数用 service 表示,servoce 后面紧跟着的是 service 的名字,service 中需要定义两个函数,一个添加用户信息,另一个是移除用户信息,info 表示额外信息。
定义好接口之后,可以直接通过接口直接生成节点,具体的业务代码需要自己实现。
2、通过接口实现匹配服务的服务器端文件名为:match_system
有了接口之后,通过 thrift -r --gen cpp 接口路径 这个命令直接生成 C++ 版本的服务器端(节点),如下图所示
C++ 的编译:编译和链接两步
- gcc -c 要编译的文件(只需编译 cpp 文件,无需编译 .h 文件),将需要编译的文件全部放到 gcc -c 后面即可
- 编译完成后生成 .o 文件,有多少个 .c 文件就生成多少个 .o 文件
- gcc .o文件 -o main -lthrift
服务端代码编写完成后,开始运行
文件名为:game
用 python 成功调用了另一个进程的 c++ 的函数



