实践常见的RPC框架:Thrift
文章目录
一、Thrift介绍
维基百科上对Thrift的介绍如下:
Thrift是一种接口描述语言和二进制通讯协议,[1]它被用来定义和创建跨语言的服务。[2]它被当作一个远程过程调用(RPC)框架来使用,是由Facebook为“大规模跨语言服务开发”而开发的。它通过一个代码生成引擎联合了一个软件栈,来创建不同程度的、无缝的跨平台高效服务,可以使用C#、C++(基于POSIX兼容系统[3])、Cappuccino、[4]Cocoa、Delphi、Erlang、Go、Haskell、Java、Node.js、OCaml、Perl、PHP、Python、Ruby和Smalltalk。[5]虽然它以前是由Facebook开发的,但它现在是Apache软件基金会的开源项目了。该实现被描述在2007年4月的一篇由Facebook发表的技术论文中,该论文现由Apache掌管。[6]
需要安装thrift编译器,将Thrift的接口定义文件编译成对应的技术栈的代码。
二、Thrift使用示例
参考:
2.1 安装Thrift编译器
macbook下:
brew install thrift
可以在IDEA中添加Thrift support插件。
2.2 编写Thrift的IDL文件
参考官方的IDL文件示例:https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=test/ThriftTest.thrift;hb=HEAD
myrpc.thrift
内容如下:
namespace java com.hef.demo.thrift.api
struct User {
1: i32 id,
2: string name
}
service UserService {
User findUser(1 : i32 id)
}
struct Order {
1: i32 id,
2: string name,
3: double amount
}
service O