RPC框架-Thrift的使用

释放双眼,带上耳机,听听看~!

Apache Thrift

Thrift 是一种接口描述语言,通过二进制通信协议为多种编程语言定义和创建服务。Thrift是一种可扩展的跨语言服务的RPC框架,由Facebook开发并且开源。

应用

安装

MAC

brew install thrift

其他安装方式

下载安装包:http://www.apache.org/dyn/closer.cgi?path=/thrift/0.9.3/thrift-0.9.3.tar.gz

解压后进入目录执行:./configure && make

编写IDL文件

安装好Thrift之后需要创建一个.thrift结尾的文件。该文件定义了thrift中的类型和服务。这些被定义的服务将被实现且能够被客户端调用。

IDL即:Interface definition language 接口描述语言,它是Thrift自己的一套接口定义语法。官方语法定义如下:

根据语法,编写简单的IDL文件如下:

文件名: exampleService.thrift

接口定义如下:

接口定义完成之后生成响应语言的代码,执行:thrift -r -gen php:server -v -strict -out /path/to/code/ /path/to/exampleService.thrift

服务实现

服务定义好之后,需要实现服务,实现服务的文件名称:PhpService.php,内容如下:

详细的代码请查看:thrift_example_code

启动服务

在nginx配置中添加如下配置,监听服务:

其中的fastcgi_param参数的值是PhpService.php文件的绝对路径.

执行nginx -s reload重启nginx。

客户端代码

客户端文件名:PhpClient.php,内容如下:

详细的代码请查看:thrift_example_code

执行客户端

执行客户端代码,请求服务。

在PhpStorm中执行PhpClient.php文件,会自动打开默认浏览器,通过浏览器执行POST请求,将请求发送到nginx。

打印输出如下:

可以看到返回的数据结构和我们的thrift文件中定义的数据结构是一模一样的。

远程部署与访问

上面的服务端代码和客户端代码可以部署到不通的主机上,实现远程调用。而且,客户端代码可以有多种实现方式,比如JAVA,Python等。

问题

  • 多个客户端如何保证服务端解析代码的一致性呢?
  • 服务端代码和客户端代码该如何在应用中管理呢?

等等一致性问题都可以通过composer来管理。

给TA打赏
共{{data.count}}人
人已打赏
安全经验

Google Adsense(Google网站联盟)广告申请指南

2021-10-11 16:36:11

安全经验

安全咨询服务

2022-1-12 14:11:49

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索