google开源RPC框架gRPC:安装

来源:互联网 发布:vb round函数 编辑:程序博客网 时间:2024/06/07 00:11

gRPC是一个有google最先开发的RPC(Remote Procedure Call:远程过程调用)框架,并在15年初开源。是一个比较新的东西,因为工作需要进行了一些研究,这里做一个记录。

RPC的一些内容

RPC 的全称是 Remote Procedure Call 是一种进程间通信方式。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的,本质上编写的调用代码基本相同。

RPC的实现基本包括5个部分:

1. User
2. User-stub
3. RPCRuntime
4. Server-stub

5. Server

stub组件实现向上与User?server的交互以及向下和RPCRuntime的交互:User通过User-stub发出调用方法的请求,提供相关参数,请求的目标server,User-stub调用RPCRuntime将请求编码处理,发送到Server端,有Server-Stub解析请求,将方法名和参数传递给Server,Server再讲结果又同样的途径返回给User。

gRPC介绍

a language-neutral, platform-neutral, open source, remote procedure call (RPC) system initially developed at Google.这是gRPC官网上的一个描述,说明了它的特点:语言无关、平台无关。

语言无关性:1、gRPC支持java、c++、Python在内的十余种主要的编程语言的开发,可以自由选择适合自己的语言;2、gRPC支持不同语言之间的相互调用:user端和server端可以使用不同的语言开发,只须协调好消息的格式。

平台无关:gRPC支持现主要的平台:windows、Unix/linux、Mac。
另外还有一个重要的部分:IDL(Interface Definition Language:接口定义语言),使用这种语言来定义客户端和服务器端的通信协议,然后调用protobuf(这是google开发的一个用于结构化数据序列化的工具)编译器,自动生成相关的stub部分的代码框架,这可以大大减少使用者的工作量,使用者只需要扩展生成的接口,加入自己的业务逻辑即可,而底层的通信、数据处理的细节则有gRPC来处理。
如下面一段IDL代码:
message HelloRequest {  string greeting = 1;}message HelloResponse {  string reply = 1;}service HelloService {  rpc SayHello(HelloRequest) returns  (HelloResponse);}
通过protobuf编译器,可以生成对应的Java、C++、Python的源文件,用各种语言定义一个实现业务逻辑的HelloService类,定义消息格式的HelloRequest、HelloResponse类,HelloService类中定义一个SayHello方法,有一个HelloRequest对象参数,返回一个HelloResponse对象。另外两个类则提供了消息数据的各种读写和序列化操作,使用者只需要扩展HelloService类,添加自己的业务逻辑。
gRPC的架构简图:

gRPC的安装

这里主要介绍在Linux上的安装。
因为grpc要依赖于protobuf,所以还需要安装protobuf。protobuf和gRPC都是开源项目,源码托管在github上,我这里是通过使用编译源码的方式进行安装。
安装protobuf:
先使用git命令获取到protobuf的源码,里面有一个人INSTALL.txt文件,里面说明了安装的流程,
这里说明几个地方:
1、首先运行autogen.sh时,会从google code下载protobuf依赖的一个组件gTest,这是一个C++的单元测试包,有时候会因为网络原因失败,可以手动到google code上下载gtest-1.7的zip包,然后放在同一层目录下,然后编辑autogen.sh文件,注释掉其中的下载gtest的语句
curl -O https://googlemock.googlecode.com/files/gmock-1.7.0.zip
2、安装可以设定protobuf的安装路径,在config的命令中增加选项即可。但自定义了安装路径的,需要设置一些环境变量,以保证protobuf提供的组件可以被gRPC使用,这里要设置一个LIBRARY_PATH,将protobuf安装目录下lib目录的路径附加在LIBRARY_PATH后,也可以在/etc/ld.so.conf文件,在后面附加上protobuf安装目录下lib目录的路径,然后执行一个ldconfig命令,使修改生效。
安装gRPC:
和安装protobuf类似,依照INSTALL中的步骤即可。安装最后一步make install后,如果提示:Your system is ready类似的消息,说明安装成功,也可能会说没有protobuf,这就是因为前面protobuf安装后没有设置好路径。

参考文献

RPC的内容:http://blog.csdn.net/mindfloating/article/details/39473807
gRPC官网:http://blog.csdn.net/mindfloating/article/details/39473807
protobuf官网:https://developers.google.com/protocol-buffers/
0 0
原创粉丝点击