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-stub5. 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.zip2、安装可以设定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/39473807gRPC官网:http://blog.csdn.net/mindfloating/article/details/39473807protobuf官网:https://developers.google.com/protocol-buffers/
0 0
- google开源RPC框架gRPC:安装
- Google 开源 RPC 框架 gRPC 初探
- google的RPC框架:grpc 介绍
- rpc框架--grpc-java
- Google高性能RPC框架gRPC 1.0.0发布
- Google高性能RPC框架gRPC 1.0.0发布
- 开源RPC(gRPC/Thrift)框架性能评测
- gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架
- rpc框架之gRPC 学习 - hello world
- 基于HTTP/2和protobuf的RPC框架GRPC
- thrift,gRPC,rpcx,motan,dubbox等rpc框架对比
- 通过实例带你学习RPC框架gRPC
- 通过 实例带你学习RPC框架gRPC
- Google gRPC
- Python RPC 之 gRPC
- 初识google多语言通信框架gRPC系列(二)编译gRPC
- grpc安装
- 谷歌发布的首款基于HTTP/2和protobuf的RPC框架:GRPC
- MyBatis数据持久化(九)动态sql
- Consuming WebAPI Using jQuery
- 进程 线程的区别
- IOS 跨级页面返回
- Python学习 - 输入和输出
- google开源RPC框架gRPC:安装
- IDL vector filed plot
- CS与BS的区别
- Jquery Cross-Domain ajax call using JSONP
- lighttpd状态机
- spark:SparkSQL练习--51
- jsonp jquery jersey 实现跨域访问
- Android 布局优化(简洁版)
- spring MVC 中获取request