保护私人版权,尊重他人版权。转载请注明出处并附带页面链接
Thrift是什么
Thrift 最初由Facebook开发,而后捐献给Apache,目前已广泛应用于业界。Thrift 正如其官方主页介绍的,“是一种可扩展、跨语言的服务开发框架”。简而言之,它主要用于各个服务之间的RPC通信,其服务端和客户端可以用不同的语言来开发。只需要依照IDL(Interface Description Language)定义一次接口,Thrift工具就能自动生成 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml等语言的代码。
性能方面gRPC和Thrift的对比网上已经有很多了,总体上来说Thrift性能要优于gRPC,但是gRPC在设计上更为规范,基于HTTP/2标准设计,带来诸如双向流控、头部压缩、单TCP连接上的多复用请求等特性。
安装
Mac:brew install thrift
IDL教程
http://diwakergupta.github.io/thrift-missing-guide
结合到Lumen中使用
服务端
定义服务
vi thrift/server/education.thrift
1 | namespace php App.Library.Thrift.Server |
生成代码
1 | thrift --gen php:server -out ./ education.thrift |
执行该命令会在当前目录生成thrift的代码,然后把这些代码拷贝到定义的命名空间下
安装依赖
1 | composer require apache/thrift |
这里扩展包的版本要跟你系统安装的thrift版本一致
实现Server端接口
1 | vi app/Library/Rpc/Server.php |
1 |
|
启动
vi app/Console/Commands/Thrift/RpcStart.php
1 |
|
客户端
安装依赖
1 | composer require apache/thrift |
生成代码
需要用到服务端的thrift文件
1 | thrift --gen php -out ./ education.thrift |
和服务端一样把生成的代码拷贝到相应的命名空间
Client端调用接口方法
1 |
|